Keviny Blog
Systemd 를 이용한 Tomcat Multi Instances 환경 구성 본문
아래는 내가 tomcat 서비스를 systemd 에 서비스로 등록할 때 참고했던 사이트에서 발췌한 내용인데,
위 내용 중 tomcat.service 를 작성하는 부분에서 multi instance 를 위해 수정을 해야 한다. (tomcat 은 설치되어 있고, tomcat 유저는 생성해두었다고 가정한다)
# Systemd unit file for tomcat [Unit] Description=Apache Tomcat Web Application Container After=syslog.target network.target
[Service] Type=forking Environment="JAVA_HOME=/usr/java/jdk-10.0.1/" Environment="CATALINA_PID=/usr/local/tomcat/temp/tomcat.pid" Environment="CATALINA_HOME=/usr/local/tomcat" Environment="CATALINA_BASE=/usr/local/tomcat" Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC" Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom" ExecStart=/usr/local/tomcat/bin/startup.sh ExecStop=/usr/local/tomcat/bin/shutdown.sh User=tomcat Group=tomcat UMask=0007 RestartSec=10 Restart=always
[Install] |
#ref. https://suwoni-codelab.com/linux/2018/05/21/tomcat-installation/ |
tomcat 의 guide 문서를 보면 CATALINA_BASE 부분이 각 Instance 의 HOME 이 되는 부분이다.
Optionally, Tomcat may be configured for multiple instances by defining $CATALINA_BASE for each instance. If multiple instances are not configured, $CATALINA_BASE is the same as $CATALINA_HOME. |
#ref. https://tomcat.apache.org/tomcat-8.0-doc/introduction.html |
따라서 CATALINA_BASE 를 각 instance 에 해당하는 root 폴더로 지정해주고, [conf, logs, temp, webapp, work] 폴더들을 CATALINA_HOME 에서 복사해준다. 본인 상황에 따라 폴더 path 는 다르겠지만, 아래와 같은 구조면 OK.
전체 디렉터리 구조를 살펴보면 아래와 같습니다. $ tree -L 2 |
#ref. https://madplay.github.io/post/multiple-tomcat-instances |
CATALINA_BASE를 설정했다면 각 환경변수(Environment) 값들도 상황에 맡겨 변경해준다.
나의 경우는 완성된 하나의 Service 의 Unit File 은 아래와 같았다.
# Systemd unit file for mbs_service
[Unit]
Description=SBS MBS Service Tomcat
After=syslog.target network.target
[Service]
Type=forking
Environment="JAVA_HOME=/usr/local/lib64/jdk1.7.0_80"
Environment="CATALINA_PID=/home/tomcat/instances/mbs_service/tomcat.pid"
Environment="CATALINA_HOME=/usr/local/lib/apache-tomcat-8.0.52"
Environment="CATALINA_BASE=/home/tomcat/instances/mbs_service"
ExecStart=/usr/local/lib/apache-tomcat-8.0.52/bin/startup.sh
ExecStop=/usr/local/lib/apache-tomcat-8.0.52/bin/shutdown.sh
User=tomcat
Group=tomcat
UMask=0007
[Install]
WantedBy=multi-user.target
[Service] 섹션의 ...
1. CATALINA_OPTS 및 JAVA_OPTS 는 요구사항이 없어서 삭제
2. Restart 관련 내용은 필요에 의해 서비스 stop 시 오히려 문제를 일으킬 수 있어 삭제
이후 systemctl 로 enable 및 start, stop 등 명령어가 정상 동작 함을 확인하였다.
끝.
'시스템 관리자' 카테고리의 다른 글
CentOS 7 VM 에서 HA Cluster 구성하기 (vSphere Hypervisor) (0) | 2020.01.09 |
---|---|
CentOS7 에서 Systemd로 서비스 등록하기 (+ systemctl vs. service) (0) | 2019.12.04 |