Windows2000 + Tomcat + Apaceh 連携 パート4 / 連携メモ(2002/11/30) 
 

Tomcat + Apache 連携

Tomcat を Apache 連動するメリットは、Tomcatでも httpサーバ機能をもっているが Apache 程の利便性(アクセス処理や設定の柔軟性)がないことから行います。このため Tomcat は Apache の後ろでサーブレットエンジンとしてのみ動作させる手法が一般的です。

また連携を行う事によりデメリットもあります。「画像が表示されない/サーブレット、JSP が実行されない/ページの表示が極端に遅い」の現象があるため商用利用を行う場合は、別途考慮が必要となる場合があります。

  J2EE 1.3.1 を日本語化する

連携手順(Apache編)

1.Tomcat を Apache 連動するには「webapp-module」を使用します。Jakarta プロジェクトから「webapp-module-1.0-tc40-windows.zip」をダウンロードしてきます。

2.ダウンロードしてきたwebapp-module-1.0-tc40-windows.zip」を解凍し、Apache の modulesディレクトリにコピーします。

C:\>copy mod_webapp.so "C:\Program Files\Apache Group\Apache\modules"
C:\temp>copy libapr.dll "C:\Program Files\Apache Group\Apache\modules"

3.httpd.conf ファイルに以下の記述を追加します。(デフォルトのインストール先 C:\Program Files\Apache Group\Apache\conf の下にあります)

LoadModule webapp_module modules/mod_webapp.so
AddModule mod_webapp.c

<IfModule mod_webapp.c>
   WebAppConnection warpConnection warp localhost:8008
   WebAppDeploy examples warpConnection /examples/
   WebAppInfo /webapp-info/
</IfModule>

※ こういった定義ファイルを修正する場合、元の設定情報が判らなくなってしまうので必ずバックアップを取っておくこと。

連携手順(Tomcat編)

1.Tomcat の HTTPサーバ機能の停止と、Apache からのリクエストを Tomcat で実行させるための連携を行います。

2.まずは、Tomcat の HTTPサーバ機能(8080ポート)を停止させるため、server.xml ファイルの以下の記述部分をコメント化します。(デフォルトのインストール先 C:\Program Files\Apache Group\Tomcat 4.1\conf の下にあります)

<!-- Define a non-SSL Coyote HTTP/1.1 Connector on port 8081 -->
<!-- mura comment
   <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
      port="8080" minProcessors="5" maxProcessors="75"
      enableLookups="true" redirectPort="8443"
      acceptCount="10" debug="0" connectionTimeout="20000"
   useURIValidationHack="false" />
-->

3.今度は、Apache からのリクエストを処理させるため、server.xml ファイルのコメント記述部分を削除します。

<!-- mura comment-del -->
<Service name="Tomcat-Apache">
   <Connector className="org.apache.catalina.connector.warp.WarpConnector"
      port="8008" minProcessors="5" maxProcessors="75"
      enableLookups="true" appBase="webapps"
      acceptCount="10" debug="0"/>
   <Engine className="org.apache.catalina.connector.warp.WarpEngine"
      name="Apache" debug="0">
      <Logger className="org.apache.catalina.logger.FileLogger"
         prefix="apache_log." suffix=".txt"
         timestamp="true"/>
      <Realm className="org.apache.catalina.realm.MemoryRealm" />
   </Engine>
</Service>

4.最終的な結果ファイルは、こんな感じ「server.xml」です。

修正個所が判るように、自分の名前や修正時間を入れておきましょう。

確認手順

1.マシンを再起動した方が変な動作が発生せず良いです。マシン再起動後に「Tomcat → Apache」の順で起動させます。

2.Tomcat の HTTP機能が停止していることを確認します。「http://localhost:8080」と実行してエラー画面が表示されれば okです。

3.「Tomcat と Apache」の連携が出来ていることを確認します。「http://localhost/webapp-info/」と実行して、Deployed 項目が TRUE と表示されている事を確認します。ここが FALSE となっていたり、Configuration Details 欄に(Not Connected)と表示されていたりする場合は、連携に失敗しています。再度手順を確認してください。

※ Host が 127.0.0.1 となっていることを確認します。何故かというと Tomcat は、Apache からリクエストされた時に Apacheの httpd.conf ファイル上の ServerName と リダイレクト先を結合しアクセスします。なので、httpd.conf の ServerName には、「127.0.0.1」か、実サーバのFQDN を指定します。 

4.「http://localhost/examples/servlets/index.html」にアクセスし、サンプルが正しく実行できることを確認します。(画像のアイコンが表示されない事がありますが、これが問題のデメリットです)