1. Tomcat & Java 설치
톰켓 설치에 앞서 http://www.oracle.com/technetwork/java/javase/downloads/index.html 에서 설치파일을 다운로드하여 JAVA 를 설치한다. 문서에서는 JDK 1.7.0.51 버전의 rpm 파일로 설치하였다. 설치된 java 는 /usr/java 에 설치된다.톰켓 설치파일은 http://tomcat.apache.org 에서 최신 프로그램를 다운로드한다. 문서에서는 Tomcat 8.0.3 버전을 사용하였다. 설치는 특별한 것을 요구하지 않으며 압축을 풀는 것으로 기본적은 설치는 완료된다. 문서에서는 /app/tools 경로에 압축을 풀었으며, 편의상 실재 설치된 경로를 /app/tomcat 경로로 심볼릭 링크를 생성하여 /app/tomcat 경로로 접근이 가능하도록했다.
2. 웹 서버 연결을 위한 Tomcat Connectors 설치
Tomcat Connector 설치는 컴파일 작업이 필요하며 소스는 http://tomcat.apache.org 에서 다운로한다. 컴파일을 진행하려면 Apr 라이브러리가 필요하며 문서에서는 httpd-devel 패키지를 설치하여 사용하였다. httpd-devel 는 yum 을 사용하여 설치하였다.# yum install httpd-devel Loaded plugins: fastestmirror Determining fastest mirrors * base: centos.mirror.cdnetworks.com * extras: centos.mirror.cdnetworks.com * updates: centos.mirror.cdnetworks.com base | 1.1 kB 00:00 base/primary | 995 kB 00:00 base 2789/2789 extras | 2.1 kB 00:00 extras/primary_db | 164 kB 00:00 updates | 1.9 kB 00:00 updates/primary_db | 332 kB 00:00 Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package httpd-devel.i386 0:2.2.3-83.el5.centos set to be updated --> Processing Dependency: httpd = 2.2.3-83.el5.centos for package: httpd-devel --> Processing Dependency: apr-util-devel for package: httpd-devel --> Running transaction check ---> Package apr-util-devel.i386 0:1.2.7-11.el5_5.2 set to be updated --> Processing Dependency: httpd = 2.2.3-76.el5.centos for package: mod_ssl ---> Package httpd.i386 0:2.2.3-83.el5.centos set to be updated --> Running transaction check ---> Package mod_ssl.i386 1:2.2.3-83.el5.centos set to be updated --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: httpd-devel i386 2.2.3-83.el5.centos updates 155 k Installing for dependencies: apr-util-devel i386 1.2.7-11.el5_5.2 base 53 k Updating for dependencies: httpd i386 2.2.3-83.el5.centos updates 1.2 M mod_ssl i386 1:2.2.3-83.el5.centos updates 97 k Transaction Summary ================================================================================ Install 2 Package(s) Upgrade 2 Package(s) Total download size: 1.5 M Is this ok [y/N]: y Downloading Packages: (1/4): apr-util-devel-1.2.7-11.el5_5.2.i386.rpm | 53 kB 00:00 (2/4): mod_ssl-2.2.3-83.el5.centos.i386.rpm | 97 kB 00:00 (3/4): httpd-devel-2.2.3-83.el5.centos.i386.rpm | 155 kB 00:00 (4/4): httpd-2.2.3-83.el5.centos.i386.rpm | 1.2 MB 00:00 -------------------------------------------------------------------------------- Total 4.6 MB/s | 1.5 MB 00:00 Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing : apr-util-devel 1/6 Updating : httpd 2/6 Installing : httpd-devel 3/6 Updating : mod_ssl 4/6 Cleanup : mod_ssl 5/6 Cleanup : httpd 6/6 Installed: httpd-devel.i386 0:2.2.3-83.el5.centos Dependency Installed: apr-util-devel.i386 0:1.2.7-11.el5_5.2 Dependency Updated: httpd.i386 0:2.2.3-83.el5.centos mod_ssl.i386 1:2.2.3-83.el5.centos Complete!
이제 다운로드한 톰켓 커낵터 소스를 컴파일하여 이미 설치되어 있는 httpd 모듈에 설치한다.
cd /app/source/tomcat-connectors-1.2.37-src/native ./configure --with-apxs=/usr/sbin/apxs make make install
3. 아파치 웹 서버 환경 설정
/etc/httpd/conf.d/tomcat.conf 파일을 다음과 같이 생성한다./etc/httpd/conf.d/tomcat.conf
LoadModule jk_module modules/mod_jk.so JkWorkersFile conf/workers.properties JkLogFile "logs/mod_jk.log" JkLogLevel info
톰켓 연결정보를 기술하는 workers.properties 파일을 다음과 같이 생성한다.
/etc/httpd/conf/workers.properties (환경에 따른 수정 필요)
worker.list=worker1 worker.worker1.port=8009 worker.worker1.host=localhost worker.worker1.type=ajp13 worker.worker1.lbfactor=1
여러 톰켓을 구동할 수 있도록 /etc/httpd/conf/httpd.conf 파일에 VirtualHost 설정을 추가한다. 이때 JkMountFile 을 지정하여 어떤 요청들을 어떤 톰켓이 처리할 것인가를 지정한다.
/etc/httpd/conf/httpd.conf (환경에 따른 수정 필요)
/etc/httpd/conf/uriworkermap.properties (환경에 따른 수정 필요)DocumentRoot /app/webapps/portal/WebContent ServerName portal ErrorLog logs/portal-error_log JkMountFile conf/uriworkermap.properties
/*.do=worker1 /*.jsp=worker1
4. 다중 인스턴스 Tomcat 환경 구성
톰켓 인스턴스를 다중으로 구동할 수 있도록 /app/tools/ 경로에 설치된 톰켓을 직접 사용하지 않고 /app/servers 경로를 생성하고 이곳에 톰켓을 다시 아래와 같은 방식으로 구성한다.- /app/servers/[인스턴스 명]-tomcat/
- /app/servers/[인스턴스 명]-tomcat/bin (/app/tomcat/bin 심볼링 링크)
- /app/servers/[인스턴스 명]-tomcat/lib (/app/tomcat/lib 심볼링 링크)
- /app/servers/[인스턴스 명]-tomcat/conf (/app/tomcat/conf 복사)
- logs, temp, webapps, work 디렉터리 생성.
문서에서는 developer 계정으로 톰켓을 운영하는데 이를 위하여 /app/tools 와 /app/servers 의 소유권을 developer 로 변경한다.
톰켓 운영을 위하서 developer 계정의 홈에 bin 디렉터리를 생성하고 add-new-tomcat 스크립트를 아래와 같이 생성한다.
#!/bin/sh if [ "$#" == "0" ]; then echo "tomcat instance name required." exit 1 fi SERVERS_HOME=/app/servers SERVER_NAME=$1 SERVER_PATH="$SERVERS_HOME/$SERVER_NAME-tomcat" TOMCAT_HOME=/app/tomcat echo "new tomcat will create in "$SERVER_PATH"....." if [ -d "$SERVER_PATH" ]; then echo "directory '$SERVER_PATH' already exist. check first." exit 1 fi mkdir $SERVER_PATH mkdir $SERVER_PATH/logs $SERVER_PATH/temp $SERVER_PATH/webapps $SERVER_PATH/work cp -Rf $TOMCAT_HOME/conf $SERVER_PATH ln -s $TOMCAT_HOME/bin $SERVER_PATH/bin ln -s $TOMCAT_HOME/lib $SERVER_PATH/lib
이제 add-new-tomcat [새로운 인스턴스 이름] 명령으로 손쉽게 톰켓 환경을 추가할 수 있다. 톰켓 환경이 추가되면 반듯이 해당 톰켓 설정의 sever.xml 파일에서 Server 노드 shutdown, Connector 노드 port 와 redirectPort 포트를 사용하지 않는 다른 값으로 변경하여야 한다. 개인적으로는 새로운 톰켓이 추가되는 경우 각 포트에 +1 값을 지정한다. 톰켓이 추가되면 아파치 설정 파일에서 httpd.conf, workers.properties 그리고 uriworkermap.properties 설정을 변경할 필요가 있다.
conf/server.xml
추가로 인스턴스에 따라 톰켓을 시작, 정지, 로그보기를 위한 스크립트를 생성한다.
/home/developer/bin/tdown (톰켓 정지)
#!/bin/sh if [ "$#" == "0" ]; then echo "tomcat instance name required." exit 1 fi SERVER_HOME=/app/servers SERVER_NAME=$1 SERVER_PATH="$SERVER_HOME/$SERVER_NAME-tomcat" $SERVER_PATH/bin/shutdown.sh/home/developer/bin/tboot (톰켓 시작)
#!/bin/sh if [ "$#" == "0" ]; then echo "tomcat instance name required." exit 1 fi SERVER_HOME=/app/servers SERVER_NAME=$1 SERVER_PATH="$SERVER_HOME/$SERVER_NAME-tomcat" PROCESS_COUNT=$( ps -ef | grep java | grep $SERVER_NAME | wc -l ) if [ "$PROCESS_COUNT" -eq 1 ] ; then echo "tomcat instance '$SERVER_NAME' already running...." exit 1 else echo "starting tomcat instance '$SERVER_NAME' .. " $SERVER_PATH/bin/startup.sh fi #$SERVER_PATH/bin/startup.sh
/home/developer/bin/tdown (톰켓 정지)
#!/bin/sh if [ "$#" == "0" ]; then echo "tomcat instance name required." exit 1 fi SERVER_HOME=/app/servers SERVER_NAME=$1 SERVER_PATH="$SERVER_HOME/$SERVER_NAME-tomcat" $SERVER_PATH/bin/shutdown.sh
/home/developer/bin/tlog (톰켓 로그보기)
#!/bin/sh if [ "$#" == "0" ]; then echo "tomcat instance name required." exit 1 fi SERVER_HOME=/app/servers SERVER_NAME=$1 SERVER_PATH="$SERVER_HOME/$SERVER_NAME-tomcat" echo "$SERVER_PATH/logs/catalina.out" tail -f "$SERVER_PATH/logs/catalina.out"
손쉬운 톰켓 운영을 위하여 공통으로 적용할 몇가지 환경 변수를 developer 계정에 추가한다. 참고로 JAVA_OPTS 값은 모든 톰켓이 시작할 때 공통으로 적용된다.
/home/developer/.bash_profile
export JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms256m -Xmx512m -XX:NewSize=125m -XX:MaxNewSize=125m -XX:PermSize=125m -XX:MaxPermSize=125m -XX:+DisableExplicitGC" export JAVA_HOME=/usr/lib/java
댓글 없음:
댓글 쓰기