Javaに関する様々な情報をご紹介します。

4Webサーバとの連携(Windows環境)

Javaに関する様々な情報をご紹介します。

Webサーバとの連携(Windows環境)

ここでは、TomcatとWebサーバを連携する方法について解説します。

実行環境
  • ・Windows8.1 Pro
  • ・JDK 1.8.0_05
  • ・Tomcat 8.0.23
  • ・Apache 2.4.12

概要

TomcatもWebサーバ機能を持っていますが、従来のWebサーバソフトと比較すると性能が良くなく検証作業など内部利用にとどめた方が良いと言われています。本格的なWebサーバ機能が必要なシステムでは、Apache、IISなどの専用WebサーバソフトとTomcatを連携して使用します。以下に、TomcatのWebサーバ機能を利用すべきでないと言われている理由を記載します。

  • TomcatのWebサーバ機能は歴史が浅く、Webサーバ専用ソフトと比較すると安定性が悪く、セキュリティも高くない。
  • TomcatのWebサーバ機能は一般に高速ではない。
  • Webサーバ専用ソフトを使用することにより静的コンテンツと動的コンテンツの処理を分散させることができる。

TomcatとWebサーバ(Apache、IISなど)の連携は以下のようにして行います。

  1. Webサーバエンジンは受け取ったリクエストが設定したURLパターンに合致する場合、そのリクエストを連携モジュールに渡します。
  2. 連携モジュールは連携プロトコルを使用し、そのリクエストを連携コネクタに渡します。
  3. 連携コネクタはリクエストをJSP/サーブレットコンテナに渡し、そこで処理が実行されます。
TomcatとWebサーバの連携

設定方法

ここでは、Apache2.2から標準装備されるようになったTomcat連携モジュールmod_proxy_ajpを使用してTomcatと連携する方法について解説します。前もってApache2.2以上、JDK、Tomcatのインストールは行われているものとします。JDK、Tomcatインストールの詳細はJavaの道:Java(JDK)インストール方法Javaの道:Tomcat(インストール(Windows環境))を参照してください。

Apacheの設定

mod_proxy_ajpモジュールを有効化するため、httpd.confに設定されているmod_proxy_ajpモジュールの設定を有効にします(コメントアウトの削除)。
httpd.confは「$APACHE_HOME\conf」ディレクトリ配下にあります。$APACHE_HOMEはApacheのインストールディレクトリです。

  • モジュールはmod_proxy_ajpに加え、mod_proxyも設定を有効にする必要があります。
    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
    
    # mod_proxyとmod_proxy_ajpのモジュールの設定を有効にします(コメントアウトの削除)。
  • また、httpd.confにmod_proxy_ajpモジュールの設定ファイルを参照するパスを記載します。設定ファイルは、「$APACHE_HOME\conf\extra」ディレクトリ配下に「proxy_ajp.conf」ファイルを設置するものとします。
    Include conf/extra/proxy_ajp.conf
    
    # mod_proxy_ajpモジュールの設定ファイルを参照するパスを記載。

「$APACHE_HOME\conf\extra」ディレクトリ配下に「proxy_ajp.conf」ファイルを設置し、転送ルールを記載します。

<Location /docs/>
ProxyPass ajp://127.0.0.1:8009/docs/
</Location>

#「http://ドメイン/docs」にアクセスしたら、「Tomcatのdocsディレクトリ」配下に転送されることを表します。
# 8009は、Tomcat側の連携コネクタのポート番号です。

Tomcatの設定

$CATALINA_HOME\conf配下のserver.xmlの連携コネクタの設定部分が有効になっていること(コメントアウトの削除)、ポート番号が8009になっていることを確認します。
$CATALINA_HOMEはTomcatのインストールディレクトリです。

<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

Tomcatのデフォルトのポート番号8080が有効になっている場合は、コメントアウトし無効にします。

<!--
<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />
-->

※ コメントアウトし、設定を無効にします。

動作確認

Tomcat、Apacheを起動し、http://localhost/docs/ にアクセスします。以下の画面が出れば正常に動作しています。Tomcatのポート番号8080ではなく、HTTPのポート番号である80で、Tomcatに接続していることが確認できます。

TomcatとWebサーバの連携の動作確認

4Webサーバとの連携(Windows環境)