Tomcatとの連携

最終更新日時:2007-03-01 17:53:33
Apache

Tomcat は Java で書かれたサーブレットエンジンですが、これ単体でも Web サーバとしても機能します。
従って、必ずしも Apache が必要なわけではないのですが、サーブレットを使いたいという時に、既に Web サーバとして性能・信頼性共に実績のある Apache にサーブレットエンジンとして Tomcat を利用するパターンが多いようです。
ここでは、Apache と Tomcat については一通りインストール・設定が終わっているものとして話を進めます。

インストール


apache-1.3.x と Tomcat-4.1.27 の例です。(Tomcat-3.2.3 もだいたい同じ)

Apache を DSO 対応でビルドしておきます。
Tomcat は普通にインストールしてあればOKです。
Apache と Tomcat を連携させるには、connector と呼ばれるモジュールをインストールする必要があり、connector にはいくつか種類がありますが、ここでは mod_jk を使うことにします。
mod_jk のソースを The Jakarta Project より取得し、解凍、展開します。
展開したディレクトリの下の jk というディレクトリが mod_jk の connecter なのでここに移動し、さらにその下の native ディレクトリに移動して、以下のようにビルドを行います。

 % gzip -dc jakarta-tomcat-connectors-4.1.27-src.tar.gz |tar xvf -
 % cd jakarta-tomcat-connectors-4.1.27-src/jk/native
 % ./buildconf.sh
 % ./configure --with-apxs=/usr/local/apache/bin/apxs
 % make


--with-apxs=/usr/local/apache/bin/apxs 指定は apxs のパスの指定です。
make を行うと、apache-1.3 ディレクトリの下に mod_jk.so が作成されているので、これを /usr/local/apache/libexec 等(連携させる apache のモジュール置き場)にコピーします。
ちなみに、make install でもちゃんとインストールされますが、どうでもよさそうなものも一緒にコピーされるので、手動でコピーをおすすめします。

設定


既に Tomcat 単体での稼働が可能な状態であるとします。
workers.properties というファイルが connector のディレクトリの jk/conf ディレクトリにあるので、これを $CATALINA_HOME/conf/jk にコピーします。
workers.properties の中を編集します。
次に httpd.conf に追加する Tomcat と連携するための設定ファイルを作成します。
これは Tomcat を実行すると、Tomcat 自身が吐き出してくれるので、一度 Tomcat を実行します。
Tomcat を起動すると、auto/mod_jk.conf が自動的に作成されるので、これをコピーし、以下のように httpd.conf からインクルードします。

 Include /usr/local/tomcat/conf/mod_jk.conf


※Tomcat-3.2.3 では、conf/mod_jk.conf-auto という名前で自動作成されます。
※自動作成されない時には以下の設定を server.xml に追加します。

 <Listener className="org.apache.ajp.tomcat4.config.ApacheConfig" />


マウントポイントの追加等の必要があれば conf/mod_jk.confを修正します。

バランシング設定


mod_jk では2台以上の tomcat に対して負荷分散させること可能です。
以下の例では 192.168.0.1:8210 と 192.168.0.2:8210 に対して 50:50 にロードバランシングさせています。

 worker.list=balanced
 
 worker.b1.port=8210
 worker.b1.host=192.168.0.1
 worker.b1.type=ajp13
 worker.b1.lbfactor=50
 worker.b1.cachesize=10
 worker.b1.cache_timeout=600
 worker.b1.socket_keepalive=1
 worker.b1.socket_timeout=300
 
 worker.b2.port=8210
 worker.b2.host=192.168.0.2
 worker.b2.type=ajp13
 worker.b2.lbfactor=50
 worker.b2.cachesize=10
 worker.b2.cache_timeout=600
 worker.b2.socket_keepalive=1
 worker.b2.socket_timeout=300
 
 worker.balanced.type=lb
 worker.balanced.balanced_workers=b1,b2


動作確認


Tomcat を再起動させ、Apache を起動します。

 % bin/shutdown.sh
 % bin/startup.sh
 % su -
 # /usr/local/apache/bin/apachectl start


http://servername/examples/ で tomcat/webapps/examples のインデックスが表示され、その下にある jsp や servlet のサンプルがちゃんと動けばOKです。

お問い合わせは 掲示板 にて。