Tomcat と Apache の連携

Updated : 2005/11/01     
    [Top] --> [書庫3] --> TomcatとApacheの連携 


連携の図
Tomcat と Apache 連携の図

■ このページでは Tomcat と Apache を連携する手順を説明します
  Tomcat はJava Servlet/JSPに対応した Webアプリケーションサーバーです。 Tomcat には、設定や管理用のHTTPサーバーが内蔵されていて動作確認には便利です。しかし、一般的なクライアントからのリクエストを処理する場合は、Web サーバーの Apache と連携させて機能分担すると利点があります。このページでは、WindowsXP/Pro にすでにインストール済みの Tomcat-5.0.28 と Apache-2.0.55 の両者を、Apache Connector jk2 を利用して連携させる手順を説明します。
■ ページのメニュー 
    1. 前準備 
    2. コネクタ Cyote JK2 のダウンロード 
    3. Apache2 の設定 
    4. Tomcat の設定 
    5. Tomcat-Apache の連携と確認 
    6. メモランダム 


 前準備

 ■ Apache を Tomcat に連携する利点

Tomcat は単体でHTTPサーバー機能も備えていますがApache と連携させると利点があります。
  1. 動的なコンテンツ処理はTomcatで処理し、HTML など静的コンテンツはApacheでというような分担処理ができる。
  2. Tomcat ではできない細かなセキュリティー対策やアクセス制限が Apache 側でできる。
  3. Apache に複数台の Tomcat を接続して負荷分散をすることもできる。
 ■ Tomcat  と Apache の連携のしくみ

Tomcat と Webサーバー Apache2の連携には JKコネクター( Coyote JK2)推奨されています。
現在 IIS、Apache、iPlanet などのWebサーバーに対応したコネクターが用意されています。
ここでは Apache2 とJKコネクターを利用した連携の手順を説明します。

● Webサーバーに Apache2 を利用した場合の処理の流れ

  1、クライアントが Apache にリクエストを送る。
  2、Apache がクライアントからリクエストを受け取ると、コネクタを介して Tomcat に転送する。
  3、Tomcat ではリクエスト( Webアプリケーション ) を実行し、実行結果を再びコネクターを介してApache に転送する。
  4、Apache は受け取った実行結果をクライアントに返す。

Tomcat-Apache 連携図解
 ※ JKコネクターでの通信は AJP 1.3 というプロトコルを利用します。

 ■ 必要なもの

 アイテ ム
 今回実 装したもの
 Apache サーバー  Apache-2.0.55 Windows版
 Tomcat-4.x  以降  Tomcat-4.0.28
 JK2 コネクター  jakarta-tomcat-connector- jk2.0.4
 PC
 Pentium4/1.7GHz 512MB
 OS
 WindowsXP/Pro SP2
  ※ Apache の基本的な説明は省略します。



 コネクタ Cyote JK2 のダウンロード

 1、Tomcat と Apache を連携させる mod_jk2 を Jakarta-Tomcat の公式サイトからダウンロードする。

Jakarta-Tomcat 公式サイト : http://tomcat.apache.org

Apache Tomcat 公式ページ

Windows 版 JK2 は以下の JK2 Binary Releas のカテゴリーからダウンロースする

JK2 コネクターのバイナリーからWindows用をダウンロードする。

ダウンロードするファイル : jakarta-tomcat-connector-jk2.0.4-win32-apache2.0.49.zip
 ※ JK2 は Tomcat と Apache のバージョンに対応したファイルを注意深く選んでください。




 Apache2 の設定

 Apache2 側の設定は、モジュール、mod_jk2 をインストールして httpd.conf に適切な設定を追加することです。

 1、ダウンロードしたファイルを解凍し、mod_jk2 を Apache2 下のディレクトリ modules/ にコピーする

mod.jk2 をコピーする。

 2、設定ファイル workers2.properties を作成する

Apache2 下のディレクトリ conf/ に以下の内容のテキストファイル作成し workers2.properties というファイル名で保存する。
この設定により Apache への接続は Tomcat のディレクトリ /servlet-exsamples/に転送されます。
また、ディレクトリ /jkstatus/ に JK2 のステータスを返します。


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

 
 3、設定ファイル httpd.conf に mod_jk2 と workers2.properties を読み込ませる設定を追加する
