본문 바로가기

WAS/Tomcat

[tomcat] Apache, Tomcat 연동하기

Apache와 Tomcat을 연동하기 위해서는 보통 mod_jk나 proxy_ajp 를 사용하는 두가지 방법이 있습니다. 
회사에서는 mod_jk를 주로 사용합니다. 실제로 아직은 mod_jk 방법을 권장하고 있기는 합니다. 이유는 다양한 옵션이 있다는 것이죠. 하지만 mod_jk의 다양한 옵션을 사용해서 튜닝을 하는 경우가 아니라면 제가 볼때는 비슷합니다.

  1. Windows에서 mod_jk를 이용해서 Apache, Tomcat 연동하기 - Windows에서 mod_jk를 이용해서 Apache, Tomcat 연동하기
  2. Linux에서 mod_jk를 이용해서 Apache, Tomcat 연동하기 - Linux에서 mod_jk를 이용해서 Apache, Tomcat 연동하기
  3. Windows에서 proxy모듈을 이용해서 Apache, Tomcat 연동하기 - Windows에서 proxy모듈을 이용해서 Apache, Tomcat 연동하기
  4. Linux에서 proxy모듈을 이용해서 Apache, Tomcat 연동하기 - Linux에서 proxy모듈을 이용해서 Apache, Tomcat 연동하기

방법간에 차이가 크지 않지만 아무래도 방법과 OS간의 차이가 조금씩은 있어서 정리해둡니다. 
mod_jk와 proxy_ajp방식의 성능차를 비교했던 자료가 있었는데 개인적인 실수로 지워져 버려 올리지 못하는건 아쉽네요. ^^

출처 : 
http://blog.openframework.or.kr/74  


=====================================================================

apache폴더 : /usrl/local/apache2

1. apache에 mod_jk.so파일을 복사한다.(모듈설치)

apache폴더/modules/에파일 받기 :
wget http://mirror.apache-kr.org//tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.31/i386/mod_jk-1.2.31-httpd-2.2.x.so


2. httpd.conf파일 수정
apache폴더/conf/httpd.conf 
추가내용 :
Include conf/mod_jk.conf
Include conf/extra/http-vhosts.conf

3. mod_jk.conf수정(추가)
apache폴더/conf/mod_jk.conf 
추가내용
LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.x.so  #추가된 모듈명
<Ifmodule mod_jk.c="">
    JkWorkersFile conf/workers.properties
    JkLogFile logs/mod_jk.log
    JkLogLevel info
    JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
    JkRequestLogFormat "%w %V %T"
    JkOptions +ForwardKeySize +ForwardURICompatUnparsed -ForwardDirectories
    JkMount /*.jsp ajp13                                                      #jkMount될 확장자
    JkMount /*.do ajp13
    JkUnmount /*.php ajp13
</Ifmodule>

4. worker.properties수정(추가)
apache폴더/conf/worker.properties 
추가내용
workers.tomcat_home="/usr/local/tomcat6.0.32"       #톰캣위치
workers.java_home="/usr/local/jdk1.6.0_26"              #jdk위치
ps=/
worker.list=ajp13                                                   #jkMount명(tomcat 연계셋팅)
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
worker.ajp13.lbfactor=1

worker.default.socket_keepalive=1

5. httpd-vhosts.conf수정
 
apache폴더/conf/extra/httpd-vhosts.conf 
추가 및 수정내용
 <VirtualHost *:80>
    ServerAdmin test@test.com
    DocumentRoot /home/httpd/web/WebRoot   #WebRoot를 나타냄
    ServerName test.server.local
    ServerAlias test.server.local
    ErrorDocument 404 /404.html
    ErrorLog "logs/testserver-error.log"
    CustomLog "logs/testserver-access.log" common

    JkLogFile "logs/jk_testserver.log"
    JkLogLevel warn
    JkMount /*.jsp ajp13                                #톰캣으로 요청할 확장자
    JkMount /*.do ajp13
</VirtualHost>

6. tomcat - server.conf 확인
    <Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" URIEncoding="euc-kr"/>

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"  URIEncoding="euc-kr"/>
있는지 확인. 
Context추가
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
          <Context crossContext="true" debug="0" docBase="/home/httpd/was/WebRoot" path="" reloadable="true"/>
      </Host>