[작업로그] WCA, WVA 서비스 설치 스크립트 만들기

FEBRUARY 22, 2021

이번에 다른 부서에서 사온 제품 2개에 대한 설치 매뉴얼 검토중에 작업 단순화가 필요하다고 느꼈다.
이에 불필요한 작업 제거 및 설치 단순화를 하여 설치 스크립트를 생성하는 목적으로 이 작업을 진행하여 되었다.
이 작업을 진행하면서 배운 내용이나 기록이 필요한 내용을 정리한다.

■ 1. 수작업 최소화 1.1. Cloud, On-Premise 둘다 OS는 데비안 계열을 사용

  • Ubuntu 18.04 에서 진행

1.2. 두 제품에 대한 리펙토링을 진행하기 전까지 JAVA8, Tomcat8 사용 tomcat major 버전이 fix 이므로 8버전의 latest 파일을 받아 아래 파일들을 수정한다.

  • 1.2.1. context.xml
    — datasource 설정
  • 1.2.2. server.xml
    — 최대 2개의 WAS 서비스를 사용하므로 port 를 동적으로 설정

001 01

  • 1.2.3. catalina.sh
    java system properties 설정
    — http 포트가 8080 일 경우,
     — 8005 -> ${port.shutdown}
     — 8009 -> ${port.ajp}
     — 8443 -> ${port.https} 가 된다.

001 02

■ 2. Service 등록 2.1. 서비스파일 생성

[Unit]
Description=WCA WAS
Requires=mysqld.service
After=network.target mysqld.service

[Service]
Type=forking
Environment=WCA_LIB=/opt/penta/wca-libs
Environment=SERVICE_PORT=8080
Environment=CATALINA_HOME=/opt/tomcat-wca
Environment=JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
Environment=LD_LIBRARY_PATH=/opt/penta/wca-libs:$LD_LIBRARY_PATH

User=autocrypt
Group=autocrypt

ExecStart=/opt/tomcat-wca/bin/startup.sh
ExecStop=/opt/tomcat-wca/bin/shutdown.sh

Restart=always

[Install]
WantedBy=multi-user.target
  • Requires vs After
    https://stackoverflow.com/questions/40593242/systemd-using-both-after-and-requires
  • Environment
    — User를 설정하더라도 bash_profile이나 기타 쉘/유저 기반의 환경 변수는 먹지 않는다.
    — 따라서 해당 프로퍼티를 사용하여 환경 변수를 설정한다.
  • Restart
    — 해당 서비스가 강제 종료되었을 경우 재시작에 대한 정책이다.
    — systemctl 로 종료했을 경우는 작동하지 않는다.
  • WantedBy
    — [install] 은 “systemctl enable [service name]” 으로 서비스 등록 시 이용하는 섹션이다.
    — WantedBy 는 이 서비스가 어떤 전제조건 하에서 실행되는 지를 결정한다.
    — multi-user.target 은 runlevel 3 환경이 모두 구동되었을 때를 의미한다.
    run leval (리눅스시스템의 실행레벨)
     ▶ init 0 : halt, 시스템 종료
     ▶ init 1 : Single user mode, 관리 모드로 root 계정만 사용 가능
     ▶ init 2 : Multiuser, without NFS (The same as 3, if you do not have networking)
     ▶ init 3 : Full multiuser mode, default level
     ▶ init 4 : unused, 사용하지 않는 실행레벨, 커스텀레벨로 사용 가능
     ▶ init 5 : X11, X윈도우 환경으로 실행된 멀티유저 실행모드
     ▶ init 6 : reboot

2.2. 기타 설정 및 서비스 활성화 스크립트 생성

  • 각 Step 별로 블럭지어 실패 시 메시지 출력 및 종료하도록 구성

001 03

  • 서비스 활성화 Step
    — service 파일 활성화 명령어 : $ systemctl enable {service 파일명}
    — daemon reload 명령어 : $ systemctl daemon-reload

001 04


github


작업 기록 블로그