CentOS 5.4 で、Apahce と Tomcat 6 の連携

2010/03/25
★★★

CentOS 5.4 で、Apache を Web サーバー、Tomcat 6 をアプリケーションサーバーにする

前回は、Tomcat をデーモンとして、システム起動時に Tomcat が自動起動するように設定した。本記事の趣旨としては、開発環境ではなく、運用環境を目的としている。

Tomcat には、簡易的な Web サーバーが搭載されていて、デフォルトでは、http://localhost:8080/ でアクセスが可能だ。もちろん、この簡易 Web サーバーを運用環境としても利用してもよいが、あくまで簡易的な Web サーバーなので、一般的な Web サーバーで利用可能な、ネットワーク負荷分散、リーバスプロキシ、ホストヘッダ機能等が搭載されていない。さらには、これらの機能が搭載されていたとしてもある程度の規模であれば、負荷分散、可用性、信頼性の面から、Web サーバーを Tomcat と分離させた方が良いだろう。

CentOS に "Apache HTTP Server" がインストールされているかを確認する。

>yum list httpd

インストールされていない場合は、Apache をインストールする。以下と同様の方法で、update があれば、更新しておいた方が良いだろう。

>yum install httpd

Tomcat と Apache HTTP Server を連携させる場合は、Apache HTTP Server に "mod_proxy"、"mod_proxy_ajp" の二つのモジュールが必要となる。

"/etc/httpd/conf/httpd.conf" ファイルに "mod_proxy" モジュールがロードされるように設定されているかを確認する。

>vi /etc/httpd/conf/httpd.conf

以下のエントリがあれば良い。コメントアウトされていれば、コメントを削除し、モジュールがロードされるように設定する。

LoadModule proxy_module modules/mod_proxy.so

次に、"/etc/httpd/conf.d/proxy_ajp.conf" ファイルに "mod_proxy_ajp" モジュールがロードされるように設定されているかを確認する。CentOS では、"mod_proxy" と "mod_proxy_ajp" モジュールのロードがそれぞれ "/etc/httpd/conf/httpd.conf" 、"/etc/httpd/conf.d/proxy_ajp.conf" と別のファイルに定義されていることに注意する。

>vi /etc/httpd/conf.d/proxy_ajp.conf

以下のエントリがあれば良い。コメントアウトされていれば、コメントを削除し、モジュールがロードされるように設定する。

LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

Apache HTTP Server と Apache Tomcat 6 間の通信は、AJP(Apache Jserv Protocol) で行う。HTTP での通信ではないことに注意する。もちろん、ブラウザ( クライアント ) と Apache HTTP Server 間の通信は、HTTP を利用する。

デフォルトでは、Tomcat の構成ファイルには、AJP プロトコルを、ポート "8089" でリッスンするように定義されている。

>vi /usr/local/apache-tomcat-6.0.26/conf/server.xml

以下のエントリがあれば良い。コメントアウトされていれば、コメントを削除し、プロトコル AJP を利用し、ポート "8009" でリッスンするように設定する。

<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

設定を変更した場合は、Tomcat を再起動する。

>/etc/init.d/tomcat6 stop
>/etc/init.d/tomcat6 start

"/etc/httpd/conf.d/proxy_ajp.conf" にプロキシパスの設定を行う。Apache HTTP Server に、http://ServerName/tomcat/ のアドレスで着信した場合は、AJP を使い、Tomcat の8009 へ通信するように定義する。

>vi /etc/httpd/conf.d/proxy_ajp.conf

デフォルトでは、以下のエントリがコメントアウトされているので、コメントを削除する。

ProxyPass /tomcat/ ajp://localhost:8009/

Apache HTTP Server を起動、もしくは、再起動する。

>/etc/init.d/httpd restart

http://localhost/ にアクセスし、Apache HTTP Server が正しく起動していることを確認する。Apache 2 Test Page が表示されていれば Apache HTTP Server は、起動している。

http://localhost/tomcat/ にアクセスし、Tomcat のデフォルトページが表示されていることを確認する。

Apache HTTP Server を自動起動する場合は、以下のコマンドを実行する。

>/sbin/chkconfig httpd on

システムを再起動する。

>reboot

システム起動後、http://localhost/http://localhost/tomcat/ にアクセスし、Apache HTTP Server、Apache Tomcat が正しく動作していることを確認する。

これで、運用環境としては、まだ、多くの懸案事項はあるが、Apahce Tomcat をアプリケーションとして利用するための基礎的な知識は確認できたとおもう。