Apache - Tomcat 連携
Apache と Tomcat をAJPコネクタで連携します。
Apache 2.2系にはAJPプロトコル通信を可能にするmod_proxy_ajpモジュールがあり、これにより相互通信を実施します。(Apache2.0以 前はmod_jkモジュールを利用)
例の事ながら、参考サイトはこちらにお世話になりました。
http://thinkit.co.jp/free/article/0708/2/9
目標は、前回作成した helloword にApache からアクセスすることです。
そもそも Tomcat は Web サーバ機能も持っていますが、やはり本家の Apache に任せた方がよいでしょうとのことです。
Tom猫さんの Web サーバ機能ってデバッグ用らしいですね。
■Apache 側の設定
Apache のインストールディレクトリ $APACHE_PATH = /etc/httpd
としています。
(1) アプリケーションごとに conf ファイルを作成します。
面倒くさいですね。。
$APACHE_PATH/conf/extra
ディレクトリを作成します。このディレクトリの中に、
$APACHE_PATH/conf/extra/httpd-helloworld.conf
<Location /helloworld/>
ProxyPass ajp://localhost:8009/helloworld/
</Location>
を新規作成します。
/helloworld/ が呼び出されれば、port=8009 で呼び出しますよという設定らしい。
(2) httpd の conf ファイルを編集します。
$APACHE_PATH/conf/httpd.conf を編集します。
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
AJP用のモジュールを読み込むようにします。
※デフォルトでONになっていました。
Include conf/extra/httpd-helloworld.conf
(1) で作成した extra conf ファイルを読み込みます。
<!--
<Connector
port="8080"
redirectPort="8443"
minSpareThreads="25"
connectionTimeout="20000"
maxThreads="150"
maxSpareThreads="75">
</Connector>
-->
今まで有効にしていた 8080 port を閉じます。
※ここでブラウザから http://localhost:8080 を確認しようとしてもつながらなくなります。tomcat 再起動がいりますが。
※ 8009 port が有効になっていることも確認できます。
/etc/init.d/tomcat restart
apachectl restart
準備完了です。
ブラウザから http://localhost/helloworld/hello/ にアクセスすると HelloWorld !
無事確認できました。
その昔、mod_jk でやろうとしたときはハマったのですが、なんでやったかなぁ。