Tomcat 서버를 Engine Instance 분리하여 이용하면 여러가지 잇점이 있다. 우선 톰캣이 필요할때 마다 새로움 톰캣서버를 설치할 필요가  없고 톰켓의 버전관리도 용이해진다.

 

1 Tomcat 주요 디렉토리

§  lib  - Tomcat Engine 사용하는 외부 라이브러리 (.jar) 디렉토리

§  bin - Tomcat 런하는 명령 스크립트 디렉토리

§  conf - Tomcat Web 서비스를 위한 설정 파일 디렉토리

§  logs - 로그 파일 디렉토리

§  temp - Tomcat Engine에서 사용하는 임시 파일 디렉토리

§  webapps  - 어플리케이션 deploy 디렉토리

§  work - JSP 파일이 서블릿으로 컴파일(.class) 디렉토리

 

이중에서  Tomcat Engine  lib, bin 디렉토리만 사용 하게되며 실제 서비스를 담당하는 인스턴스들은 conf, logs, temp, webapps, work 디렉토리를 사용 한다.

 

따라서 Tomcat 엔진을 분리하여 각각의 인스턴스가 필요할때마다 인스턴스만을 분리하여 설치가 가능하며 이때 엔진을 참조  하도록 설정하고 포트가 중복되지 않도록 설정하면 된다.


이를 위하여 필요한 환경 변수는 다음과 같다.

§  CATALINA_HOME - Tomcat Engine 디렉토리

§  CATALINA_BASE - 인스턴스 디렉토리

§  CATALINA_TMPDIR - 인스턴스가 사용하는 임시 디렉토리

§  JAVA_HOME - 자바 디렉토리

§  CLASSPATH - 클래스 패스 설정 정보

 



2 디렉토리구성

여기서 사용하게될 인스턴스는 root 사용할 인스턴스(tomcat-root) 그리고 기타 사용으로 3(tomcat-instance1, tomcat-instance2, tomcat-instance3) 구성할 것이다.

 

2.1 Tomcat 설치 파일 구성

다운로드 받은 톰켓 아카이브를 풀고 소프트링크를 생성하여 편의를 마련한다.

[infra @cosmos apps]# pwd

/opt/apps

[infra@cosmos apps]$ tar zxvf apache-tomcat-8.0.5.tar.gz

 

[root@cosmos opt]# pwd

/opt

[root@cosmos opt]# ln -s /opt/apps/apache-tomcat-8.0.5 tomcat

 

2.2 Root 인스턴스 구성 파일 복사

§  Root 인스턴스를 생성할 디렉토리를 생성한다.

[root@cosmos ~]# mkdir tomcat-root

[root@cosmos ~]# cd tomcat-root/

 

§  Root 인스턴스에서 필요한 파일들을 엔진 디렉토리로 부터 복사한다.

[root@cosmos tomcat-root]# cp -R /opt/tomcat/conf ./conf

[root@cosmos tomcat-root]# cp -R /opt/tomcat/logs ./logs

[root@cosmos tomcat-root]# cp -R /opt/tomcat/temp ./temp

[root@cosmos tomcat-root]# cp -R /opt/tomcat/webapps ./webapps

[root@cosmos tomcat-root]# cp -R /opt/tomcat/work ./work

 

2.3 Instance1 ~ 3 인스턴스 구성 파일 복사

§  인스턴스를 생성할 디렉토리를 생성한다.

[infra@cosmos ~]$ pwd

/home/infra

[infra@cosmos ~]

 

[infra@cosmos ~]$ mkdir tomcat-instance1

[infra@cosmos ~]$ mkdir tomcat-instance2

[infra@cosmos ~]$ mkdir tomcat-instance3

 

 

§  Root 인스턴스에서 필요한 파일들을 엔진 디렉토리로 부터 복사한것과 같이 동일하게 각각의 디렉토리로 복사한다.

 

2.4  필요없는 파일 삭제

톰켓 엔진은 이제 더이상 bin  lib이외에는 필요가 없기때문에 삭제 하도록 한다.

[root@cosmos tomcat]# pwd

/opt/tomcat

 

[root@cosmos tomcat]# rm  -rf  conf/  logs/  temp/  webapps/  work/  LICENSE NOTICE  RELEASE-NOTES  RUNNING.txt

 

 


3 Shell scripts for Startup & Shutdown

우선 디렉토리에서(.bash_profile)에서 

export TOMCAT_SERVER_NAME="tomcat-root"

같이 환경 변수를 잡아주거나, 인스턴스 스크립에 직접 넣어 주도록 한다. 그리고 인스턴스 디렉토리 안에서 시작과 정지를 위한 다음 스크립을 구성한다.

 

§  start.sh

#!/usr/bin/env bash

 

# export TOMCAT_SERVER_NAME="tomcat-root"

CUR_DIR=`pwd`

 

export CATALINA_OPTS="-Denv=product -Denv.servername=${TOMCAT_SERVER_NAME}"

export CATALINA_BASE="${CUR_DIR}"

export CATALINA_TMPDIR="${CUR_DIR}/temp"

export CATALINA_OUT="${CUR_DIR}/logs/catalina.out"

export CATALINA_PID="/var/run/${TOMCAT_SERVER_NAME}.pid"

 

cd $CATALINA_HOME/bin

./startup.sh

 

§  stop.sh

#!/usr/bin/env bash

 

# export TOMCAT_SERVER_NAME="tomcat-root"

CUR_DIR=`pwd`

 

cd $CATALINA_HOME/bin

export CATALINA_BASE="${CUR_DIR}/tomcat-instance"

export CATALINA_TMPDIR="${CUR_DIR}/temp"

export CATALINA_OUT="${CUR_DIR}/logs/catalina.out"

export CATALINA_PID="/var/run/${TOMCAT_SERVER_NAME}.pid"

 

./shutdown.sh

 

 

 

4 Port 재설정

인스턴스들이 사용하는  포트들 간에 충돌이 나지 않도록 조정해줘야한다. 기존 포트 앞에 정수를 순차적으로  붙이면(기본 포트 + 10,000) 간단하겠다.

§  server.xml

<server port="18005" shutdown="SHUTDOWN">

    .....

    <connector

        connectiontimeout="20000" port="18080"

        protocol="org.apache.coyote.http11.Http11NioProtocol"

        redirectport="18443" />

    .....

    <connector port="18109" protocol="AJP/1.3" redirectport="18443" />

    .....

</server>

 

 

 


Posted by Steven J.S Min
,