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:

その他 tomcatapache からのリクエストしか受け付けないのであれば、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 にあるように

  1. gcc で apache2 をビルドし、インストールする
  2. SunStudio をインストールし、gcc ではなく、Sun Compiler を利用する
  3. 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