Linux で自宅サーバ [ Home Server Techncial ]

>>トップページに戻る

 Tomcat と Apache の連携

Tomcat はそれ単体でも Web サーバとして機能を持っていますが、以下の理由で Apache との連携が推奨されています。

  1. 静的なページに関して Tomcat は Apache ほど速くありません。
  2. Tomcat は、Apache ほど 細かな設定ができません。
  3. Tomcat は、Apache ほど 頑強ではありません。
  4. Tomcat は、 Apache のモジュール(例 Perl, PHP, その他)でしか提供していない機能に対する多くのサイトの要望に答えられないかもしれません。

そして、連携に際し必要な作業は以下に示す通りです。

  1. Apache の httpd.conf ファイルの修正。
  2. Web サーバアダプタのインストール。
  3. Tomcat の server.xml ファイルの修正。

情報元:The Jakarta Project Tomcat とApache の連携方法

しかし、この Apache と Tomcat の連携方法も何通りも紹介され、どれが正しいか分からないのが現状です。
しかも、Apache のバージョンと Tomcat のバージョンによって設定方法が違うのも事実です。
当サイトは前提条件として、以下の事を示します。

ページ内コンテンツ一覧

▲ページの最上部に戻る

 Apache 設定ファイル( httpd.conf )の修正

Apache・Tomcat の連携の手順その1。Apache の httpd.conf を設定します。

httpd.conf をエディタで開きます( Vine Linux のデフォルトでは /etc/httpd/conf/httpd.conf になります )。

以下を追加します。

 
194 行目付近 : # でコメントアウトされた LoadModule 文が並んでいる後ろ
追記文 LoadModule webapp_module modules/mod_webapp.so
242 行目付近 : # でコメントアウトされた AddModule 文が並んでいる後ろ
追記文 AddModule mod_webapp.c
ファイル最後部
追記文 <IfModule mod_webapp.c>
WebAppConnection warpConnection warp localhost:8008
WebAppDeploy myjava warpConnection /myjava/
WebAppInfo /webapp-info/
</IfModule>

上記、赤文字部分の「 myjava 」は Tomcat のインストールディレクトリにある JSP ファイルを置くディレクトリになります。
このディレクトリは任意で指定できますが、複数の指定はできません。
任意のディレクトリではありますが、$CATALINA_HOME/webapps 内に配置されているディレクトリじゃないと正常に動作しない様です。

上記は、$CATALINA_HOME/webapps/myjava ディレクトリが既に存在・動作しているの仮定しています。

myjava ディレクトリの作成方法は、Tomcat の Servlet 格納ディレクトリを作成で解説しています。

httpd.conf を編集し終わったら保存して終了します。

▲ページの最上部に戻る

 Web サーバアダプタのインストール

実はこの作業が一番簡単なのですが、一番「?」な部分です。

Apache とTomcat の連携は、mod_webapp を使用します。
この mod_webapp は Jakarta Project からリリースされていますが、Tomcat のバージョン毎に用意されてはいません。

v4.0.6 用の mod_webapp が見当たらないので、v4.0.3 の所にあった mod_webapp を使用します。

http://jakarta.apache.org/builds/jakarta-tomcat-4.0/archives/v4.0.3/bin/linux/i386/
から mod_webapp.so をダウンロードします。

ダウンロードしたファイルをそのまま、/usr/lib/apache ディレクトリ内( Vine Linux デフォルトの場合 )にコピーします。

これで、インストール(?)は終了です。

このモジュールは tomcat 3.x では mod_jk というものが用意されていましたが、tomcat 4.x からは mod_webapp という新しいコネクタが利用できますので、今回はこの mod_webapp を利用します。 (ただし、Apache 2.0 と連携させる場合にはこの mod_webapp ではなく mod_jk が必要になるようです。)

▲ページの最上部に戻る

 Tomcat 設定ファイル( server.xml )の修正

いよいよ最後の設定項目です。今度は、Tomcat 側の設定です。
server.xml をエディタで開きます。( $CATALINA_HOME/conf ディレクトリ内にあります。)

server.xml の約 80 行目にある Connector 宣言部分を一部コメントアウトします。「 8080 」で検索するとすぐです。

<!--
    <Connector className="org.apache.catalina.connector.http.HttpConnector"
    port="8080" minProcessors="5" maxProcessors="75"
    enableLookups="true" redirectPort="8443"
    acceptCount="10" debug="0" connectionTimeout="60000"/>
-->

以上です。次に動作確認をします。

▲ページの最上部に戻る

 Apache+Tomcat の動作確認

まず、Tomcat・Apache とも起動しているのであれば、両方終了します。

Tomcat を起動させます。(必ず Tomcat を先に起動させます!)
Tomcat が完全に起動するまで待ちましょう。HDD のガリガリ音がなくなればOK!です。
完全に Tomcat が起動しない状態で Apache を起動させると連携が失敗する時があります。

Tomcat が完全に起動したら Apache を起動させます。

両方が正常に起動したら、「http://ドメイン名/webapp-info/ 」を見てみます。

[ 図T-002 webapp-info 画面 ]

図T-002 webapp-info 画面

図T-002 において、上部の表の「Deployed」が「TRUE」になっている事を確認します。
続いて下部の表の最下部「Configuration Details」中に「(Connected)」になっている事を確認します。
これらの確認がOKならApacheとtomcat連携は正常です。もし「FALSE」や「Not Connected」になっているとNGです。設定を見直して下さい。

これで連携は出来ました(出来ているハズです)、

上記例で言えば、http://ドメイン名/myjava/servlet/HelloWorld でアクセスできるハズです。
今までの様に、「 :8080 」などのポート番号の指定は不要になります。

以上で、Apache と Tomcat は連携して動作します。一応下記にイメージ図を載せておきます。

[ 図T-003 Apache+Tomcat 連携イメージ ]

図T-003 Apache+Tomcat 連携イメージ

▲ページの最上部に戻る

Copyright© Home Server Technical. All Right Reserved.
webmaster@miloweb.net