Apache+Tomcat 연동

Language/JSP 2012. 10. 11. 15:59

일단 process가 어떻게 돌아가는지 부터 알도록 하죠


아파치 -> mod_jk -> 톰캣 


연동 과정을 아는 분들은 이것만 보고도 아실 것이고 


모르는 분들은 설명을 들어주세요


아파치는 기본적으로 html 이나 그림 파일 같은 것을 읽습니다.


tomcat 은 그 외에도 jsp 파일을 컴파일 해서 읽을 수 있죠.


그래서 부하를 줄이기 위해 html 파일들은 아파치에서 jsp 파일은 톰캣에서


읽도록 분산을 시켜놓는데요...


원리는 간단합니다. 아파치와 톰캣이 각각 다른 Port  를 쓰게 하고


아파치 port 로 들어온 jsp 파일 요청 내용을 톰캣 port 로 링크를 걸어주는 것입니다.


그렇게 연결 해주는게 mod_jk 라는 것이구요.


(결국 모든 요청은 아파치 포트로 통일 된다는 것이군요 - 아파치 기본 포트가 80 포트니까요


80포트는 포트를 url 에 안써도 되는건 다들 아실 거라고 생각합니다.)


그럼 설치와 연동에 대해서 살펴보죠


설치 버전

아파치 2.2

톰캣 5.0

jdk 1.6

mod jk 1.2(커넥터 - 앞으로 이쪽 버전 밖에 안나오므로 이걸로 하면 되겠다)

받는것은 가이드 안해드립니다. 아파치 톰캣 사이트 가서 받으시고요

커넥터인 mod jk 는 톰캣 사이트에 connector 인가로 있습니다.


준비 단계

아파치 설치

아파치를 인터넷에서 받아서 압축을 푼 다음

./configure --prefix=/home/apache2 \

--enable-module=so \

--enable-rewrite \

--enable-so

한후 make

make install 로 설치 함


톰캣 설치

tar -zxvf jakarta-tomcat-5.0.28.tar.gz

mv jakarta-tomcat-5.0.28 /usr/local/tomcat-5.0.28


커넥터 설치

tar xvzf tomcat-connectors-1.2.30-src.tar.gz

./buildconf.sh

./configure --with-apxs=/usr/local/apache/bin/apxs

make

make install

mod_jk.so 가 아파치의 modules 폴더에 있는지 확인함

이렇게 하여 설치


연동 설정

 /usr/local/apache2/conf/httpd.conf 아래와 같이 추가

LoadModule jk_module modules/mod_jk.so

JkWorkersFile conf/workers.properties


JkMountFile conf/uriworkermap.properties


JkLogFile logs/mod_jk.log 

JkLogLevel error 

JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " 

JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories 

JkRequestLogFormat "%w %V %T"


JkMount /*.jsp default 

JkMount /*.do default

#여기서 default 는 workers.properties 의 default


Alias /jsp-examples "/usr/local/tomcat/webapps/jsp-examples/" 

<Directory "/jsp-examples">

    AllowOverride None

    Options None

    Order allow,deny

    Allow from all

</Directory>

#이건 임의로 연결 시켜주는 것이므로 이런식으로 프로젝트를 연결 시켜주면 됩니다.

Alias /servlets-examples "/usr/local/tomcat/webapps/servlets-examples/"

JkMount /jsp-examples/*.jsp default

JkMount /servlets-examples/* default

또한 


<IfModule dir_module>

    DirectoryIndex index.html index.jsp index.htm

</IfModule>


이부분이 원래 index.html 만 되어 있는데 뒤의 두개 붙여주면 편합니다.



/usr/local/apache2/conf/workers.properties 추가(간단하니까 vi 로 만드세요)

workers.tomcat_home=/usr/local/tomcat5.0.28-dcd2

workers.java_home=/usr/java/jdk1.6.0_17

ps=/

worker.list=default

worker.default.port=8009

worker.default.host=localhost

worker.default.type=ajp13

worker.default.lbfactor=1




/usr/local/apache2/conf/uriworkermap.properties 추가(간단하니까 vi 로 만드세요)

/*.do = default

/*.jsp = default



이게 잘 이해가 안가실 겁니다. worker.properties 에 8009 port 라는 부분을 주목해 볼 필요가


있습니다. tomcat 의 conf 폴더에 server.xml 을 보면


기본 port 는 8080 이고 ajp13 프로토콜은 8009 포트로 들어간다는 내용이 있습니다.


결국 아파치 포트로 들어가는 jsp 요청은 ajp13 프로토콜을 이용해서 8009 포트로 tomcat에


보내진다는 얘기지요.


확인을 하려면 


->아파치설치 경로 /bin/apachectl start 

->톰캣 설치 경로 /bin/startup.sh  

(아파치 먼저 올리고 톰캣 올려야 합니다.)



http://ip:port/jsp-examples/ 해보면 됩니다.

(ip,port 는 아파치 ip와 port 입니다.)


출처 - http://shonm.tistory.com/208

: