Apache HTTP ServerとApache Tomcatを連携させるにはどうしたらいいでしょうか。
ネット上の情報を探してみるとmod_jk、mod_proxy_ajp、mod_proxy_httpなど色々でてきます。
- mod_jk:昔からの後付(Apache HTTP Serverについてこない)コネクター。Apache HTTP Server 2.2より前は事実上の標準コネクター
- mod_proxy_ajp:Apache HTTP Server 2.2以降で標準でついてくるコネクター
- mod_proxt_http:接続プロトコルがajpじゃなくてhttpのApache HTTP Server 2.2以降で標準でついてくるコネクター
どれ使えばいいの?というのもありますが、Apache HTTP Server 2.2より前のなんて今更新規で入れないだろうからmod_proxy_ajpを使えばいいです。言いきっちゃいます。mod_proxy_ajpです!
で、mod_proxy_ajpを使うためにはmod_proxyというのも同時に使わないといけないのですが、こちらもApache HTTP Server 2.2以降ならば標準でついてきます。
さて、ここで問題があって「標準でついてくる」というのは「ソースが」という意味で、rpmやyum形態の時に入ってくるかどうかは別問題。
ソースも次のような感じで.configurationで指定しないとダメ
./configure --enable-layout=Apache \
--prefix=/opt/oss/apache/httpd \
--enable-so \
--enable-module=rewrite \
--enable-mods-shared=all \
--enable-proxy --enable-proxy-ajp \
--disable-deflate
ここ注意点です。標準でついてくるので/etc/httpd/conf/httpd.confファイルに
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
と書けばOK的な情報もあったりしますが、それはあくまでも「--enable-proxy --enable-proxy-ajp」付きでconfigurationしてmakeしてmake installしたときの話です。
ここまでできたら/etc/httpd/conf/extra/httpd-proxy.confファイルをつくります。内容は
<Location /hello/>
ProxyPass ajp://madoka:8009/hello
</Location>
こんな感じでTomcatが動いている「madoka:8009」につなぐ感じです。
で、このファイルのありかを/etc/httpd/conf/httpd.confファイルに書きます。
Include conf/extra/httpd-proxy.conf
ファイルの指定は相対指定にするみたいですね。理由は「/etc/httpd」という場所も設定しだいなのでというところでしょうか。
ここまでできたらApache HTTP Serverにブラウザでつなぎます。
http://homuhomu/hello/helloworld
これでtomcat側のコンテンツが表示されれば、Apache HTTP ServerとTomcatがconnectできたことになります。もうこれで、
交わした約束♪忘れないよブラウザで確かめる♪
事が出来ました。