로컬 환경에서 설치

설치 순서

로컬 환경에서 AnyEIMS 설치는 다음과 같은 과정으로 진행됩니다.

설치 파일 준비

AnyEIMS 설치에 필요한 파일을 준비합니다.

본 안내서에서 설명하는 설치 파일은 기본적으로 제공되는 파일입니다.

|-- libs
    |-- ojdbc8-12.2.0.1.jar  ....(1)
    |-- AnyEIMS-stream-wrapper-<버전>.jar  ....(2)
    |-- AnyEIMS-export-model-<버전>.jar  ....(3)
    |-- AnyEIMS-custom-notification-<버전>.jar  ....(4)
    |-- AnyEIMS-custom-action-<버전>.jar  ....(5)
    |-- AnyEIMS-custom-deployment-notification-<버전>.jar  ....(6)
    |-- AnyEIMS-encrypt-<버전>.jar  ....(7)
    |-- AnyEIMS-adapter-lib-<버전>.jar  ....(8)
|-- nginx-conf
    |-- nginx.conf  ....(9)
|-- properties
    |-- application-extensions.yml  ....(10)
|-- oracle
    |-- create.sql  ....(11)
    |-- insert.sql  ....(12)
|-- anyeims_front-<버전>.zip  ....(13)
    |-- favicon.ico
    |-- index.html
    +-- assets
|-- anyeims-backend.<버전>.zip  ....(14)
    |-- anyeims-backend.jar
  • 백엔드 서버용 파일

    파일 설명

    (1) ojdbc8-12.2.0.1.jar

    데이터베이스에서 사용할 JDBC 드라이버 파일입니다.

    (2) AnyEIMS-stream-wrapper-<버전>.jar

    InputStream, OutputStream 조작을 위한 인터페이스를 제공하는 파일입니다.

    (3) AnyEIMS-export-model-<버전>.jar

    어댑터 및 사용자 정의 기능에 사용되는 모델 객체를 정의한 파일입니다.

    (4) AnyEIMS-custom-notification-<버전>.jar

    결재 관련 사용자 정의 알림 기능 추가를 위한 파일입니다.

    (5) AnyEIMS-custom-action-<버전>.jar

    VO 다운로드 및 사용자 정의 기능 추가를 위한 파일입니다.

    (6) AnyEIMS-custom-deployment-notification-<버전>.jar

    배포 관련 사용자 정의 알림 기능 추가를 위한 파일입니다.

    (7) AnyEIMS-encrypt-<버전>.jar

    YAML 값 암호화 입력 기능 추가를 위한 파일입니다.

    (8) AnyEIMS-adapter-lib-<버전>.jar

    어댑터 기능을 수행하는 파일입니다.

    (10) application-extensions.yml

    백엔드 바이너리의 확장 속성을 정의한 파일입니다.

    (14) anyeims-backend.<버전>.zip

    백엔드 바이너리 파일을 포함한 ZIP 파일입니다.

  • 프론트엔드 서버용 파일

    파일 설명

    (9) nginx.conf

    Nginx 설정을 변경할 수 있는 파일입니다.

    (13) anyeims_front-<버전>.zip

    프론트엔드 파일입니다.

  • 데이터베이스 서버용 파일

    파일 설명

    (11) create.sql

    AnyEIMS에서 사용될 테이블을 생성하는 SQL 파일입니다.

    (12) insert.sql

    AnyEIMS에서 기본적으로 사용될 값을 넣는 SQL 파일입니다.

설치 파일 구성

준비한 설치 파일을 각 서버에 다음과 같이 구성합니다.

  • 백엔드 서버

    /home/eims/
    |-- applications
        |-- anyeims-backend.jar
    |-- libs
        |-- ojdbc8-12.2.0.1.jar
        |-- AnyEIMS-stream-wrapper.jar
        |-- AnyEIMS-export-model.jar
        |-- AnyEIMS-custom-notification.jar
        |-- AnyEIMS-custom-action.jar
        |-- AnyEIMS-custom-deployment-notification.jar
        |-- AnyEIMS-encrypt.jar
        |-- AnyEIMS-adapter-lib.jar
    +-- local-storage
    |-- properties
        |-- application-extensions.yml
  • 프론트엔드 서버

    /home/eims/
    |-- nginx
        |-- html
            |-- anyeims_front-<버전>.zip
        |-- conf.d
            |-- nginx.conf

application-extensions.yml 파일 설정

application-extensions.yml 파일 설정을 통해 백엔드 바이너리의 확장 속성을 정의할 수 있습니다. 만약 최초 실행 시 미리 값을 설정하려면 sample:inittrue로 설정하고, 데이터를 입력합니다. 그 이후에는 false로 설정 변경이 필요합니다.

sample:
  init: false  # UI나 API로 설정할 수 없는 값을 넣으려면 true로 변경


