Tomcatとの連携
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です。