MacOSXでTomcat5/Tomcat5とApacheの連係

ここまではTomcatを直接WEBサーバとしても使用してきました。ここいらへんで、本格的にWEBサーバの処理はApacheに任せて、WEBアプリケーションの部分だけTomcatに渡すスタイルに変えておきましょう。例によって、とりあえず〜で作っています。実際は、使わなくしたTomcatのWEBサーバのポート(デフォルトで8080)を閉じたり、不要なコネクタ類との連係用ポートを閉じたりすることも運用環境では必要でしょう。

  1. Tomcat Web Server Connector (mod_jk)のインストール
    先ほどダウンロードしておいたTomcat Web Server Connector を展開してできるフォルダ jakarta-tomcat-connectors-jk-1.2.5-macosx-apache-1.3.28 の直下に出来ているmod_jk.so ファイルを、/usr/libexec/httpd/ フォルダ(Apache用の追加モジュールライブラリ)にコピーします。

  2. workersプロパティファイルの準備
    ApacheからのWebアプリケーション要求をどのポートを使いどのAPIを使ってTomcatに処理させるかを記述したworkersプロパティファイルを作成します。どこに作っても構わないのですが、ここではtomcatの構成ファイル類と一緒に/usr/local/tomcat/conf ディレクトリに作成することにします。/usr/local/tomcat/conf/workers.propertiesファイルを次の内容で作成します。
    worker.list=worker1
    worker.worker1.port=8009
    worker.worker1.host=localhost
    worker.worker1.type=ajp13
    worker.worker1.lbfacter=1

  3. Apache構成定義ファイルの修正
    ここでインストールしたmod_jkを起動時にApacheに読み込ませ、所定のURL要求をTomcatに転送するために、次の記述を/etc/httpd/httpd.confに追加します。とりあえず、構成ファイルの最後の部分にでも追記しておきましょうか(自分で判る場所に入れておいてください)。
    LoadModule jk_module libexec/httpd/mod_jk.so
    AddModule mod_jk.c
    <IfModule mod_jk.c>
    JkWorkersFile /usr/local/tomcat/conf/workers.properties
    JkLogFile /var/logs/httpd/mod_jk.log
    JkLogLevel warn
    JkMount /*.jsp worker1
    JkMount /servlet/* worker1
    JkMount /jsp-examples/* worker1
    JkMount /servlets-examples/* worker1
    JkMount /MY-WEB-APP/* worker1
    </IfModule>
    ここではデフォルトで定義されている標準的なJSPとサーブレットとTomcat 5.0で提供されている標準のJSPサンプル、サーブレットサンプル、そして自前で定義するMY-WEB-APPへの要求をTomcatに転送するように指定しています。もちろん、運用時にはサンプルなどの転送(JkMount文)などは消しておくべきでしょう。


  4. ApacheとTomcatの連係テスト
    httpd.confを修正したら、ApacheとTomcatを停止させて起動させ直して下さい。ただし、順番が大事。

    まず、Apacheを停止します。
    MacOSX添付のApacheを使っている場合はシステム環境設定...の共有からパーソナルWEB共有を停止、あるいはターミナルからsudo apachectl stop でApacheを停止します。

    次にTomcatを/usr/local/tomcat5/bin/shutdown.shで停止します。

    次にTomcatを/usr/local/tomcat5/bin/startup.shで再起動します。

    最後にApacheを再起動します。sudo apachectl start でApacheを起動。もちろん、システム環境設定...の共有からでも起動できますが、構成定義変更後最初の一回はターミナルから再起動させるのが良いと思います(エラーが出た場合にすぐ確認できます)。

    Tomcat, Apacheともに起動したら、http://localhost/にブラウザでアクセスしてみましょう。こちらは(ポート80番を使っての要求ですので)Apacheのトップページ(既に自分用にホームページをカスタマイズしている場合は自分のトップページ)が表示されるでしょう。
    それでは、JSPやサーブレットが正しくTomcatに転送されるかを次のページで確認して見てください。
    JSPのチェックページはhttp://localhost/jsp-examples/です。また、サーブレットのチェックページはhttp://localhost/servlets-examples/です。それぞれいくつかサンプルがありますので、executeのリンクをクリックして実際にサンプルを動かしてみて下さい。

    今度はポート指定なし、つまりデフォルトのポート80番指定で、Apacheにアクセスしているのですが、WEBアプリケーションがらみは正しくTomcatで処理されることが確認できます。

< Prev | Next >