- PR -

Apache1.3.33とTomcat5.5.7の連携についてご質問

1
投稿者投稿内容
S_Tatsu
ベテラン
会議室デビュー日: 2005/05/13
投稿数: 58
お住まい・勤務地: 東京
投稿日時: 2005-05-13 18:17
いつもお世話になっております。
Linuxサーバーはまだ経験がほとんどないのですが
Javaを使ったWebページを作成したくて現在サーバー
の設定を行っております。

Tomcatは単体でWebサーバーの機能はあるようですが
処理の負荷分散をしたほうがよいとのお話がいろいろ
なページで紹介されていましたのでApacheと連携しよ
うと考えております。

連携時に疑問がありまして質問させていただきました。
Apacheでは/var/wwwというディレクトリをルートにして
おります。
Tomcatは/usr/local/tomcat/webappsというディレク
トリがデフォルトでルートになっておりました。

/usr/local/apache/conf/workers.propertiesにて

[uri:/jsp-examples/*]としたところ
http://IPアドレス/jsp-examples/index.htmlでApache
経由でTomcatの/usr/local/tomcat/webapps/index.html
がうまく表示されJSPも動いているようでした。

既存のサンプルのページはうまく表示されたので自分で/usr/
local/tomcat/webapps/testというディレクトリを作成しtest.jsp
というファイルを設置しました。

/usr/local/apache/conf/workers.propertiesに
[uri:/test/*]という行を追加して
Apache、Tomcatを再起動して
http://IPアドレス/test/test.jsp
とアクセスしてみたのですが404のエラーが表示されうまくいきません
でした。
なにか他にも設定ファイルにかかなければならないのかなと調べてみ
たのですが原因がわかりませんでした。
それとhtmlファイルとjspファイルを混在させたい場合のディレクトリの
構成がどのようにすればよいのかなと悩んでおります。
画像ファイルなどを指定するときは相対パスでの指定は可能でしょうか?
文章がわかりづらくて申し訳ございません。
どなたかご教授お願い致します。
S_Tatsu
ベテラン
会議室デビュー日: 2005/05/13
投稿数: 58
お住まい・勤務地: 東京
投稿日時: 2005-05-16 17:41
/usr/local/apache/conf/workers2.properties
に加えて
/usr/local/tomcat/conf/server.xml
を編集を行ったところうまく自作ディレクトリに格納したJSPが
動いてくれました。
具体的には<HOST>〜</HOST>の間に次の一行をいれただけです。
<Context path="/test" docBase="test" debug="0" reloadable="true"/>

画像ファイルなどの置き場所なのですが、まだどのようにするのが
よいのか迷っております。
TomcatのルートとApacheのルートがそれぞれ
/usr/local/tomcat/webapps/
/var/www/
と別れていますのでHTMLとJSPを混在させたい場合に両方から使用する画像などを
相対的に指定するのは難しいのではないかな思うのですがよい方法はございます
でしょうか?フルパスで指定するしかないのでしょうか?
どなたかご教授お願いいたします。
komey
ベテラン
会議室デビュー日: 2003/11/27
投稿数: 76
投稿日時: 2005-05-16 20:24
ディレクトリ構成ですが、双方のドキュメントルートを合わせる、というのはナシでしょうか。
ApacheとTomcatを同一サーバで動作させるのであれば、その方がわかりやすいので
私はよくそうしています。
ただし、動きが完全に理解できないうちから安易に一緒にするのはお奨めしませんが。。。

さて、画像の配置場所ですが、
これがApacheから返したいものであればApacheのドキュメントルート以下に、
Tomcatから返したいのであればTomcatのドキュメントルート以下に置くべきだと思います。

それぞれの違いですが、
Apacheから返すとパフォーマンス的に有利です。
Tomcatから返すと、管理上がしやすい場合があるかもしれません。
※Tomcatで返すのは、JSPでしか使わない画像がある場合がほとんどです。
 同じサーバならあまり気にはなりませんが、別サーバにするような場合は
 管理上、JSPと同じサーバに入れておいた方がわかりやすいのでそうしています。

今回はApacheでもTomcatでもその画像を使うということなので
Apacheのドキュメントルート以下で良いと思います。


ドキュメントルートの考え方がしっくりきていないようですが、
ユーザからのリクエストがworkers.propetiesの表現に一致するときは、/usr/local/tomcat/webapps/test以下が参照され、
一致しないときは/var/www以下が参照される、ただそれだけのことです。
これを踏まえれば、相対パスを書くことができるかと思います。
つまり、http://x.x.x.x/test/test.jspから/var/www/image/img.jpgを参照したいのであれば、<IMG src="../image/img.jpg">と書けば良いです。
もし、test.jspから/var/www/test/image/img.jpgを参照させたければ、workers.propertiesの中身を
[uri:/test/*.jsp]
とでも変える必要があります。

クライアントはHTTP通信で取得したhtmlデータが、HTMLファイルから返されたのか、JSPから返されたのかは判断できませんし、そもそも画像の取得はhtmlデータ取得のHTTP通信とは別の通信になるので、HTMLもJSPも関係ありません。
JSPから、Apacheのドキュメントルートに置いているHTMLファイルをインクルードする場合のパスをどう書くか、といったような場合は話が変わってきますが、それはまたそのときに調べてください。
S_Tatsu
ベテラン
会議室デビュー日: 2005/05/13
投稿数: 58
お住まい・勤務地: 東京
投稿日時: 2005-05-17 16:57
komey様
すごくわかりやすいご説明ほんとにありがとうございます!
Tomcatは初めてでまだ動作がよく理解できていなかったのですが
文章を読んでだいぶ理解できました^^
画像は教えていただいた/var/www/imageに配置しようと思います。
よく考えてみたのですが、アクセスがあった場合、一度Apache、Tomcat
がHTMLのテキストをクライアントのブラウザに送ってブラウザがそれ
を解析してイメージのタグがあった場合に再度、リクエストにいくよう
な形になっているのですね。
http://xx.x.x/test/test.jspでTomcatが返したHTMLの文の中に
../image/img.jpgとあったらブラウザがhttp://xx.x.x/image/img.jpg
に再度リクエストにいってそれを今度はApacheがworkers.propetiesの
パターンにマッチしていないので返してくれるというような考え方で大丈夫
でしょうか。。
ApacheとTomcatに慣れてきたらkomey様のおっしゃられた双方のドキュメント
ルート合わせるやりかたにチャレンジしてみたいと思います^^
1

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