- - PR -
Apache2+Tomcat6の連携における階層コンテキストの設定
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-11-12 20:01
はじめまして。
Apache2とTomcat6の連携について質問です。 (1)の環境から、(2)の環境へアプリケーションを移行したいと思っています。 ----- (1) Windows 2000 Server Apache 2.0.54 mod_jk 1.2.14 Tomcat 5.0.28 (2) Windows Server 2003 Apache 2.2.6 mod_jk 1.2.23 Tomcat 6.0.13 ----- (1)においては、適切なworkers.propertiesを用意して、 Apacheのhttpd.confに以下のようにJKMountディレクティブを宣言。 JkMount /foo/bar/* worker1 JkMount /foo/bar worker1 JkMount /hoge/* worker1 JkMount /hoge worker1 {appBase}下に"bar"、"hoge"アプリケーションを配備、 Tomcatのserver.xmlを以下のように設定すれば、 <Context path="/foo/bar" docBase="bar"> <Context path="/hoge" docBase="hoge"> それぞれ http://xxx/foo/bar/ http://xxx/hoge/ というURLで動作しておりました。 ところが、(2)の環境に移行したところ、 Tomcat起動時に以下のメッセージが出力され、 http://xxx/foo/bar/ を参照しても404エラーになります。 「警告: A docBase C:\\xampp\\tomcat\\webapps\\bar inside the host appBase has been specified, and will be ignored」 (http://xxx/hoge/ のほうは問題なく動作します。) 移行にあたり、/conf/server.xmlから<context>の切り出しは行っています。 /conf/server.xml ↓ /conf/{Engine}/{Host}/bar.xml /conf/{Engine}/{Host}/hoge.xml 過去の記事 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=40342&forum=12 などを拝見するに、URLと配備先パスが異なる場合の連携は保証されていないようです。 また実運用でも推奨されていないみたいですね…。 コンテキストルートを"/foo/bar"のような階層にしたい場合、 どのような方法が一般的なのでしょうか? ご教授頂ければ幸いです。 |
|
投稿日時: 2007-11-30 16:24
自己解決しましたので参考までに。
●Apache まずmod_jkの使用をやめ、mod_proxyを使うことにしました。 /conf/httpd.conf で以下をコメントアウト。 LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so /conf/extra/httpd-proxy.conf を追加して以下のように記述。 <Location /foo/bar/> ProxyPass ajp://localhost:8009/foo/bar/ </Location> ●Tomcat /conf/{Engine}/{Host}/foo#bar.xml を追加して以下のように記述。 <Context path="/foo/bar"> (以下省略) アプリケーションを /webapps/foo/bar/ に配置することで動作しました。 コンテキストルートが階層になっているときは、 context.xmlを"[階層1]#[階層2].xml"のように書くようです。 |
1