아파치는 웹서버이고 톰켓은 Servlet과 JSP를 지원하는 웹컨테이너이다. 웹서버와 웹 컨테이너를 연결하는 이유는 Servlet 또는 JSP를 요청하지 않는 정적인 웹페이지의 경우에는 아파치와 같은 웹서버를 통하여 운용하는 것이 보다 효율적이기 때문이다. 아파치와 톰켓을 연동하기 위해서는 mod_jk.so 파일이 필요한데, 아파치 그룹에서 제공하는 파일을 다운 받을 수 있지만, 아파치의 버젼에 영향을 많이 받아 제대로 연동되지 않기 때문에, 직접 컴파일을 통하여 생성을 해야 한다.
아파치 설치
이 부분은 아파치를 설치하는 것이 목적이 아니라, mod_jk.so 파일을 얻기 위한 것이다. 이전 섹션에서 다운 받은 httpd-2.0.40.tar.gz 파일을 이용하여 아파치를 설치한다.
#cd /tmp
#tar xzvf httpd-2.0.40.tar.gz
#cd /tmp/httpd-2.0.40
띄어쓰기에 따라 명령어가 처리되지 않을 수 있다!
#./configure --prefix=/usr/local/apache --enable-rule=SHARED_CORE--enable-modle=so
#make
#make install
#httpd -l
mod.so.c이 리스트에 모이면 성공!
mod_jk.so 생성
#cd /tmp
#tar xzvf tomcat-connectors-4.1.18-src.tar.gz
#cd tomcat-connectors-4.1.18-src/jk/native
#./buildconf.sh
#./configure --with-apxs=/usr/local/apache/bin/apxs
#make
#make install
#ll /usr/local/apache/modules
mod_jk.so이 있으면 성공!
아파치와 톰켓의 연동을 위한 작업
생성된 mod_jk.so 파일을 기본으로 설치되어 있는 아파치 홈디렉토리 하위에 있는 modules 디렉토리에 복사한다.
아파치의 환경 설정 파일을 수정한다:
#vi /etc/httpd/conf/httpd.conf
LoadMudule들을 정의한 부분에 아래 문장을 추가한다:
LoadModule jk_module modules/mod_js.so
httpd.conf의 끝부분에 다음 내용을 입력한다:
JkWorkersFile "/usr/local/jakarta-tomcat-4.1.18/conf/jk/workers.properties"
JkLogFile "/usr/local/tomcat4/logs/mod_jk.log"
JkLogLevel debug
JkMount /examples ajp13
JkMount /examples/* ajp13
JkMount /jk ajp13
JkMount /jk/* ajp13
JkMount /cocoon ajp13
JkMount /cocoon/* ajp13
--------------------------------------------------------------------------------
Tip!
아파치에서는 기본적으로 Character Set이 "ISO-8859-1"로 되어 있는데, 이런 설정은 한글로 작업한 웹페이지의 글꼴이 깨지게 하는 원인이 된다. 한글이 깨어지지 않게 하기 위해 AddDefaultCharset을 찾아서 ISO-8859-1을 삭제하거나 주석처리하고 EUC-KR을 입력한다.
#AddDefaultCharset ISO-8859-1
AddDefaultCharset EUC-KR
--------------------------------------------------------------------------------
톰켓 홈 디렉토리 하위에 있는 conf 디렉토리 안에 "jk"라는 디렉토리를 하나 생성하고 이 디렉토리 안에 다음과 같은 내용을 갖는 workers.properties 파일을 작성한다.
workers.CATALINA_HOME=/usr/local/tomcat4
workers.java_home=$(JAVA_HOME)
ps=/
worker.list=ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
worker.ajp13.lbfactor=1
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=ajp13
worker.inprocess.type=jni
worker.inprocess.class_path=$(workers.CATALINA_HOME)$(ps)lib$(ps)tomcat.jar
worker.inprocess.cmd_line=start
worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)bin$(ps)classic$(ps)libjvm.so
worker.inprocess.stdout=$(workers.CATALINA_HOME)$(ps)logs$(ps)inprocess.stdout
worker.inprocess.stderr=$(workers.CATALINA_HOME)$(ps)logs$(ps)inprocess.stderr
톰켓과 아파치를 재시작한다. (톰켓을 먼저 시작)
톰켓과 아파치가 연동되었는지 확인하기 위하여
http://s2clinux.chonbuk.ac.kr/examples
에 접속한다. 아파치와 톰켓이 연동이 되지 않았다면
http://s2clinux.chonbuk.ac.kr:8081/examples
에만 접속할 수 있다. examples는 톰켓에서 서블릿과 JSP에 대해 설명하는 예제 사이트이다.