■ Tomcat と Apache の 連携 ■

RedHat7.2をインストール。
apacheは httpd-2.0.44.tar.gz をソースからインストール。
j2sdk-1_4_1-linux-i586-rpm.bin はバイナリーをインストール。
Tomcat はjakarta-tomcat-4.0.6.tar.gz バイナリーをインストール。
連携用 jakarta-tomcat-connectors-4.0.6-src.tar.gzをソースからインストール。
  mod_jk.so とリネームして  /usr/local/apache2/modules/ へコピー。
  tomcat-4 からは、同じバージョンのものが並んでいて、一緒にダウンロードできるので
  同じバージョンにする。  

1./root/.bash_profile の末尾に以下を追加
 (.bash.profile、bashrc と順に見て行くのでどちらに追加しても良いようだ)
 PostgreSQLまでの一通りの設定をした。
JAVA_HOME=/usr/java/j2sdk1.4.1
CATALINA_HOME=/usr/local/jakarta-tomcat-4.0.6
ANT_HOME=/usr/local/src/jakarta-ant
PATH=$PATH:$JAVA_HOME/bin:$ANT_HOME/bin:/usr/local/pgsql/bin
export JAVA_HOME CATALINA_HOME ANT_HOME PATH

 この設定は、/home/各登録ユーザ毎に必要になるが面倒なときは、/etc/profile かな
 まだ試してないけど。
 下のコマンドで .bash_profile の変更が有効になる。
 # cd /root
 # source ./.bash_profile
 (このsource コマンドは、su になるときに su - root で入れば # source ~./.bash_profile
 と1行で打てるようだがうまくいかないのでホルダまで入って打った)

2. /etc/httpd/conf/httpd.conf の末尾に以下を追加

LoadModule jk_module modules/mod_jk.so
AddModule mod_jk.c
<IfModule mod_jk.c>
   JkWorkersFile "/usr/local/jakarta-tomcat-4.0.6/conf/workers.properties"
   JkLogFile logs/jk.log
   JkLogLevel warn
   JkMount /*.jsp ajp13
   JkMount /servlet/* ajp13
   JkMount /examples/* ajp13
</IfModule>
          

3. /usr/local/jakarta-tomcat-4.0.6/conf に workers.properties ファイルを作成
 workers.properties ファイルの内容は以下の内容で、良くわからないがtomcat と j2sdk の
 インストールフォルダはそれなりに合わせて変更して打ち込んだ。

workers.tomcat_home=/usr/local/jakarta-tomcat-4.0.6
workers.java_home=/usr/java/j2sdk1.4.1
ps=/
worker.list=ajp12, ajp13

worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13

 worker.ajp13.port=8009 のport=8009 はjakarta-tomcat-4.0.6 のserver.xmlで
 AJP 1.3 connectorが既に有効になっていた。(よく分からないけど)

4. apache を終了して、tomcat 、apache の順で再起動する。

 [root@localhost /root]# $/etc/rc.d/init.d/httpd stop
 [root@localhost /root]# $CATALINA_HOME/bin/shutdown.sh

 [root@localhost /root]# $CATALINA_HOME/bin/startup.sh
 [root@localhost /root]# $/etc/rc.d/init.d/httpd start

5. apache 自動起動
/etc/rc.d/init.d/httpd

#!/bin/sh
#
# startup script for the Apache Web Server
#
# chkconfig: 345 85 15
# description: Apache is a World Wide Web server.  It is used to serve \
#        HTML files and CGI.
# processname: httpd
# pidfile: /var/run/httpd.pid
# config: /usr/local/apache2/conf/access.conf
# config: /usr/local/apache2/conf/httpd.conf
# config: /usr/local/apache2/conf/srm.conf


# Source function library.
. /etc/rc.d/init.d/functions

# See how we were called.
case "$1" in
  start)
 echo -n "Starting httpd: "
 daemon /usr/local/apache2/bin/httpd
 echo
 touch /var/lock/subsys/httpd
 ;;
  stop)
 echo -n "Shutting down http: "
 killproc httpd
 echo
 rm -f /var/lock/subsys/httpd
 rm -f /var/run/httpd.pid
 ;;
  status)
 status httpd
 ;;
  restart)
 $0 stop
 $0 start
 ;;
  reload)
 echo -n "Reloading httpd: "
 killproc httpd -HUP
 echo
 ;;
  *)
 echo "Usage: $0 {start|stop|restart|reload|status}"
 exit 1
esac

exit 0

# chmod 755 httpd
# chkconfig --add httpd
# chkconfig --list httpd

6. tomcat 自動起動
/etc/rc.d/init.d/tomcat

#!/bin/sh
#
# Startup script for the tomcat
#
# chkconfig: 345 80 15
#
# description: Tomcat is a Servlet+JSP Engine.
#
JAVA_HOME=/usr/java/j2sdk1.4.1
PATH=$PATH:$JAVA_HOME/bin
CATALINA_HOME=/usr/local/jakarta-tomcat-4.0.6
PATH=$PATH:$CATALINA_HOME/bin

# Source function library.
. /etc/rc.d/init.d/functions

# See how we were called.
case "$1" in
  start)
        if [ -f $CATALINA_HOME/bin/startup.sh ]; then
            echo -n "Starting the tomcat service "
            su - root -c "$CATALINA_HOME/bin/startup.sh"
        fi
        ;;
  stop)
        echo -n "Stopping the tomcat service."
        su - root -c "$CATALINA_HOME/bin/shutdown.sh"
        ;;
  restart)
        $0 stop
        $0 start
        ;;
  *)
        echo "Usage: $0 {start|stop|restart}"
        exit 1
esac
exit 0

tomcatをrootで起動するようにしているが、nobody ユーザーで起動するのが
セキュリティーの関係でよろしいようだ。(後で調べてみよう)
# chmod 755 tomcat
# chkconfig --add tomcat
# chkconfig --list tomcat

7.Tomcat への Context の追加は、Tomcat の設定ファイルである server.xml を編集します。
Host タグ内に登録してください。
/usr/local/jakarta-tomcat-4.0.6/conf/server.xml:

  ...
  <!-- Tomcat Examples Context -->
  ...
  </ResourceParams>
  
 
  <!-- MyTest WebApp Context -->
  <Context path="/mytest" docBase="mytest" debug="0" reloadable="true" >
    <Logger className="org.apache.catalina.logger.FileLogger"
            prefix="localhost_mytest_log." suffix=".txt"
            timestamp="true"/>
  </Context>
 
</Host>
...
	

mod_jk の場合、設定ファイル(mod_jk.conf)に JkMount を追加。
/usr/local/jakarta-tomcat-4.0.6/conf/mod_jk.conf:

...
JkMount /examples/*.jsp ajp13
JkMount /examples/servlet/ ajp13
JkMount /mytest/*.jsp ajp13
JkMount /mytest/servlet/ ajp13
 
Alias /examples "/usr/local/jakarta-tomcat-4.0.6/webapps/examples"
Alias /mytest "/usr/local/jakarta-tomcat-4.0.6/webapps/mytest"