開発環境を構築する(Windows Tomcat 5.5編)

開発環境を構築するシリーズまとめリンク

開発環境を構築する(Windows版PHP4編) - ぱせらんメモ
開発環境を構築する(Windows版PHP5編) - ぱせらんメモ
開発環境を構築する(Windows Apache2.0編) - ぱせらんメモ
開発環境を構築する(Windows Apache2.0編)その2 - ぱせらんメモ
開発環境を構築する(Windows Tomcat 5.5編) - ぱせらんメモ


今回はPHPとは関係ないが、何故か「開発環境を構築する」シリーズの予定に入っていたので紹介。
ちなみにWindowsTomcatは使っていないので、まったくの適当だ!(ぉぃ


TomcatApacheの連携を行うところまでを紹介するが、Tomcatの詳しい設定については省略させていただく。というか詳しいことは分からない。

0.Javaのインストール

TomcatJavaでできているので、実行にはJavaランタイムが必要になる。
Java SE Downloads(Sun)からダウンロードして事前にインストールしておく。

1.インストーラの入手とインストール

Tomcatには3〜6までのバージョンがあるが、現在の主流は5.5となっている(6.xはbeta)。
公式サイトからTomcat 5.5.xのWindows版を落としてくる。
Binary Distributionsの「Windows Service Installer」というやつだ。


実行するとインストーラが立ち上がるので適当にインストールする。
「Select the type of install」はFullFullからNativeを外すあたりにしておくとよいかと。このあたりはお好み次第。


インストール先はApacheに合わせてC:\Apache Group\Tomcat 5.5にしたが、これもお好み次第。デフォルトでも構わない。
次の「Tomcat basic configuration」はデフォルトでよいだろう。気になるようであれば「Administrator Login」を変更しておいてもよい。
最後にJava Virtual Machineの場所を要求してくるが自動検出されたパスで問題ない。複数のJava環境をインストールしてある場合は、お好みのものを選択すればよい。


インストールが完了して、最後に「Run Apache Tomcat」にチェックを入れたままインストーラを終了するとTomcatが起動する。
Tomcatが起動した状態でブラウザから[]http://localhost:8080/[]にアクセスすると、「If you're seeing this page via a web browser, it means you've setup Tomcat successfully. Congratulations」というページが表示される。


タスクトレイにApacheの時と同じようなサービス管理プログラムが表示され、ここからTomcatの起動/停止や、設定の変更などが行えるようになる。

2.mod_jk

TomcatApacheを連携させるにはいくつかの方法があるが、ここでは現在の主流である(と思われる)mod_jkを利用してみる。

2-1.mod_jkのインストール

mod_jkは先ほどのTomcatの公式サイトからダウンロードできる。
左側のメニューを「Download」「Tomcat Connectors」と辿っていくといくつか種類が出てくるので、「JK 1.2 Binary Releases」を選択する。
するといきなり無骨なディレクトリインデックスが出てくるので適当に選ぶ。「win32/jk-1.2.x/mod_jk-apache2.0.x.so」というファイルがApache用のモジュールになる。
バージョンは自分の環境に合わせて選ぶ必要がある。Apacheのバージョンが最新版に追いついてないこともあるが、直近のものを選べば恐らく動くと思われる。
続いて「JK 1.2.x Source Release」のほうもダウンロードしておく。バイナリはモジュールファイル単体なので、ソースディストリビューションから設定ファイルを拝借する。


ダウンロードしたファイルをmod_jk.soというファイル名にリネームしてApacheのモジュールディレクトリにコピーする。
前回のインストール環境を例に挙げるとC:\Apache Group\Apache2\modulesディレクトリとなる。

2-2.mod_jkの設定

mod_jkのソースを展開すると、conf\workers.propertiesというファイルがあるので、これをApacheの設定ディレクトリ(httpd.confがあるディレクトリ)にコピーし、内容を以下のように書き換える。
以下は変更点の抜粋。インストールパスなどは今回及び前回のものとする。違う場所にインストールした場合は適宜読み替える。

#
# workers.tomcat_home should point to the location where you
# installed tomcat. This is where you have your conf, webapps and lib
# directories.
#
#workers.tomcat_home=/var/tomcat3
workers.tomcat_home="C:\Apache Group\Tomcat 5.5"

#
# workers.java_home should point to your Java installation. Normally
# you should have a bin and lib directories beneath it.
#
#workers.java_home=/opt/IBMJava2-13
workers.java_home=C:\Java\jdk1.5.0_09

#
# You should configure your environment slash... ps=\ on NT and / on UNIX
# and maybe something different elsewhere.
#
ps=\
                :
                :
#
# The JVM that we are about to use
#
# This is for Java2
#
# Windows
worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)bin$(ps)classic$(ps)jvm.dll
workers.tomcat_home
Tomcatのホームディレクトリ。
workers.java_home
Javaのホームディレクトリ。環境変数JAVA_HOMEに指定するものと同じ。
ps
パスセパレータ(ディレクトリ区切り文字)。
worker.inprocess.jvm_lib
JVMの本体。

