1. 개요
하나의 Tomcat 엔진에 여러 인스턴스를 띄우고자 하는 경우가 있습니다. 그에 대한 설명입니다.
우선 Tomcat 환경 변수 중에는 ${CATALINE_BASE} 와 ${CATALINA_HOME} 이라는 환경 변수가 있습니다. 만일, 하나의 Tomcat 엔진에 하나의 인스턴스만 띄운다면 두 환경 변수의 값은 동일합니다. 그러나 여러 인스턴스를 띄우고자 한다면 두 환경 변수의 값은 달라져야 하고, 디렉토리 구성 또한 달라져야 합니다.
2. 디렉토리 구성
2-1. ${CATALINA_HOME}
엔진 레벨의 디렉토리 및 파일입니다. Tomcat 배포 파일을 푼 채 유지를 합니다. 사실은 다음 두 디렉토리만 사용 됩니다.
- bin
- lib
2-2. ${CATALINA_BASE}
인스턴스 레벨의 디렉토리 및 파일입니다.
- bin : 원래 bin 하위 파일 중 *.sh (or *.bat) 파일을 위치시킵니다.
- logs : 로그 디렉토리
- conf : 설정 디렉토리
- temp
- work
3. setenv.sh
단, ${CATALINA_BASE}/bin/startup.sh, ${CATALINA_BASE}/bin/shutdown.sh 를 바로 사용하지 않고 별도의 start.sh, stop.sh 를 만들어 사용하는 경우는 ${CATALINA_BASE}/bin 에 인스턴스 특화된 setEnv.sh 파일만 있으면 됩니다.
그리고 중요한 것은, Tomcat 기동 시에 ${CATALINA_HOME} 과 ${CATALINA_BASE} 를 환경 변수에 넣어줘야 한다는 것입니다. 공통 환경 파일이나 start.sh, stop.sh 에 넣어주시면 됩니다. 제가 사용하고 있는 공통 환경 파일을 보여드립니다.
< setEnv.sh >
#!/bin/bash export JAVA_HOME=/usr/java export INST_NAME=node1 CATALINA_HOME=/home/tomcat/7.0.53 CATALINA_BASE=/home/tomcat/7.0.53/servers/${INST_NAME} export CATALINA_HOME CATALINA_BASE
그리고 start.sh, stop.sh 시작 부분에 setEnv.sh 으로 먼저 환경 잡아주시면 됩니다.
Tomcat 을 다운로드 받아서 풀면 다음과 같은 구조로 되어 있습니다.
drwxr-xr-x@ 2 appsroot staff 68 5 20 04:27 work drwxr-xr-x@ 2 appsroot staff 68 5 20 04:27 logs drwxr-xr-x@ 23 appsroot staff 782 5 20 04:33 lib drwxr-xr-x@ 7 appsroot staff 238 5 20 04:33 webapps drwxr-xr-x@ 3 appsroot staff 102 5 20 04:33 temp drwxr-xr-x@ 9 appsroot staff 306 5 20 04:35 conf -rw-r--r--@ 1 appsroot staff 16204 5 20 04:35 RUNNING.txt -rw-r--r--@ 1 appsroot staff 8974 5 20 04:35 RELEASE-NOTES -rw-r--r--@ 1 appsroot staff 1192 5 20 04:35 NOTICE -rw-r--r--@ 1 appsroot staff 56812 5 20 04:35 LICENSE
다중 인스턴스 구성을 용이하게 하기 위하여 template 디렉토리를 생성한 후, 그 안에 각 인스턴스 독립적으로 유지할 디렉토리 구조를 만들고 또 옮깁니다.
$ mkdir template $ $ mv work logs temp conf webapps template