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