mod_jk (or mod_jk2) を利用した Apache と Tomcat の連携方法メモ。
Apache 2.0.54 + Tomcat 5.0.28 + mod_jk 2.0.4-3 編
mod_jk2 は開発が終了 (http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jk2/news/20041100.html#20041115.1 参照)してるのだが、パッケージで入れられたので、そのまま使う。環境は以下の通り。設定ファイルの位置等は Debian 固有の物もあるので、要注意。
OS | Debian GNU/Linux 3.1 (aka sarge) |
Apache | 2.0.54 (package installed) |
Tomcat | 5.0.28 (manual installed) |
mod_jk | 2.0.4-3 (package installed) |
設定
通常と異なり、package install した apache は設定ファイルが分散している。編集、作成が必要なのは以下の二つ。
- /etc/apache2/mods-available/jk2.conf
works2.properties を指定する、以下の行をコメントアウト。
JkSet config.file /etc/apache2/workers2.properties
基本的にはこれだけでよい。mods-enabled にも同名のファイルがあるが、それはこのファイルへのシンボリックリンクなので、特に編集の必要はない。また module の load は同ディレクトリにある jk2.load にて行われるので、ここでその記載は必要ない。
- /etc/apache2/workers2.properties
上記のファイルで指定した場所に workers2.properties を作成。といっても、/usr/share/doc/libapache2-mod-jk2/examples/workers2.properties.minimal をコピーしてくるだけでよい。
が、ここに罠がある。実際に ajp にて転送する uri の指定が、コピー元だと
[uri:/admin]
などとなっているが、これは
[uri:/admin/*]
の間違い。実際に自分で転送したい URI に対しても
[uri:/app/* ]
とする必要がある。
その他の部分は動かすためには特に必要ない。/admin や /manager を使いたくなければ、設定項目から外してもよいし、管理用にアクセス制御するのであれば、上記の jk2.conf などに Location ディレクティブを使って、制限を記載してもよい。
<Location /admin/*> Order allow,deny Allow from 192.168.0.0/255.255.255.0
また、デバッグ用に jk2 のステータスがみたければ、以下を追記。
[status:] [uri:/jkstatus/*] group=status:
その他 tomcat は apache からのリクエストしか受け付けないのであれば、server.xml の 8080 のコネクタの部分をコメントアウトしておく。
参考
http://park15.wakwak.com/~unixlife/java/tomcat-mod_jk2.html
-
-
- -
-
Apache 2.0.52 + Tomcat 5.0.28 + mod_jk 1.2.10 編
Solaris の場合、mod_jk は binary 版が提供されていないので、src から build をする。
make の際に、OS Bundle の apxs 等を使うので、その点には注意。環境は以下の通り。
OS | Solaris 10 03/05 |
Apache | 2.0.52 (OS bundled) |
Tomcat | 5.0.28 (manual installed) |
mod_jk | 1.2.10 (src compiled) |
mod_jk のコンパイルからインストールまで
OS Bundle の apache2 (apxs) を利用する場合、コンパイラが gcc だとビルドフラグにひっかかってしまう。対処方法としてはhttp://forum.sun.com/jive/thread.jspa?threadID=96761 にあるように
- gcc で apache2 をビルドし、インストールする
- SunStudio をインストールし、gcc ではなく、Sun Compiler を利用する
- Makefile から、gcc にないビルドフラグを取り除く
となる。ここでは無償化された SunStudio11 (http://jp.sun.com/products/software/tools/studio/) をインストールしてビルドする。
手順は以下の通り。
- コネクタのソースを展開し、jk/native ディレクトリに移動
- configure を実行
# MAKE=gmake CC=cc ./configure --with-apxs=/usr/apache2/bin/apxs
- make の実行
# gmake
- インストール
# gmake install
設定
編集及び作成するのは以下の二つのファイル。
- /etc/apache2/httpd.conf
jk 用の設定は以下の通り。JkMount の二番目の引数は workes.properties で設定する worker.list の中の worker 名を指定する。
LoadModule jk_module libexec/mod_jk.so <IfModule mod_jk.c> JkWorkersFile /etc/apache2/workers.properties JkLogFile /var/apache2/logs/mod_jk_log JkLogLevel info JkMount /manager/* worker1 JkMount /app/* worker1 </IfModule>
- /etc/apache2/workers.properties
最低限の設定は以下の通り。
workers.tomcat_home=/usr/local/tomcat workers.java_home=/usr/java worker.list=worker1 worker.worker1.port=8009 worker.worker1.host=localhost worker.worker1.type=ajp13