CentOS 環境で Apache と Tomcat の連携 ( mod_jk、mod_proxy_ajp )

ApacheTomcat の連携に関してです。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 つの設定ファイルを作成する。設定内容ですが、とりあえず今回は
*「localhostTomcat が起動してて、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>


簡単な内容ですが、以上です。