通常、開発時にはTomcatをHTTPサーバ機能付で利用すると思いますが
リリース時にはこの機能を無効にしたい場合があります。
リリースサーバには既にApacheなどのHTTPサーバが存在するので
HTTP機能に関してはそちらを使った方がパフォーマンスが良いし
無駄も無いからです。
こういった事をする場合、ApacheとTomcatを連携させる必要があります。
つまり…
http://host/sample/index.html … Apacheサーバで公開されるファイル http://host/somewebapp/servlet … Tomcatサーバで公開されるコンテンツ
このように、アクセスしてきたURLによって向け先を変える必要が出てくるのです。
これには mod_jk というApacheのライブラリを使います。
ここら辺のページ からmod_jkのソースやバイナリをダウンロードできます。
バイナリを作成もしくは入手したら、$APACHE_HOME/modules/mod_jk.so にコピーしましょう。
以前は mod_jk2 というライブラリも存在して紛らわしかったのですが 現在は 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 ファイルを作成して
そこに詳しい設定内容を記述します。
リファレンスは、ここ などを参照して下さい。