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> |
'DevOps' 카테고리의 다른 글
Git/Github를 이용한 형상관리 (0) | 2014.07.08 |
---|---|
Using Maven for multiple deployment environment (0) | 2014.05.11 |
Basic of JUnit 4 (0) | 2014.04.22 |
Succeeding With Agile (0) | 2014.04.19 |
Tomcat서버를 Root가 아닌 일반사용자로 80포트를 서비스 하는 경우 (0) | 2014.02.28 |