- PR -

apache2.2とtomcat5.5をmod_proxyで連携

投稿者投稿内容
non
会議室デビュー日: 2008/01/30
投稿数: 12
投稿日時: 2008-02-29 09:02
引用:

flatlineさんの書き込み (2008-02-29 00:55) より:
tomcat の方の、conf/server.xml 内に、

<Connector port="8009" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />

がありますか?
または別のポート番号になっていないでしょうか?



アドバイスありがとうございます。
tomcat の方の、conf/server.xml は初期設定と変えていませんが、
上記の内容で、8009ポートの設定がされていることは確認しました。


改めて、ここまでした内容をまとめます。

【インストール時にしたこと】
@tomcat5.5.25のインストール
Aapache2.2.8のインストール
(インストール時のコマンドでモジュール組み込みをし、連携には「mod_proxy_ajp」を使用)
Bapache2のconf/httpd.confに<Location> タグ追加
Ctomcat、apacheの再起動

しかし、
http://<サーバーのIP>/servlets-examples/にアクセスすると、apacheの503エラー
になってしまいます。
(http://<サーバーのIP>:8080/servlets-examples/はアクセスできます)

【問題がないか確認した点】
@http://<サーバーのIP>/にアクセスし、apacheが起動しているのを確認
Ahttp://<サーバーのIP>:8080/にアクセスし、tomcatが起動しているのを確認
Bapacheのlogs/error_logを確認(前述の通りです)
Capacheのconf/httpd.confの<Location>の記述を確認
D8009ポートがLISTENになっているのを確認
E他のプロセスが8009ポートを使用していないのを確認
Ftomcatのconf/server.xmlに<Connector port="8009" …の記述があるのを確認

他にもお気づきの点があれば、教えていただけますと助かります。
よろしくお願いします。

[ メッセージ編集済み 編集者: non 編集日時 2008-02-29 09:04 ]
syousuke
会議室デビュー日: 2002/09/27
投稿数: 19
投稿日時: 2008-02-29 09:51
Java1.5のバージョンが古いのがちょっと気になりますけど

apache側でバーチャルホスト等、利用してますか?
ホスト名があってないのかも

apacheのhttpd.confのServerNameと
tomcatのserver.xmlのEngineのdefaultHost属性、Hostのname属性
はどのように設定されてます?
non
会議室デビュー日: 2008/01/30
投稿数: 12
投稿日時: 2008-02-29 11:07
引用:

syousukeさんの書き込み (2008-02-29 09:51) より:
Java1.5のバージョンが古いのがちょっと気になりますけど

apache側でバーチャルホスト等、利用してますか?
ホスト名があってないのかも

apacheのhttpd.confのServerNameと
tomcatのserver.xmlのEngineのdefaultHost属性、Hostのname属性
はどのように設定されてます?




apacheとtomcatはほぼ初期設定のままで、バーチャルホストの設定などはしていません。
ご指摘いただいた場所を見てみました。
・・・この設定をどのようにすれば良いのでしょうか?

【apacheのhttpd.conf】-------------------------------------------------------
#ServerName www.example.com:80

【tomcatのserver.xml】-------------------------------------------------------
<Engine name="Catalina" defaultHost="localhost">

<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
</Host>
------------------------------------------------------------------------------
syousuke
会議室デビュー日: 2002/09/27
投稿数: 19
投稿日時: 2008-02-29 13:52
設定はあっているようです。

tomcat側でエラーになっているのかも。
--
[error] (70007)The timeout specified has expired: ajp_ilink_receive() can't receive header
[error] ajp_read_header: ajp_ilink_receive failed
[error] (120006)APR does not understand this error code: proxy: read response failed from (null) (localhost)
--

tomcat側のstdout,stderrに何かエラーが出てませんか?

tomcatのserver.xmlのAccessLogValveを有効にして
tomcat側のアクセスログを確認できます?
non
会議室デビュー日: 2008/01/30
投稿数: 12
投稿日時: 2008-02-29 15:38
引用:

syousukeさんの書き込み (2008-02-29 13:52) より:
設定はあっているようです。

tomcat側でエラーになっているのかも。
--
[error] (70007)The timeout specified has expired: ajp_ilink_receive() can't receive header
[error] ajp_read_header: ajp_ilink_receive failed
[error] (120006)APR does not understand this error code: proxy: read response failed from (null) (localhost)
--

tomcat側のstdout,stderrに何かエラーが出てませんか?

tomcatのserver.xmlのAccessLogValveを有効にして
tomcat側のアクセスログを確認できます?




【tomcatのserver.xml】のAccessLogValveを有効にしました---------------
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="localhost_access_log." suffix=".txt"
pattern="common" resolveHosts="false"/>
----------------------------------------------------------------------

http://<サーバーのIP>/servlets-examples/にアクセスしても、
tomcatのアクセスログには何も書き込まれませんでした。

http://<サーバーのIP>/servlets-examples/にアクセスして
503エラーが表示されるまで1分くらいかかるので、
その間にtomcat側でエラーを起こしているのかもしれません。

自分のPC(Windows)でも、apacheとtomcatが連携できるか試してみたら、
httpd.confを同じ設定にするだけで連携が出来ました。

Linuxのtomcatをインストールし直してみようと思います。
syousuke
会議室デビュー日: 2002/09/27
投稿数: 19
投稿日時: 2008-02-29 16:48
ちょっと気になって調べてみましたが
どうもmod_proxy_ajpの障害のようですね。
http://www.issociate.de/board/post/306888/Apache_2.2_and_mod_proxy_ajp_bug_workaround.html
http://issues.apache.org/bugzilla/show_bug.cgi?id=36495


こうなっちゃた場合通常のmod_proxyで対処するしかないようです
http://confluence.atlassian.com/display/DOC/Using+Apache+with+mod_proxy
non
会議室デビュー日: 2008/01/30
投稿数: 12
投稿日時: 2008-03-03 11:07
引用:

syousukeさんの書き込み (2008-02-29 16:48) より:
ちょっと気になって調べてみましたが
どうもmod_proxy_ajpの障害のようですね。
http://www.issociate.de/board/post/306888/Apache_2.2_and_mod_proxy_ajp_bug_workaround.html
http://issues.apache.org/bugzilla/show_bug.cgi?id=36495

こうなっちゃた場合通常のmod_proxyで対処するしかないようです
http://confluence.atlassian.com/display/DOC/Using+Apache+with+mod_proxy




教えて頂いてありがとうございます!!
mod_proxy_ajpの障害だったとは・・・。
自分の設定が間違えていないかばかり調べていたので、そういう部分も考えなければいけないんですね。

教えていただいたmod_proxyで対応しました。
以下のように設定したところ、連携できるようになりました。
-----------------------------------------------------------------------------
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /servlets-examples http://localhost:8080/servlets-examples
ProxyPassReverse /servlets-examples http://localhost:8080/servlets-examples
------------------------------------------------------------------------------

本当に丁寧に教えて下さいまして、助かりました。
ありがとうございました。
水都
大ベテラン
会議室デビュー日: 2004/07/22
投稿数: 111
投稿日時: 2008-03-03 11:49
手元にOSを入れただけの環境があったので、書いてあった
 Linux
 jdk1.5.0_08
 apache2.2.8
 tomcat5.5.25
で構築しましたが何等問題ありませんでした。
apacheのオプションも
 # ./configure --enable-so --enable-proxy --enable-proxy-ajp
に合わせてあります、何が原因で起きていたのかが気になるところですね。
nonさんにとっては問題が解決する事が第一だとは解っているんですが、どうにも気になって・・・

スキルアップ/キャリアアップ(JOB@IT)