・ モジュール mod_jk2.so の設定を追加する。
・ 設定ファイル workers2.propaties のパスを変更します。


LoadModule jk2_module modules/mod_jk2.so

<IfModule mod_jk2.c>
    #-----------------------------------------------
    # Where to find the workers2.properties file
    #-----------------------------------------------
    #
    #JkSet config.file /usr/local/etc/apache2/workers2.properties
    JkSet config.file "C:/Apache2/conf/workers2.properties"
</IfModule>

 ※ 上記の設定サンプルがダウンロードしたファイル conf/mod_jk2.conf  にあります。

 4、設定後 Apache を再起動させて設定が有効になったことを確認する

ブラウザーより、URL : http://localhost/jkstatus をアクセスして次の画面が見えればコネクターの設定は成功です。

mod_jk2 のステータスモニター画面。

 設定ファイル workers2.properties に記述した事項が正しく反映されていればApache 側の設定は成功です。
 この画面が見えない場合は、httpd.conf での mod_jk2 の設定に問題があります。手順を再点検してください。



 Tomcat の設定

 Apache 側との接続を仲立ちする Tomcat 側の JK2 コネクターはTomcat 自体に内臓されています。
Tomcat を起動するとJK2 コネクターがデフォルトのままで使用可能になります。
そのため、Apache の設定ファイルに追加された記述にしたがって接続して連携できます。
今回は連携させるだけなので Tomcat 側はデフォルト設定のままで変更しません。

● コネクターの設定ファイルは server.xml

 Tomcat の設定設定は ファイル CATALINA_HOME/conf/server.xml に記述されています。

    --------  途中を省略 ----------

- <Service name="Catalina">
  <Connector acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" port="8080" redirectPort="8443" maxSpareThreads="75" maxThreads="150" minSpareThreads="25" />
  <Connector port="8009" protocol="AJP/1.3" protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler" redirectPort="8443" />
- <Engine defaultHost="localhost" name="Catalina">
- <Host appBase="webapps" name="localhost">
  <Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_log." suffix=".txt" timestamp="true" />
  </Host>
  <Logger className="org.apache.catalina.logger.FileLogger" prefix="catalina_log." suffix=".txt" timestamp="true" />
  <Realm className="org.apache.catalina.realm.UserDatabaseRealm" />
  </Engine>
  </Service>

 ※ サーバーとして運用する場合、マシンのパワーに応じてこの最大スペア数やスレッド数を調整します。




 Tomcat-Apache の連携と確認

 ■ 連携するには起動順序がポイント

上記の設定終了後、両者を連携させるためには次の順序で起動させます。
  1. Tomcat を起動させる。
  2. Apache を起動させる。
この起動順序を逆にすると連携できないので注意すること。
また、Tomcat を運用・管理していて再起動する場合は、そのあとで必ず Apache を再起動させます。

 ■ 連携の確認

ブラウザーで workers.propaties で設定した次の Tomcat 側のディレクトリが80番ポートで見えれば連携は成功です。

 URL : http://localhost/servlets-examples/

80番ポートでTomcatの画面が見えれば連携は成功です。
 Apache からの転送先ディレクトリを変更する場合は、workers.propaties の設定を変更してください。

● 上記の画面が見えない場合は次の事項を確認してください。
  1. 再度 「Tomcat の再起動」 --> 「Apache の再起動」の順番で再起動する。
  2. workers.propaties の設定を確認する。
● Tomcat の管理画面には今までどうり 8080 番ポートから接続できます。



 メモランダム 

Tomcat は 2005年9月をもって Jakarta Project から Apache Project に格上げされました。熱心な開発チームのおかげで、それまでのバージョンアップでは改善や多くの機能拡張がされてき ました。その結果、Tomcat のバージョンと対応する Servlet/JSP バージョンには依存関係があります。
Tomcat を利用するする場合は、連携させるソフトウェアのバージョンとの依存関係に注意して適切なバージョンを選んでください。またコネクターJK2 についても同様の注意が必要です。





もどる もどる  [Top] --> [書庫3] --> TomcatとApacheの連携