失敗
図1 Syntax error
Apache 2.0 から Apache 2.2 への移行に伴い、JBoss との連携方法を AJP モジュール (Apache モジュール mod_proxy_ajp) を使用したものに変更しました。
AJP モジュールを使用した方法では、JK2 のコンパイルや worker2.properties を作成する手間がなくなります。 加えて、設定も httpd.conf (もしくはモジュール別のサブ設定ファイル) に書き込めるようになります。
「ずいぶん便利になったんだなぁ」とちょっぴり感動しながら、Apache を起動すると Syntax error が発生。あれれ?
環境
このレポートは、以下の環境について記述したものです。
| OS | openSUSE 10.2 |
| AP サーバ | JBoss Application Server 4.0.5 GA |
| Web サーバ | Apache HTTP Server 2.2.4 |
原因
原因は非常に単純なものでした。 Apache の configure 時に、肝心の AJP モジュールと Proxy モジュール (AJP モジュールを使用するには、Proxy モジュールが必要) を指定し忘れていたのです。
つまり、AJP モジュールと Proxy モジュールを有効にせず、AJP プロトコルの転送設定だけを記述していたことになります。 Syntax error は当然ですね。
私のような失敗をする人/した人 (いるのでしょうか? いれば、ちょっと安心。) のため、何より自分への戒めのため、解決策を記述しておきます。
解決策
AJP モジュールと Proxy モジュールを有効にして、Apache をコンパイル&インストールします。 その後、httpd.conf に設定を記述します。
(1) Apache のコンパイル&インストール
まず、Apache のソールファイル (httpd-2.2.4.tar.gz) を解凍します。
解凍後、コンパイルします。
configure の引数に --enable-proxy と --enable-proxy-ajp を指定し、AJP モジュールと Proxy モジュールを有効にします。
【注意】
--enable-proxy を --enable-proxy-ajp より前に入力してください。
順序が逆ですと、エラーになります。
./configure --enable-proxy --enable-proxy-ajp
make
インストールします。
(2) httpd-proxy.conf の作成
Apache 2.2 では、モジュールごとに設定ファイルを分割することが推奨されています。 本稿では、Proxy モジュール用の設定ファイルとして httpd-proxy.conf (任意の名前に変更可能) を作成します。
# すべてのリクエストをローカルマシンのポート 8009 に転送 <Location /> ProxyPass ajp://localhost:8009/ </Location>
【注意】
設定ファイルを分割せず、直接 httpd.conf に記述することもできます。
(3) httpd-proxy.conf を conf/extra ディレクトリにコピー
作成した httpd-proxy.conf を /conf/extra ディレクトリに配置します。
(4) httpd.conf の修正
(2)、(3) で用意した httpd-proxy.conf を組み込むように httpd.conf を修正します。
# httpd-proxy.conf を組み込む Include conf/extra/httpd-proxy.conf
以上の設定で、JBoss と Apache を連携させることができます。
ブラウザの URL に http://サーバ名/ と指定し、リクエストが JBoss に転送されていることを確認してください。
図2 動作確認
補足
上記の設定では、Web コンソールや JMX コンソールなどへのリクエストも許可されてしまい、セキュリティ上、問題があります。 対策として <Location> ディレクティブで、これらの画面に対するアクセス制御をする例を示します。
■ Web コンソールへのアクセス制御
# ローカルマシンからのリクエストのみを許可 <Location /web-console/*> Order deny,allow Deny from all Allow from localhost </Location>
■ JMX コンソールへのアクセス制御
# 指定されたマシン (IP とサブネットマスクで指定) からのリクエストのみを許可 <Location /jmx-console/*> Order deny,allow Deny from all Allow from 192.168.0.1/255.255.255.0 </Location>
関連レポート
参考サイト
更新履歴
- 2009/11/05 - 関連レポートに 1 件追加
