連携に必要なもの †
mok_jkのインストール †
mod_jkモジュールを使う。
手順
make installによって、{APACHE_HOME}のmodulesディレクトリに
jk_mod.soが配置されているはず。
あとは、apacheとtomcatを連携させるための設定を記述する。
設定ファイル †
以下のファイルで連携の設定を行う
- {APACHE_HOME}/conf/workers.properties
- {APACHE_HOME}/conf/httpd.conf
- {TOMCAT_HOME}/conf/server.xml
workers.properties †
とにかくすぐに使いたい場合は、以下のように指定する。
worker.list=ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
worker.ajp13.lbfactor=1
- worker.list ← tomcatとの連携で使用するプロトコルを指定。複数指定する場合はカンマ区切りで指定する
例) worker.list=ajp12,ajp13
- worker.ajp13.port ← tomcatがajp13コネクタを使用しているポートを指定。tomcatでのデフォルトは8009なので、8009を指定。
- worker.ajp13.host ← tomcatが動作しているホスト名を指定。同マシンで動作している場合は、localhostを指定。
- worker.ajp13.type ← ajp13を指定。ここにajp12など他のものを指定して動作するかは未確認。
- worker.ajp13.lbfactor ← 不明。調査中。今のところこの設定で問題なし。
詳細は、mod_jkをダウンロード、展開したディレクトリ配下のconf/workers.propertiesを参照。
httpd.conf †
httpd.confにmod_jkモジュールを読み込む記述と、mod_jkモジュールの設定を追加する。
以下のような指定ができる。
LoadModule jk_module modules/mod_jk.so
<IfModule jk_module>
JkShmFile logs/jk.shm
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel warn
JkMount /- ajp13
</IfModule>
- <IfModule>
moduleがロードされている場合に設定する項目をこのタグの中に記述する。
hoge_moduleがロードされている場合の設定を指定したい場合は、以下のように記述する。
<IfModule hoge_module>
apacheのバージョンによって、モジュールの指定方法が異なる。
<IfModule mod_hoge.c>
上記のような指定の仕方もある。モジュールコンパイル前の.c拡張子で指定するのがポイント。
- JkWorkersFile
workers.propertiesファイルの場所を指定する
- JkLogFile
mod_jkのログ出力ファイルを指定する。指定しなかった場合、{APACHE_HOME}/logs/mod_jk.logに出力される。
- JkLogLevel
ログ出力レベルを指定する。
- JkMount
ここが一番大事。
apacheにきたどのリクエストをtomcatへ渡すかを指定する。
すべてのリクエストをtomcatへ渡す場合は、以下のように指定する。
JkMount /- ajp13
また、jspファイルへのリクエストをすべてtomcatへ渡す場合は、
JkMount /-.jsp ajp13
特定のディレクトリへのリクエストをtomcatへ渡したい場合は、
JkMount /hogehoge/- ajp13
とすると、tomcatのhogehogeコンテキストへリクエストが渡される。
server.xml †
workers.propertiesでデフォルトのserver.xml設定にあわせて指定をしているので、特に変更する必要はない。
が、もしかしたら今後のバージョンによって指定の仕方が変わっている可能性があるので確認する。(現tomcatバージョン:6.0.14)
server.xmlの以下の場所を確認。おそらくAJP 1.3で探せば見つかるはず。AJP用のコネクタ。
<*-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
workers.propertiesで指定した
- worker.list
- worker.ajp13.port
- worker.ajp13.type
とマッチしているか確認。