続いて同じ場所(httpd.confのあるディレクトリ)に、mod_jk.confというファイルを以下の内容で作成する。

<IfModule !mod_jk.c>
    LoadModule jk_module "modules/mod_jk.so"
</IfModule>

# Where to find workers.properties
JkWorkersFile "/Apache Group/Apache2/conf/workers.properties"

# Where to put jk logs
JkLogFile     "/Apache Group/Apache2/logs/mod_jk.log"

# 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"

JkMount /servlets-examples ajp13
JkMount /servlets-examples/* ajp13

JkMount /webdav ajp13
JkMount /webdav/* ajp13

JkMount /jsp-examples ajp13
JkMount /jsp-examples/* ajp13

JkMount /balancer ajp13
JkMount /balancer/* ajp13

JkMount /host-manager ajp13
JkMount /host-manager/* ajp13

JkMount /tomcat-docs ajp13
JkMount /tomcat-docs/* ajp13

JkMount /manager ajp13
JkMount /manager/* ajp13
JkWorkersFile
先ほどのworkers.propertiesファイルのパスを指定する。
JkLogFile
mod_jkのログファイルの位置を指定する。
JkLogLevel
ログレベルを指定する。
JkMount
Tomcatに転送するURLを指定する。

上記はTomcatに最初から入っているWebアプリケーションを全て割り当てているので、自分の環境に合わせて適宜変更する。


以上の設定を済ませてTomcatApacheの順番でサーバを起動する。
最近は逆の順番で起動しても大丈夫なようだが、一昔前は順番で起動するとApacheが接続すべきTomcatが起動していないためか上手くいかないことがあったので注意。
サーバが起動したら[]http://localhost/servlets-examples/[](ポート8080ではないことに注意*1)などにアクセスし、Tomcatのコンテンツが表示されれば連携は成功。

2-3.Apacheのみでリクエストを受け付けるようにする

Apacheとの連携が済んだのでTomcat自身がポート8080で受け付ける必要がなくなった。
無駄にリソースを消費する必要もないのでApacheとの連携でのみリクエストを処理するようにTomcatの設定を変更する。
開発状況によってはTomcat単体でアクセスしたいこともあるかもしれないので、その場合にはこの設定は行わず8080で受け付けるままにしておけばよい。


設定はTomcatのserver.xmlで行う。C:\Apache Group\Tomcat 5.5\conf\server.xmlとなる。
上から見ていくとという行があり、さらに下のほうに進むと以下のようなタグがあるので、これをコメントアウトする。

    <Connector port="8080" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" />

これを

<!--
    <Connector port="8080" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" />
-->

こんな感じでコメントアウトする。


Tomcatを再起動して[]http://localhost:8080/servlets-examples/[]にアクセスしても繋がらなければポート8080による待ち受けは行われなくなっている。
さらに[]http://localhost/servlets-examples/[]にアクセスして、Apache経由でのアクセスの場合にだけコンテンツが表示されればよい。


以上でとりあえずの環境構築は完了とする。
Tomcat自体の細かい設定などは都合に合わせて設定すべし。

*1:デフォルトではTomcatはポート8080で自分自身がWebサーバとしてリクエストを受け付ける。