Apache2.0.40 + Tomcat4.1.12 on RedHat8.0
1차수정 : 2002년 11월 01일
2차수정 : 2002년 11월 05일
본 문서는 LINUX에서 Apache와 Tomcat의 연동을 시도하였으나, 매번 삽질만 하다가 끝내는 포기하고 하위버전을 사용하거나, Tomcat 단독으로 사용하여 Test를 하시는 분들을 위하여 조금이나마 도움이 되라고 작성한 문서입니다. 본문의 내용은 존칭은 생략토록 하겠습니다.(__)
1. 작업환경
2. 다운로드목록
주, httpd-2.0.40.tar.gz와, jakarta-tomcat-connectors-4.1.12-src.tar.gz는 mod_jk.so가 Apache2.0.40에 맞춰진것이 없어서 직접 생성을 해야하므로, 받아야 할 것이다. 생성하면되지 왜안되냐?라고 묻는다면 눈씻고 찾아봐두 mod_jk.so생성에 필요한 apxs가 없다. 그래서 편법(일명 잔머리)을 사용했다.
3. 작업디렉토리 및 설치경로
4. 간략한 설치과정 소개
5. Apache 설치
이부분은 서두에서두 언급했지만 mod_jk.so를 생성하기위한것이다. 허나, default로 인스톨되어 있는 Apache를 사용하지않고 Apache를 직접 compile 및 install하여 사용하겠다면 적당한 디렉토리에 인스톨을 하면 되겠다.
# 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-module= so
주, httpd-2.0.40/INSTALL 문서를 한번쯤 읽어보자.
# make
# make install
# httpd -l
mod.so.c 이 리스트에 보이면 성공!
부록 : 부팅시 자동으로 Apache 시동하기
이 내용은 default 로 install 되어 있는 Apache를 사용할 경우는 상관없다.
setup 에서 check만으로 되기때문이다. 새로 compile하여 install을 한 경우만 해당한다.
# cp /usr/local/apache/bin/apachectl /etc/rc.d/init.d/httpd
# cd /etc/rc.d/rc5.d
# ln -s /etc/rc.d/init.d/httpd S86httpd
# cd /etc/rc.d/rc6.d
# ln -s /etc/rc.d/init.d/httpd K86httpd
4. mod_jk.so 생성
# cd /tmp
# tar xzvf jakarta-tomcat-connectors-4.1.12-src.tar.gz
# cd /tmp/jakarta-tomcat-connectors-4.1.12-src/jk/native
# ./buildconf.sh
# ./configure --with-apxs=/tmp/apache/bin/apxs
주, jakarta-tomcat-connectors-4.1.12-src/jk/native/BUILDING 문서를 한번쯤 읽어보자.
# make
# make install
# ll /usr/local/apache/modules
mod_jk.so 이 있으면 성공!
5. 환경변수설정
Java와 Tomcat을 위한 환경변수를 설정하는 부분이다.
# vi /etc/profile
...
JAVA_HOME=/usr/local/java
CATALINA_HOME=/usr/local/tomcat
PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
export JAVA_HOME CATALINA_HOME
...
# source /etc/profile
편집 후 환경변수를 적용시킨다.
6. Java 설치
# cd /tmp
# ./j2sdk-1_4_1-linux-i586.bin
# mv /tmp/j2sdk1.4.1 /usr/local
# cd /usr/local
# ln -s j2sdk1.4.1 java
# java
먼가 좌르륵 나오면 성공! 넘 간단하지 않은가!
7. Tomcat 설치
# cd /tmp
# tar xzvf jakarta-tomcat-4.1.12.tar.gz
# mv jakarta-tomcat-4.1.12 /usr/local
# cd /usr/local
# ln -s jakarta-tomcat-4.1.12 tomcat
# catalina.sh start
http://localhost:8080 으로 접속하여 고양이가 보이면 성공!
부록 : 부팅시 자동으로 Tomcat 시동하기
# vi /etc/rc.d/init.d/tomcat
#!/bin/sh
#
# Startup script for Tomcat, the Apache Servlet Engine
#
# chkconfig: - 85 15
# description: Start Tomcat
#
# processname: tomcat
#
# Source function library.
. /etc/rc.d/init.d/functions
export JAVA_HOME=/usr/local/java
export CATALINA_HOME=/usr/local/tomcat
export PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
# See how we were called.
case "$1" in
start)
echo -n "Starting tomcat: "
daemon $CATALINA_HOME/bin/startup.sh
touch /var/lock/subsys/tomcat
echo
;;
stop)
echo -n "Shutting down tomcat: "
daemon $CATALINA_HOME/bin/shutdown.sh
rm -f /var/lock/subsys/tomcat
echo
;;
restart)
$0 stop
sleep 2
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0
# chkconfig --add tomcat
# chkconfig --level 3 tomcat on
8. Apache와 Tomcat의 연동을 위한 작업
# vi /usr/local/tomcat/conf/server.xml
내용중 다음을 찾아서
<Server port="8005" shutdown="SHUTDOWN" debug="0">
밑줄에 다음을 입력한다.
<Listener className="org.apache.ajp.tomcat4.config.ApacheConfig" />
내용중 다음을 찾아서
<Host name="localhost" debug="0" appbase="webapps">
밑줄에 다음을 입력한다.
<Listener className="org.apache.ajp.tomcat4.config.ApacheConfig" append="true" />
# catalina.sh start
Tomcat 을 재시작하면,
/usr/local/tomcat/conf 디렉토리 아래에
auto 디렉토리와 jk 디렉토리가 생겼을 것이고, auto 아래에 mod_jk.conf가 생겼을것이다.
마술일까? Listener 태그를 추가했기때문이다.^0^
# cd /usr/local/tomcat/conf/jk
# vi workers.properties
아래 내용은 없는 것이니 아래내용을 복사해서 생성을 하면 된다.
# Start setup file
#
workers.tomcat_home=/usr/local/tomcat
workers.java_home=/usr/local/java
ps=/
worker.list=ajp12, ajp13
# Definition for Ajp13 worker
#
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
#
# End setup file
# vi /etc/httpd/conf/httpd.conf
제일 아래 부분에 아래와 같이 추가해준다.
default로 인스톨되어 있는 Apache말고 새로 compile하여 install을 한 Apache인 경우도 마찬가지이다.
#
#Load mod_jk
#
LoadModule jk_module modules/mod_jk.so
#
#Configure mod_jk
#
JkWorkersFile /usr/local/tomcat/conf/jk/workers.properties
JkLogFile /usr/local/tomcat/logs/mod_jk.log
JkLogLevel emerg
#
# Root context
JkMount /*.jsp ajp13
JkMount /servlet/* ajp13
Include /usr/local/tomcat/conf/auto/mod_jk.conf
9. Context 추가 및 ROOT 디렉토리 변경
koug 라는 컨텍스트를 추가해 보겠다.
/var/www/ 디렉토리에 koug 디렉토리를 만든다.
주, 원하는 아무 디렉토리에 원하는 이름으로 생성하면 된다.
# cd /var/www
# mkdir koug
# vi /usr/local/tomcat/conf/server.xml
...
<!-- Define properties for each web application. This is only needed
if you want to set non-default properties, or have web application
document roots in places other than the virtual host's appBase
directory. -->
<!-- Tomcat Root Context -->
<!--
<Context path="" docBase="ROOT" debug="0"/>
-->
<!-- Tomcat koug Context -->
<Context path="/koug" docBase="/var/www/koug" debug="0"
reloadable="true"/>
<!-- Tomcat Examples Context -->
<Context path="/examples" docBase="examples" debug="0"
reloadable="true" crossContext="true">
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="localhost_examples_log." suffix=".txt"
timestamp="true"/>
...
제대로 연동이 되는지 Test를 해보자.
# cp -r /usr/local/tomcat/webapps/examples/* /var/www/koug
Tomcat과 Apache를 재시동한다.
http://localhost/koug/jsp/
http://localhost/koug/servlets/
어랏! 포트번호가 빠졌다. 눈치를 챘으리라. -.-+
Apache와 Tomcat가 연동이 되었다는 증거가 여기서 나오는 것이다.
물론, 아래처럼
http://localhost:8080/koug/jsp/
http://localhost:8080/koug/servlets/
접속을 해도 결과는 마찬가지다. 속이 시원하지 않은가? 으햐햐햣 -0-
그렇다면, ROOT 의 디렉토리는 어떻게 하면 될까?
그렇다. 별문제없이 되리라고 생각이 될것이다. 별반차이가 없다는것이다.
# vi /usr/local/tomcat/conf/server.xml
...
<!-- Define properties for each web application. This is only needed
if you want to set non-default properties, or have web application
document roots in places other than the virtual host's appBase
directory. -->
<!-- Tomcat Root Context -->
<Context path="" docBase="/var/www/html" debug="0" reloadable="true" />
<!-- Tomcat Examples Context -->
<Context path="/examples" docBase="examples" debug="0"
reloadable="true" crossContext="true">
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="localhost_examples_log." suffix=".txt"
timestamp="true"/>
...
# cp -r /usr/local/tomcat/webapps/examples/* /var/www/html
Tomcat과 Apache를 재시동한다.
http://localhost/jsp/
http://localhost/servlets/
원하는 결과가 나왔는가?
이곳까지 왔는데도 안된다면 자신의 손과 눈을 의심해보고 첨부터 깔끔하게 재시도하기 바란다. -_-;;
참고URL
http://linux.sarang.net/board/?p=read&table=tip&no=7161&page=&o[at]=s&o[sc]=t&o[ss]=tomcat&o[st]=a
http://www.javaservice.net/~java/bbs/read.cgi?m=appserver&b=engine&c=r_p&n=1034684803&p=1&s=t#1034684803
http://www.javaservice.net/~java/bbs/read.cgi?m=appserver&b=engine&c=r_p&n=1030719705&p=2&s=t#1030719705
http://okjsp.pe.kr/lecture/lec01/tomcat4directory.xml
======================================
Visit to KOUG(Korea Oracle User Group)
http://www.koug.net
jinuxer@koug.net
======================================