5.ApacheとTomcatを連携させる
Apacheは、Apache HTTP Serverプロジェクトが開発するオープンソースのWebサーバです。TomcatだけでもサーバサイドJavaの実習はできますが、Webサーバとしての機能は限定されているので、ApacheにはHTMLの処理、TomcatにはJSPとServletの処理と、役割を分担させてより効率のよいサーバとするのです。連携のためには、コネクタと呼ばれるモジュールをApacheのmodulesディレクトリに保存することと、Tomcatのwebappsディレクトリの内容をApacheに知らせるInclude文をApacheの設定ファイルhttpd.confに追加することをしなければなりません。
コネクタは用意されていればダウンロードしてインストールします。
http://jakarta.apache.org/builds/jakarta-tomcat-connectors/jk/release/v1.2.2/bin/win32/
から以下のコネクタをダウンロードします。
mod_jk-2.0.43.dll 11-Jan-2003 00:20 80K
このファイルを次のディレクトリにコピーします。
Apache2\modules\
■ mod_jk.confファイルの自動作成
httpd.confにIncludeするファイルは、Tomcatのwebappsフォルダの構成が変更されたらそれを反映しなければなりません。このため、tomcat4.1.18\conf\auto\ディレクトリにmod_jk.confと呼ばれるファイルが自動的に作成されるように次のような設定を行います。
C:\tomcat4.1.18\conf\server.xmlを開く
<Server port="8005" shutdown="SHUTDOWN" debug="0">の直後に次のタグを挿入する。
<Listener className="org.apache.ajp.tomcat4.config.ApacheConfig"
modJk="c:/Apache2/modules/mod_jk-2.0.43.dll" jkDebug="info"
workersConfig="c:/tomcat4.1.18/conf/jk/workers.properties"
jkLog="c:/tomcat4.1.18/logs/mod_jk.log"/>
<Host name="localhost" debug="0" appBase="webapps"
unpackWAR="true">の直後に次のタグを挿入する。
<Listener className="org.apache.ajp.tomcat4.config.ApacheConfig"
append="true"/>
上書き保存する。長い行でも途中で [Enter]を押さないで入力しないとエラーになります。
C:\tomcat4.1.18\confに「jk」というディレクトリを作り次の内容をworkers.propertiesというファイル名で保存する。
workers.tomcat_home=c:\tomcat4.1.18
workers.java_home=$(JAVA_HOME)
ps=\
worker.list=ajp13, ajp14
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
worker.ajp13.lbfactor=1
worker.ajp14.port=8010
worker.ajp14.host=localhost
worker.ajp14.type=ajp14
worker.ajp14.secretkey=secret
worker.ajp14.credentials=myveryrandomentropy
worker.ajp14.lbfactor=1
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=ajp13
worker.inprocess.type=jni
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)server$(ps)lib$(ps)catalina.jar
worker.inprocess.cmd_line=start
worker.inprocess.jvm_lib=$(workers.java_home$(ps)jre$(ps)bin$(ps)client$(ps)jvm.dll
worker.inprocess.stdout=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stdout
worker.inprocess.stderr=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stderr
保存する。
Tomcatを起動してみる。起動するごとに新しいmod_jk.confファイルが次のディレクトリに作られる。
C:\tomcat4.1.18\conf\auto\
この内容は次のようなものです。
########## Auto generated on Sat Nov 23 11:23:42 JST 2002##########
<IfModule !mod_jk.c>
LoadModule jk_module c:/Apache2/modules/mod_jk.dll
</IfModule>
JkWorkersFile "c:/tomcat4.1.18/conf/jk/workers.properties"
JkLogFile "c:/tomcat4.1.18/logs/mod_jk.log"
JkLogLevel info
<VirtualHost localhost>
ServerName localhost
JkMount /manager ajp13
JkMount /manager/* ajp13
JkMount /examples ajp13
JkMount /examples/* ajp13
JkMount /tomcat-docs ajp13
JkMount /tomcat-docs/* ajp13
JkMount /webdav ajp13
JkMount /webdav/* ajp13
</VirtualHost>
このmod_jk.confファイルのLoadModuleの引数は2つでなければならない。
しかし、パス名に空白のあるフォルダ名が入ると引数が2つより多く認識されエラーとなります。このため、ApacheはC:\Apache2ディレクトリにインストールする方法をとります。
■ Apacheのファイルを修正する
テキストエディタでC:\Apache2\conf\httpd.confファイルを開く
ファイルの最後に次の1行を追加する。
Include C:\Tomcat4.1.18\conf\auto\mod_jk.conf
■ ブラウザの設定
Internet Explorer/ツール/インターネットオプション/接続タブ
[LANの設定]ボタンをクリック
[x]ローカル アドレスにはプロキシ サーバーを使用しない
[詳細]ボタンをクリック
次で始まるアドレスにはプロキシを使用しない
localhost
[OK] [OK] [OK]
■ ApacheとTomcatを連携させた動作
ApacheとTomcatを連携させて動作させるときは次の順序で起動しなければなりません。
・Tomcatを起動する(Tomcat startをダブルクリック)
・Apacheを起動する(スタート/プログラム/Apache HTTP Server/Control Apache Server/Start)
http://localhost/examples/servlets/index.html
http://localhost/examples/jsp/index.html
ともに正常に表示されることを確認する。
停止するときはApache、Tomcatと停止させる(順序は特に関係ない)。
■ 管理者以外のユーザがサービスを起動する
Apacheは管理者、又は許可されたユーザでないと起動できない。
Apacheの起動には以下のような設定が可能です。
・管理者が手動で起動
・全ユーザが手動で起動
・パスワード登録された特定のユーザが手動で起動
・電源をいれたら自動起動
次に全ユーザが手動で起動できるように設定する方法を説明します。
administratorでログオン
スタート/設定/管理ツール/サービス
Apacheの行で右クリックしてプロパティ/ログオン タブ
「ログオン」の項目を次のように設定します。
◎ ローカルシステムアカウント
[x]デスクトップとの対話をサービスに許可
○ アカウント
「OK」
administratorをログオフしてユーザでログオンし直す。
スタート/設定/ユーザ名/管理ツール/サービス のショートカットを作りデスクトップに置く。
Tomcatを起動し、次にApacheを〈再〉起動する。
http://localhost/ でApacheのHPが表示される。
http://localhost/examples/servlets/
でサーブレットの例がApache-Tomcat連携で表示される。
|