spring:
  datasource:
    driver-class-name: oracle.jdbc.driver.OracleDriver
    url: jdbc:oracle:thin:@<DB의 IP 주소>:<포트 번호>/<DB 이름>
    username: <DB 사용자 이름>
    password: <DB 사용자 비밀번호>
  jpa:
    defer-datasource-initialization: true
    show-sql: true
    database-platform: org.hibernate.dialect.Oracle12cDialect
    hibernate:
      ddl-auto: none
  redis:
    host: localhost
    port: 6379

# 로그 설정
logging:
  file:
    name: /home/eims/log/eims.log  # 로그 파일의 이름 및 경로
    max-size: 500MB
    max-history: 10
  level:
    org : info

DB와 Redis의 비밀번호는 기본적으로 평문으로 저장됩니다. 보안을 위해 AES256 방식으로 암호화할 수 있습니다.

암호화 적용 절차는 다음과 같습니다.

  1. AnyEIMS 설치 파일에 포함된 AnyEIMS-encrypt.jar 파일을 libs 폴더에 넣습니다.

  2. aes-key.bin 파일을 생성하여 아래와 같이 비밀 키를 설정하고, 원하는 위치에 배치합니다.

    rUj4irjV3WD9JYokcTQ/ag==12312311
  3. application-extensions.yml 파일의 "password:" 부분을 https://anycript.com/crypto에서 암호화한 값으로 변경하고, 아래 내용을 추가합니다.

    ## 암호화 적용 값
    spring:
      datasource:
        password: iRtb0kwvxdWy1w7bPQ+r1g==
      redis:
        password: "3KbQuLF9uSH8cCKe8xOg6Q=="
    
    ## AnyEIMS-encrypt.jar 및 aes-keys.bin 파일 적용
    eims:
      encrypted-properties: spring.redis.password,spring.datasource.password
      encryption:
        decrypt:
          ## 파일이 위치한 절대 경로 입력
          key: "/home/eims/properties/aes-keys.bin"
          class-name: com.tmax.anyeims.encryption.sample.AES256Decrypt

nginx.conf 파일 설정

nginx.conf 파일 설정을 통해 Nginx의 속성을 정의할 수 있습니다.

server {
    listen  80;  # 프론트 포트 설정 가능
    client_max_body_size 20M;

    location /v1 {
        proxy_pass  http://<백엔드 접근 IP 주소>:<백엔드 접근 포트 번호>;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location / {
        root   /var/www/html;  # 연결할 Root 경로
        index  index.html index.htm;
        try_files $uri $uri/ /index.html;
    }

    error_page 500 502 503 504 /50x.html;
}

데이터베이스 설정

데이터베이스 서버에서 AnyEIMS이 사용할 데이터베이스를 설정하는 SQL문을 실행합니다.

이때 데이터베이스의 아이디, 비밀번호는 application-extension.yml 파일에 작성되어 있는 값과 일치해야 합니다.

  • AnyEIMS에서 사용될 테이블을 생성하는 SQL

    $ create.sql
  • AnyEIMS에서 기본적으로 사용될 값을 넣는 SQL

    $ insert.sql

환경 변수 설정

백엔드 서버에서 터미널 실행 후 환경 변수를 통해 Redis 접근 정보를 설정합니다.

ANYEIMS_REDIS_HOST: <Redis에 접근 가능한 호스트명 또는 IP 주소>
ANYEIMS_REDIS_PORT: <Redis 접근 포트 번호>

Redis 접근 정보는 application-extensions.yml 파일에서도 설정이 가능합니다.

바이너리 실행

백엔드 서버

백엔드 서버에서 아래의 명령을 실행합니다.

  • 사용법

    $ java -Dspring.profiles.active=${ANYEIMS_SPRING_PROFILE:prod} -Dspring.config.import=file:<application-extensions.yml 파일 위치>/application-extensions.yml -cp
    <anyeims-backend.jar 파일 위치>/anyeims-backend.jar:<ojdbc 파일 위치>/* org.springframework.boot.loader.JarLauncher --server.port=<설정할 백엔드 포트>
  • 예시

    $ java -Dspring.profiles.active=${ANYEIMS_SPRING_PROFILE:prod} -Dspring.config.import=file:/home/eims/properties/application-extensions.yml -cp
    /home/eims/applications/anyeims-backend.jar:/home/eims/libs/* org.springframework.boot.loader.JarLauncher --server.port=8081

프론트엔드 서버

프론트엔드 서버에서 anyeims_front-<버전>.zip 파일을 /var/www/html 하위에 압축 해제합니다. 압축 해제 후 ls 명령을 실행하여 아래와 같은 결과가 나오는지 확인합니다.

$ ls /var/www/html
assets favicon.ico index.html

또한 /etc/nginx/ngin.conf 파일 설정을 통해 /home/eims/nginx/conf.d 디렉터리를 참조하도록 설정해야 합니다.

...

http {

    ...

    include /home/eims/nginx/conf.d/*.conf; # 참조할 위치 설정
}

설정이 완료되면 Nginx를 실행합니다.

$ nginx -g "daemon off;"