LinuxでTomcatとApacheの連携

ApacheTomcatを連携させるためのモジュールをインストールします。

  1. Apache Tomcat Connector(src)のダウンロード
  2. ビルド&インストール
  3. propertiesファイルの設定
  4. server.xmlの設定
  5. mod_jkのApache2用設定ファイルの作成
  6. httpd.confの設定
  7. TomcatApacheの起動

jk2を使っていましたが、mod_jkのほうが品質がよい(Tomcat 質問集)とのことなので、Apache Tomcat Connectorを使います。
JKはApache HTTPd ServerやMicrosoft IIS、Sun Web ServeなどのWebサーバにも対応しています。

1.Apache Tomcat Connector(src)のダウンロード

The Apache Tomcat Connectorサイトからダウンロードするかwgetで直接入手。
サイトからダウンロードする場合は以下のリンクから。

TomcatのサイトからもDLできます。

# wget http://www.apache.org/dist/tomcat/tomcat-connectors/jk/source/jk-1.2.26/tomcat-connectors-1.2.26-src.tar.gz

2.ビルド&インストール

# tar zxvf tomcat-connectors-1.2.26-src.tar.gz 
# cd cd tomcat-connectors-1.2.26-src/native
# ./configure --with-apxs=/usr/sbin/apxs
# make
# make install

3.propertiesファイルの設定

インストールした先のconfディレクトリ以下にworkers.propertiesファイルがあります。これはTomcatプロセスのホストやポートを設定するためのテンプレートなので、Tomcatのconf以下にコピーして自分の環境にあわせて設定する必要がある。

propertiesファイルのコピー
# cp ../conf/workers.properties /usr/local/tomcat/5.525/conf/
workers.propertiesを編集

デフォルトの設定だと使えないので、最低限以下の箇所は環境に合わせて修正。

--tomcatインストールディレクトリの指定
workers.tomcat_home=/usr/local/tomcat/5.525
--Javaインストールディレクトリの指定
workers.java_home==/usr/java/jdk1.6.0_03
--jvm_libの設定
# Windowsで使用する場合は以下を有効にする
#worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)bin$(ps)classic$(ps)jvm.dll
# UnixやLinuxで使用する場合は以下を有効にする
worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)lib$(ps)i386$(ps)classic$(ps)libjvm.so

4.server.xmlの設定

Tomcatの設定ファイル(server.xml)を開き、以下のブロックをコメントアウトする

<!--
    <Connector port="8080" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" /> 
    <!-- Note : To disable connection timeouts, set connectionTimeout value
-->

5.mod_jkのApache2用設定ファイルの作成

mod_jk.xxxファイルは環境に合わせたhttpサーバと連携するための設定ファイルです。今回はApacheを使うので、Apacheの設定ファイルディレクトリにmod-jk.confを作成する。

#vi /etc/httpd/conf.d/mod-jk.conf
--mod-jk.confの内容はこんな感じで
# Load mod_jk module
LoadModule    jk_module  modules/mod_jk.so  ←インストールしたモジュールを指定
# Where to find workers.properties
JkWorkersFile /usr/local/tomcat/5.525/conf/workers.properties  ←Tomcatプロパティファイルを指定
# Where to put jk logs
JkLogFile     /var/log/httpd/mod_jk.log  ←connecterログ出力先
# Set the jk log level [debug/error/info]
JkLogLevel    info  ←ログレベルを指定
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "  ←ログファイルのタイムスタンプフォーマット
# JkOptions indicate to send SSL KEY SIZE,
JkOptions     +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat     "%w %V %T"

# Send JSPs  for context / to worker named ajp13
#.jspはTomcatで処理
JkMount /*.jsp ajp13
#/servlet-examples/以下(Tomcat付属のサンプルアプリ)はTomcatで処理
JkMount /servlets-examples/* ajp13
#全てのリクエストをTomcatで処理する
#JkMount /* ajp13

Automatic Application Deployment

6.httpd.confの設定

httpd.confの最終行に次の一行を追加

Include conf.d/mod-jk.conf

httpd.confの文法チェック

$ apachectl configtest  (もしくは -t オプション)
Syntax OK

7.TomcatApacheの起動

Tomcatの起動、Apacheの起動の順にそれぞれサービスを立ち上げます。

$ /etc/rc.d/init.d/tomcat start
$ /etc/rc.d/init.d/httpd start

サービスがそれぞれ立ち上がったらhttp://localhost/servlets-examples/などにアクセスし、アプリケーションが動くことを確認できればOK。