minimize

事業拡大のため、新しい仲間を募集しています。
→詳しくはこちら

通常、開発時にはTomcatをHTTPサーバ機能付で利用すると思いますが
リリース時にはこの機能を無効にしたい場合があります。

リリースサーバには既にApacheなどのHTTPサーバが存在するので
HTTP機能に関してはそちらを使った方がパフォーマンスが良いし
無駄も無いからです。

こういった事をする場合、ApacheとTomcatを連携させる必要があります。
つまり…

http://host/sample/index.html … Apacheサーバで公開されるファイル
http://host/somewebapp/servlet … Tomcatサーバで公開されるコンテンツ

このように、アクセスしてきたURLによって向け先を変える必要が出てくるのです。

mod_jkのインストール

これには mod_jk というApacheのライブラリを使います。
ここら辺のページ からmod_jkのソースやバイナリをダウンロードできます。
バイナリを作成もしくは入手したら、$APACHE_HOME/modules/mod_jk.so にコピーしましょう。

以前は mod_jk2 というライブラリも存在して紛らわしかったのですが
現在は mod_jk に統一されています。

mod_jkの設定

まずはApacheの設定ファイル、httpd.conf を編集します。

<IfModule !mod_jk.c>
  LoadModule jk_module "/usr/local/apache2/modules/mod_jk.so"
</IfModule>

↑この記述をファイルのなるべく早め(具体的に言えばListenの次あたり)に追記します。

あとは、TomcatでデプロイしたWebアプリ名(正確にはコンテキスト名)を
以下の要領で httpd.conf に追記します。

JkMount /somewebapp ajp13
JkMount /somewebapp/* ajp13

こうすると、

http://host/somewebapp/XXX

に関してはTomcatサーバに処理が移り
それ以外のURLに関しては通常通りApacheに処理が移ることになります。

より細かい指定

ここでは非常にシンプルな方法を紹介しましたが
mod_jkにはもっと細かい指定もできます。

例えば、Tomcatサーバを2つ用意してURLによって行き先を切り替えたり
ロードバランシングと言って複数のアクセスを別サーバ上のTomcatに振り分けたりする
機能もあります。

ここでは詳しく説明しませんが、とりあえずやり方だけ。
以下の一文を httpd.conf に追記します。

JkWorkersFile /usr/local/apache2/conf/workers.properties

先ほどの例ではこの記述が無くても動いたのですが
それは mod_jk がデフォルトの設定ファイルを用意してくれているからです。

あとは、workers.properties ファイルを作成して
そこに詳しい設定内容を記述します。
リファレンスは、ここ などを参照して下さい。