본문 바로가기
Server

톰캣 다중 설정

by 동기 2022. 8. 31.
반응형

톰캣 서비스 운영

톰캣을 이용하여 웹앱을 서비스 하는 방법에는

하나의 톰캣에 여러 서비스를 운영하는 방법여러개의 톰캣 인스턴스로 여러 서비스를 운영하는 방법이 있습니다.

하나의 톰캣에 여러 서비스를 하는 경우(포트를 여러개 설정하거나, 같은 포트에 여러 ContextPath 설정 또는 도메인 설정) 해당 톰캣이 내려가면 모든 서비스가 중단되는 단점이 있습니다.

 

여러개의 톰캣 인스턴스를 두고 개별적으로 포트를 다르게 주어 운영하는 방법을 알아보겠습니다.

*이 방법은 최종적으로는 웹서버에서 프록시 설정을 해주어야 합니다 

톰캣을 구성하는 디렉토리 구조

디렉토리명 설명 톰캣엔진 사용 인스턴스 사용
bin 톰캣 실행시 사용하는 스크립트 디렉토리톰캣 실행시 사용하는 스크립트 디렉토리  
conf 웹 어플리케이션에 필요한 설정 파일 디렉토리  
lib 톰캣에서 사용하는 라이브러리 디렉토리  
logs 로그 디렉토리  
temp 임시 파일 디렉토리  
webapps 웹 어플리케이션 배포 디렉토리 기본으로 docs, examples, host-manager, manager가 존재한다.  
work JSP가 Servlet 컴파일되는 디렉토리  

 

[톰캣엔진 사용]으로 표시된 디렉토리는 톰캣엔진이 실제 구동될 때 사용하는 디렉토리를 의미하며,

[인스턴스 사용]으로 표시된 디렉토리는 웹 어플리케이션에서 웹서비스를 위해 사용하는 디렉토리들을 의미합니다.

이 디렉토리들은 톰캣 환경변수 CATALINA_BASE와도 관련이 있습니다.

 

톰캣 환경변수 정보

환경변수명 설명
CATALINA_HOME 톰캣 설치 홈 디렉토리
CATALINA_BASE 톰캣 구동시 띄워지게 되는 웹서비스 인스턴스의 베이스 디렉토리.
conf, logs, temp, webapps, work 디렉토리를 포함하는 홈 디렉토리를 의미한다.  
CATALINA_TMPDIR 톰캣 인스턴스의 임시 디렉토리
JRE_HOME 자바 런타임 디렉토리
CLASSPATH 클래스패스 경로

 

 

기본 톰캣 내부 구조

다중 서비스를 위한 인스턴스 디렉토리(tomcat_d1 ~ 10 ) 생성

 

tomcat_home 안에 있는 conf logs temp webapps work 디렉토리들을 앞서 생성한 tomcat_d1~d10 디렉토리들에 각각 복사해 주고, tomcat_home 에서는 conf logs temp webapps work 삭제

 

각 디렉토리 내부에는 복사해서 넣어 두었던 conf logs temp webapps work 디렉토리가 있겠죠?

tomcat_d1~10conf 디렉토리 안에는 server.xml 파일이 있는데, 복사해서 붙여넣은것이기 때문에, 같은 포트로 되어있습니다.

 

각 디렉토리의 server.xml 을 열어 Server 포트, HTTP 포트, AJP 포트 를 다르게 설정해 줍시다.

 

tomcat_d1 의 server.xml

 

다른 tomcat_d? 의 server.xml 수정

 

서비스 등록

이제 tomcat_d1~d10 의 서비스를 등록하기 위해 system 폴더로 이동해 줍니다

$cd /etc/systemd/system

 

tomcat_d1 ~ 10.service 서비스파일 작성

$vi tomcat_d1.service

 

아래와 같이 작성하고, 1~10 까지 모두 작성해 줍시다.

Environment 부분의 BASE, PID 만 1~10 별로 다르게 작성해주시면 됩니다.

[Unit]
Description=Apache Tomcat Web Application Container for Devlopment
After=network.target

[Service]
Type=forking

Environment=JAVA_HOME=/usr/lib/jvm/java-8-oracle
Environment=CATALINA_HOME=/opt/dev/tomcat_home
Environment=CATALINA_BASE=/opt/dev/tomcat_d1
Environment=CATALINA_PID=/opt/dev/tomcat_d1/temp/tomcat.pid
Environment='CATALINA_OPTS=-Xms128M -Xmx256M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'

ExecStart=/opt/dev/tomcat_home/bin/startup.sh
ExecStop=/opt/dev/tomcat_home/bin/shutdown.sh

User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target

 

tomcat_home 디렉토리가 CATALINA_HOME이 되고,

tomcat_d1~10 각각이 CATALINA_BASE 가 됩니다. ( PID 도 함께 수정해 주세요)

 

데몬을 리로드 해주면 *.service 파일을 읽어서 등록 합니다.

$sudo systemctl daemon-reload

 

등록이 됐다면, 시스템이 시작될 때 자동으로 시작되도록 설정 해 줍시다.

$sudo systemctl enable tomcat_d1

 

이제 등록한 tomcat 서비스들을 개별적으로 시작, 중단시킬 수 있게 됐습니다!

$service tomcat_d1 [start/status/stop/restart]

 

 

프록시 설정 하기

tomcat 서비스 들이 포트별로 시작이 됐지만,

브라우저에서 접속을 위해서는 포트주소까지 작성을 해야 접근이 가능합니다.

웹서버의 프록시 설정을 통해 도메인으로만 접속할 수 있게 설정해 주어야 합니다

 

아파치2 에서 프록시 설정을 해 주었습니다.

 

이렇게 설정 해주면 [domain]/devsv1 로 접속 할 경우, 내부망인 http://172.30.1.23:8091/devsvr1 로 리디렉션을 해주어 접속이 가능하게 됩니다!

 

반응형

'Server' 카테고리의 다른 글

vmware ESXi  (0) 2022.10.02
CPU 과다 점유 이슈  (0) 2022.09.09
git 글로벌, 로컬 유저 변경하기  (0) 2022.08.07
[Linux] tmux  (0) 2021.11.02
리눅스 명령어  (0) 2021.09.14

댓글