mod_jkでのApacheとtomcatの連携

いつもはmod_proxy_ajpを使って連携してたけど、mod_jkで連携する必要が有ったのでメモ。(mod_proxy_ajp使うとtomcatapache再起動したとき、最初の何回かリクエストが正しく処理されない事があった。)

mod_proxy_ajpを使った連携方法はこちら

[環境]

  1. CentOS 5
  2. Apache 2.2.3
  3. Tomcat 6.0.16

1.mod_jkのインストール
こちらからtomcat-connectors-1.2.26-src.tar.gzをダウンロードし、解凍後、コンパイル、インストールする。

$ wget http://www.meisei-u.ac.jp/mirror/apache/dist/tomcat/tomcat-connectors/jk/source/jk-1.2.26/tomcat-connectors-1.2.26-src.tar.gz
$ tar xvf tomcat-connectors-1.2.26-src.tar.gz
$ cd tomcat-connectors-1.2.26-src/native
$ ./configure --with-apxs=/usr/sbin/apxs
$ make
$ make install

※/usr/sbin/apxsにapxs(APacheの拡張機能-eXtenSion)が無い場合は

yum -y install httpd-devel

でインストールする。

2.mod_jkの設定
/etc/httpd/conf.d/tomcat.conf
conf.d/*.confファイルは起動時に読み込まれる。(conf/httpd.confに"Include conf.d/*.conf"と書いてある場合)

LoadModule jk_module modules/mod_jk.so
<IfModule mod_jk.c>
    JkWorkersFile /etc/httpd/conf/workers.properties
    JkLogFile /var/log/httpd/mod_jk.log
    JkLogLevel warn
    JkMount /*/* worker1
</IfModule>

/etc/httpd/conf/workers.propertiesファイルを作成する。

worker.list=worker1

worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
worker.worker1.lbfactor=50

http://localhost/examples/で確認。