CentOS 環境で Apache と Tomcat の連携 ( mod_jk、mod_proxy_ajp )
Apache と Tomcat の連携に関してです。mod_jk 使うパターンと mod_proxy_ajp を使うパターンのそれぞれで。「さっと環境欲しい時にさっと取り出せる情報あればいいかなぁ」ぐらいの軽い感じの内容です。
環境は Apache 2.2.15 ( CentOS 6.2 の同梱版 ) / Tomcat 8.0.24 / mod_jk 1.2.40 でやってます。
1. mod_jk 使うパターン
mod_jk は残念ながらバイナリが提供されてないので、ソースからコンパイルする必要があります。といっても、configure、make、make install するだけ。
・The Apache Tomcat Connector - Documentation Index
http://tomcat.apache.org/connectors-doc/
※ ちょっとコンパイルに必要な ( Requirements 的な ) 情報は見つけられなかったけど、おそらく GCC、apxs あたりがあれば普通にいけるんかなと思ってます。たぶん。
apxs ない場合は以下の感じでインストールできます ( ソースからコンパイルした Apache がある場合はそっちにあるはずです )
yum -y install httpd-devel
ソースのダウンロードから、configure、make、make install まで一気に。
wget http://www.apache.org/dist/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.40-src.tar.gz tar zxvf tomcat-connectors-1.2.40-src.tar.gz cd tomcat-connectors-1.2.40-src/native/ ./configure --with-apxs=/usr/sbin/apxs make && make install
無事完了すると apache-2.0 配下のディレクトリに mod_jk.so ができてるはずです。
ls -la apache-2.0/ - 略 - -rwxr-xr-x 1 root root 952073 7月 31 00:21 2015 mod_jk.so
mod_jk.so をApache の所定のディレクトリ ( どこでもいいけど ) にコピーする。
cp apache-2.0/mod_jk.so /etc/httpd/modules/
以下 2 つの設定ファイルを作成する。設定内容ですが、とりあえず今回は
*「localhost で Tomcat が起動してて、8009 で AJP 通信待ち受ける設定になってる」
*「Apache へのリクエストは全て Tomcat へ連携する」
前提としています。
* /etc/httpd/conf.d/httpd-jk.conf
LoadModule jk_module modules/mod_jk.so <IfModule jk_module> JkWorkersFile conf.d/workers.properties JkLogFile logs/mod_jk.log JkLogLevel info JkMount /* worker1 </IfModule>
* /etc/httpd/conf.d/workers.properties
worker.list=worker1 worker.worker1.type=ajp13 worker.worker1.host=localhost worker.worker1.port=8009
上記で作業完了です。「http://localhost/」で Tomcat のホーム画面が表示されるはずです。
2. mod_proxy_ajp を使うパターン
こっちの方がお手軽感あります。上記と同じ前提なら Apache の設定ファイルに以下を設定するだけ。
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so <Location /> ProxyPass ajp://localhost:8009/ </Location>
簡単な内容ですが、以上です。