연구

APM_SETUP6 + Tomcat6.0 연동하기 (for Windows Vista 32bit)

락끄 2008. 2. 18. 21:36

수많은 삽질 끝에 APM_SETUP6.0과 Tomcat6.0을 연동하는데 성공해서 이와 관련된 내용을 정리해서 올리고자 한다. 나와 비슷하게 많은 사람들이 삽질을 할 수 있을 듯 한데, 조금이나마 도움이 되었으면 좋겠다.

먼저 웹에서 받을 수도 있겠지만, 일단 본인이 사용한 파일들을 올려두겠다. 현재 날짜로 (2008년 02월 18일) 최신 릴리즈를 사용한 것들이라 추후에는 사라질 수도 있을 것 같다. 그리고 이전 버젼들과는 파일들이 서로 호환되지 않는다고 하니 파일들의 버젼도 유의해서 확인해야할 것 같다.


먼저 위의 파일들을 적당한 폴더에 받아두고, 설치와 설정을 다음 순서와 같이 진행하면 된다.

0. JDK 설치
java기반의 Tomcat을 구동해야하기 때문에 JDK는 기본적으로 설치가 되어 있어야 한다. 본인은 JDK6.0을 설치했다.

1. APM 설치
내려 받은 APM을 클릭하여 설치하면 된다. 설치는 아주 간단히 되므로 굳이 상세히 언급하진 않겠다. 다만 본인은 C:\APM_Setup 이 root directory가 되도록 설치하였으며 그 외에도 기본 설정을 사용하였다.

2. Tomcat 설치
마찬가지로 간단히 설치하였다. JDK가 설치되었다면 큰 문제 없이 설정된다. 다만 본인은 C:\APM_Setup\Server\Tomcat 6.0 에 설치되도록 하였는데, APM_Setup이 그런 디렉토리 구조를 가지고 있어서 왠지 통일하는게 좋을 것 같아서였다. Tomcat은 파일 복사만으로도 별 문제 없이 실행할 수 있으나, Windows Service로 구동하기 위해서 서비스와 함께 설치되도록 하였다.

3. JK 설정

  • mod_jk.so 복사 먼저 내려 받은 jk library를 APM이 설치된 하위의 Apache module 폴더에 복사한다. 이때 파일 이름을 mod_jk.so로 바꾸어 준다. 본인의 경우에는 C:\APM_Setup\Server\Apache\modules\mod_jk.so 파일이 생성되었다. 이후부터는 C:\APM_Setup\Server\Apache를 %APACHE_HOME% 이라 작성하겠다. 설치하는 각자의 Apache가 있는 곳과 대응된다고 보면 된다.
  • httpd.conf 설정 다음으로 %APACHE_HOME%\conf\httpd.conf 파일을 수정하여 apache가 jsp를 인식했을 때 tomcat으로 그 처리를 전달하도록 한다. httpd.conf 파일에 다음과 같은 부분들을 추가한다.
    아래에서 붉은색으로 되어 있는 부분들이 중요한 부분들이고 그 외에는 로그와 같은 정보를 확인하도록 설정하는 것이다. tomcat과 관련된 worker를 설정해주기 위해 이와 관련된 파일을 지정하고 설정 정보를 제공해주어야 한다.
##########################################################################
# @START tomcat jk connector
#
# Load mod_jk module
LoadModule jk_module modules/mod_jk.so
# Where to find workers.properties
JkWorkersFile conf/workers.properties
# Where to put jk logs
JkLogFile logs/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel debug
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
# Send JSPs for context /*.jsp to worker1
JkMount /servlets-examples/* worker1
JkMount *.jsp worker1
#
# @END tomcat jk connector
##########################################################################
  • workers.properties 설정 %APACHE_HOME%\conf\workers.properties 파일을 생성하고 해당 worker와 관련된 정보를 지정해준다.
# Define 1 real worker using ajp13
worker.list=worker1
# Set properties for worker1 (ajp13)
worker.worker1.port=8009
worker.worker1.host=localhost
worker.worker1.type=ajp13
worker.worker1.lbfactor=1

이같이 하고, Tomcat과 APM을 구동하면 무리 없이 jsp파일이 처리되는 것을 확인할 수 있다. apache가 jsp파일에 대해서 요청이 오면 tomcat을 호출하는 것이기 때문에 jsp에 대해서는 모두 tomcat의 context path설정을 따라서 진행이 되었다. 예를 들어 /test/index.jsp라고 하면 tomcat의 ROOT 하위의 /test/index.jsp를 호출하게 된다. php나 html은 여전히 apache의 context path를 따르기 때문에 둘간의 혼동을 없애려면 둘의 root directory를 하나로 통일해 두는 것이 좋을 것 같다.

그리고 중요한 것은 혹시나 virtual host를 사용하는 경우에는 JkMount *.jsp worker1 와 같이 worker를 지정할 때 각 virtual host마다 지정해주어야 한다. 본인의 경우 Virtual Host를 사용하였는데, 문제 없이 잘 동작하는 것을 확인할 수 있었다.

보통은 Tomcat으로 작업하면 java 기반으로 하고, APM을 사용하는 경우에는 php를 기반으로 하기 때문에 크게 연동할 일이 없을 것 같은데, 본인의 경우 wiki 기반의 홈페이지에 java 기반의 appliation demo를 보여주기 위해서 연동할 필요가 있었다. 물론 Apache와 Tomcat을 각각 80, 8080 포트에 따로 구동할 수도 있었지만, 본인이 사용하는 Network내에서는 8080포트를 외부로 공개하는 것을 꺼리기 때문에 이같은 연동이 필요했다.
또한 하나의 서버에서 Virtual Host로 두개의 홈페이지를 구동하는 경우에 한 홈페이지는 php기반이고, 다른 홈페이지는 jsp기반이라면 유용하게 적용될 것이라 생각한다. 본인도 아직 설치해보지는 않았지만, 추후 이같은 작업이 필요했기에 연동을 시도했다.

* 참고 사이트
http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html