가상호스트 환경에서 Apache와 Tomcat의 연동
여러 개의 가상호스트 환경에서 아파치와 톰캣을 연동하는 작업을 진행했다. 검색으로 찾은 자료들은 단일 호스트 환경이었기 때문에 바로 적용이 어려웠고 많은 시행착오 끝에 2개 이상의 가상호스트 환경에서 톰캣과 연동을 통해 jsp 파일을 실행할 수가 있었다. 작업을 진행하면서 바로 작성한 것이 아닌 작업 후 기억에 의존해서 정리하는 것이라 틀린 내용이 있을 수도 있다.
톰캣(Tomcat) 설치
# yum install tomcat tomcat-webapps tomcat-admin-webapps
# service tomcat start
톰캣을 yum 을 이용해 설치했다. 설치 후 톰캣을 실행해 서버가 제대로 실행되는지 확인한다. http://example.com:8080 으로 접속해 화면을 확인한다.
mod_jk 설치
# cd /usr/local/src
# wget http://apache.tt.co.kr/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.42-src.tar.gz
# tar zxvf tomcat-connectors-1.2.42-src.tar.gz
# cd tomcat-connectors-1.2.42-src/native/
# ./configure --with-apxs=/usr/local/apache2/bin/apxs
# make
# make install
설치 후 아파치 설정을 변경한다.
LoadModule jk_module modules/mod_jk.so
~~~~
# mod_jk
Include conf/extra/httpd-mod_jk.conf
mod_jk.conf 파일의 내용은 아래와 같다.
<IfModule jk_module>
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel info
JkMountFile conf/uri.properties
</IfModule>
workers.properties 파일의 내용은 아래와 같다.
worker.list=worker1
worker.worker1.port=8009
worker.worker1.host=localhost
worker.worker1.type=ajp13
worker.worker1.lbfactor=1
uri.properties 파일의 내용은 아래와 같다.
/*.do=worker1
/*.jsp=worker1
아파치(Apache) 가상호스트 설정
<VirtualHost *:80>
ServerAdmin example@example.com
DocumentRoot "/home/example/www"
ServerName example.com
ErrorLog "logs/example.com-error_log"
CustomLog "logs/example.com-access_log" common
JkMount /*.jsp worker1
JkMount /*.do worker1
</VirtualHost>
톰캣(Tomcat) 가상호스트 설정
# cd /etc/tomcat
server.xml 파일에 Host 부분을 추가한다.
<Host name="example.com" appBase="/home/example/www"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
</Host>
name 설정은 아파치의 가상호스트명과 동일하게 설정한다.
# cd Catalina
# cd example.com
ROOT.xml 파일을 Catalina 디렉토리 안에 있는 example.com 디렉토리에 생성한다. 가상호스트명에 해당하는 디렉토리가 없는 경우 톰캣을 재실행한 후 확인한다. ROOT.xml 파일의 내용은 아래와 같다.
<?xml version='1.0' encoding='utf-8'?>
<Context
docBase="."
debug="0"
privileged="true"
reloadable="true">
</Context>
가상호스트가 추가될 때는 아파치와 톰캣에 가상호스트 추가 과정을 반복한다.