TomcatとApacheサーバを連携させるには、Apacheモジュール「mod_webapp.so」を使用します。
モジュールは、/usr/libexec/httpdディレクトリ以下に
/usr/libexec/httpd/mod_webapp.soとしてインストールされます。稼働にはApacheの設定ファイルhttpd.confを編集する必要があります。
・ 稼働のための設定
以下のコマンドを実行し、httpd.confファイルのあるディレクトリに移動します。
以下のコマンドを実行し、httpd.confファイルを書き換え可能にするようパーミッションを変更します。
% sudo chmod 664 httpd.conf
|
以下のコマンドを実行し、httpd.confファイルを書き換え可能にするようパーミッションを変更します。
% sudo chmod 664 httpd.conf |
httpd.conf」ファイルをエディタで開きます。
サーバーサイドWebプログラミングを問題なく遂行するためには、 自分のマシンのホスト名は「localhost」ではなく「127.0.0.1」の方が なにかと安全(オフラインで作業する場合も「127.0.0.1」の方が良い)ですので、 まずはその部分の設定をしておきます。
355行目あたりの「ServerName 127.0.0.1」を有効にします。
# ServerName 127.0.0.1 //←こうなっているものを...
↓
ServerName 127.0.0.1 //←コメントアウトを外し、有効にする。
|
次に、以下のコードを書き加えます。
私の場合は、後から追記したというのが分かりやすいように一番最後に書き加えました。
LoadModule webapp_module /usr/libexec/httpd/mod_webapp.so
AddModule mod_webapp.c
<IfModule mod_webapp.c>
WebAppConnection warpConnection warp 127.0.0.1:8008
WebAppDeploy examples warpConnection /examples/
</IfModule>
|
ファイルのパーミッションを元に戻しておきます。
% sudo chmod 444 httpd.conf
|
以下のコマンドを実行し、Tomcatを一旦停止させます。
以下のコマンドを実行し、Tomcatを起動させます。
Terminal.appから以下のコマンドでApacheを再起動します。
% sudo apachectl graceful
|
ブラウザで
「http://127.0.0.1/examples/jsp/」
と打ち込み、ホスト名の後のポート番号なしに
「examples」ディレクトリの「jsp」のページにアクセス出来て下のような画面が出れば成功です。
・ TomcatとApacheをつなぐ(2)
前ページで、とりあえずApacheとTomcatをつなげる事が出来ました。 この連携をもう少し詳細設定してみます。TomcatはHTTPサーバとしての機能も持っていますが、 静的ファイルのサーバとしてはより優れたApacheがあります。 そこで、サーバとしてのメイン処理はApacheで行い、 TomcatにはJavaServletやJSPファイルなどの「Java関連処理だけ」 を担わせる設定をします。
また前ページでは、「examples」のディレクトリだけが
「http://127.0.0.1/examples/jsp/」
とポート番号無しにアクセス出来ました。
ただそのままサンプル用のディレクトリだけを使えるようにしても実用性はないので、
自分のディレクトリを作成し、 そこをApacheと連携させて使用出来るように設定します。
・TomcatのHTTPサーバ機能をOFFにする
まず、Tomcatをスタンドアローンでサーバとして使用する際に開いている「8080」番のポートを塞ぎます。
1)「/usr/local/jakarta-tomcat-4.1.18/conf/」ディレクトリにある、
「server.xml」という XMLファイルをエディタで開きます。
2)サーバ機能を停止させる設定記述を無効にします。
92行目あたりにこのような記述がありますので、
<Connector className="org.apache.coyote.tomcat4.
CoyoteConnector"
port="8080" minProcessors="5" maxProcessors="75"
enableLookups="true" redirectPort="8443"
acceptCount="100" debug="0" connectionTimeout="20000"
useURIValidationHack="false" disableUploadTimeout="true" />
↓
<!-- //←ここと
<Connector className="org.apache.coyote.tomcat4.
CoyoteConnector"
port="8080" minProcessors="5" maxProcessors="75"
enableLookups="true" redirectPort="8443"
acceptCount="100" debug="0" connectionTimeout="20000"
useURIValidationHack="false" disableUploadTimeout="true" />
--> //←ここを書き加える
...と、このようにコメントアウトします。
|
サーバ機能のOFF設定は以上です。
・自分のディレクトリを登録する
次に、自分のディレクトリを登録します。同じ「server.xml」ファイルを編集します。
279行目あたりに、
<!-- Tomcat Root Context -->
<!--
<Context path="" docBase="ROOT" debug="0"/>
-->
|
という記述があるので、これをサンプルとしてコピーして自分のディレクトリ用に書き換えます。
ここでは例として、「my_java」というディレクトリを登録します。
この「my_java」ディレクトリは、「examples」ディレクトリと同じ階層の、
/usr/local/jakarta-tomcat-4.1.18/webapps/
直下に配置するものと想定します。
例:
<!-- My Cotext -->
<Context path="/my_java" docBase="my_java"
debug="0" privileged="true"/>
|
自分用ディレクトリ登録の設定は以上です。
とりあえず、Tomcat側の設定はここまでですので、「server.xml」 ファイルを保存して閉じます。
・Apache側の設定
次に、Apacheサーバに「Tomcatの連携用ディレクトリはここですよ」と教えないといけませんので、
その設定をします。
1)「etc/httpd/」ディレクトリにある、「httpd.conf」というファイルを開きます。
2)前ページで書いたモジュール登録記述の部分に、
my_javaディレクトリを以下のように追記して登録します。
<IfModule mod_webapp.c>
WebAppConnection warpConnection warp 127.0.0.1:8008
WebAppDeploy examples warpConnection /examples/
WebAppDeploy my_java warpConnection /my_java/
</IfModule>
|
Apache側の設定は以上です。「httpd.conf」ファイルを保存して閉じます。
・設定を有効にする
設定を有効にするには、
1. Tomcatを終了
2. Tomcatを起動
3. Apacheを再起動
の順で行います。この順序を間違えると有効になりませんので注意が必要です。 実際のコマンドラインは以下のとおりです。
% stop_tomcat
% start_tomcat
% sudo apachectl graceful |
あるいは、そのままOSを再起動して、パッケージに同胞の自動起動スクリプトを使用して起動させる、という方法も有効です。(こちらのほうが確実性は高いと思います。)
起動後ブラウザで
「http://127.0.0.1/my_java/」
と打ち込み、ホスト名の後のポート番号なしに「my_java」ディレクトリにアクセス出来れば成功です。
その他のWebappsも同じ手順で行えば同様にアクセス可能となります。
|