Apache2.0.55とTomcatの連動

感想おまちしてます!

TomcatのWebサーバとしてApacheを利用するにはモジュールを組み込み、設定を行わなければならない。モジュールには「mod_jk」や「mod_jk2」などがある。

スポンサーリンク

仕組み

連携時の動きは以下のようになる。

  1. ユーザがあるアドレスにアクセス。普通ポートは80番。
  2. 80番で待ち受けていたapacheは、まずそのアドレスがconf/workers2.propertiesのなかで設定されているアドレスと一致するか調べる。一致していたら処理をtomcatに渡し、一致していなかったらapacheだけで処理する。
  3. apacheがtomcatに処理を渡した場合は、tomcatはそのアドレスがconf/web.xmlや、webapps以下のフォルダのWEB-INF/web.xmlを調べて、一致するものを探す。一致したら、指定してあるservletを実行する。

つまり、サーブレットを動かしたい場合は、動かしたいファイルがおいてあるフォルダのweb.xmlに、servletのクラス名とアクセスのされ
る呼び出し名の組を書きこんでおき、さらにその呼び出し名をworkers2.propertiesに設定するという感じとなる。

くわしくはjk2などのドキュメントがjakartaで翻訳されているのでそちらを。

手順

mod_jkの場合

Apache.orgダウンロードページを表示する。
「JK 1.2 Binary Releases」からmod_jkをダウンロードする。

Apache2をインストールしたディレクトリにある「modules」フォルダに「mod_jk-apache-2.0.XX.so」をコピーする。

コピーした.soファイルを「mod_jk.so」にリネームする。
他の解説サイトでは「.dll」などになっている場合もあるが、Linux用のモジュールファイルである「.so」拡張子になっていても気にしなくていい。

httpd.confにコピーしたモジュールの設定を記述する。

LoadModule jk_module modules/mod_jk.so
  • Apache2.0.55とTomcat5.5の連携ではmod_jkは使えない模様。
  • httpd.confの最終行に記述しないと動かないApacheもあるらしい

mod_jk2の場合

Apache.orgダウンロードページを表示する。
「JK 2 Binary Releases」からmod_jkをダウンロードする。

Apache2をインストールしたディレクトリにある「modules」フォルダに「mod_jk2.so」をコピーする。

httpd.confにコピーしたモジュールの設定を記述する。

LoadModule jk2_module modules/mod_jk2.so
  • httpd.confの最終行に記述しないと動かないApacheもあるらしい

workers2.properties

workers2.propertiesを作成し、Apache2の「conf」フォルダに配置する。

// workers2.properties
[status:]
[uri:/jkstatus/*]
group=status:
[shm:]
disabled=1
[channel.socket:localhost:8009]
[ajp13:]
[uri:/servlets-examples/*]

確認

Tomcat > Apacheの順番で起動する。

ApacheのHTTPポートが80の場合、以下のアドレスにブラウザよりアクセスする。

http://localhost:80/servlets-examples/

これでTomcat内のWebアプリである「servlets-examples」が表示されればOK。ApacheのポートでTomcatにアクセスできることがわかるはず。

TomcatのWebサーバ機能の停止

ApacheががんばってくれるのでTomcatの8080サービスを停止する。server.xmlの以下の部分をコメント化する。

<!--<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />-->
<!-- Note : To disable connection timeouts, set connectionTimeout value
to 0 -->