TOPサーバ構築・運用> なぜWebサーバと連携させるのか




いまさら聞けないTomcat
いまさら聞けないTomcat〜JSPサーバ構築のキソ

第9回:Tomcatと外部のプログラムを連携させよう!

著者:ビーブレイクシステムズ  羽倉 敬   2008/1/10
1   2  3  次のページ
なぜWebサーバと連携させるのか

   これまではTomcatをスタンドアロンのWebサーバとして動作させてきました。最終回の今回はTomcatと他のWebサーバ(Apache)やデータベース(MySQL)との連携について解説します。

   Tomcat単体でWebサーバとしての機能があるにもかかわらず、なぜ外部のWebサーバと連携させる必要があるのでしょうか。主な理由としては「パフォーマンス」「セキュリティ」「安定性」「設定の柔軟性」「拡張性」があげられます。

   「第1回:Tomcatって何ですか?」でも触れたように、静的コンテンツの処理をJavaで書かれたサーブレットコンテナで行うことは効率的ではなく、パフォーマンスが悪くなってしまいます。

   ApacheなどのWebサーバはTomcatより歴史の長く、その分セキュリティーホールの危険性も少ないためセキュリティの面でTomcatよりも信頼性が高いのです。同様にApacheはWebサーバとしての安定性もTomcatより優れています。

   また、ApacheはWebサーバとして、Tomcatよりも豊富な設定項目を持っており、設定の柔軟性が高いです。さらにApacheには機能を追加できる豊富なモジュールが用意されており、拡張性も高いのです。このような理由から、外部のWebサーバと連携が必要なのです。では早速TomcatとApacheを連携させてみましょう。

AJPコネクタでApacheとTomcatを接続する

   TomcatにはデフォルトでWebサーバと相互にやり取りを行うAJPコネクタが搭載されています。また、最新のApache 2.2系にはAJPプロトコル通信を可能にするmod_proxy_ajpモジュールがあり、これにより相互通信が可能になります(Apache2.0以前はmod_jkモジュールを利用)。

   今回はApacheのインストール方法については割愛します。Apacheインストールの詳細については、連載の「いまさら聞けないApache〜Webサーバ構築のキソ」を参照してください。

   Linuxのパッケージ管理システムyumやWidowsインストーラでインストールした場合はmod_proxy_ajpモジュールがデフォルトで搭載されています。ソースからビルドする場合は「# ./configure --enable-proxy --enable-proxy-ajp」のようにオプションをつけてコンパイルすることで、mod_proxy_ajpモジュールが利用可能となります。

リスト1:AJP用の.confファイル(httpd-helloworld.conf)
<Location /helloworld/>
  ProxyPass ajp://localhost:8009/helloworld/
</Location>

リスト2:#を外す行(99,100行)
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

リスト3:追加する行
Include conf/extra/httpd-helloworld.conf

リスト4:8080ポートコネクターコメントアウト例
<!--
  <Connector
        port="8080"
        redirectPort="8443"
        minSpareThreads="25"
        connectionTimeout="20000"
        maxThreads="150"
        maxSpareThreads="75">
    </Connector>
-->


Apacheからサンプルアプリケーションにアクセスする

   今回は「第6回:TomcatにWebアプリケーションを配備する」で追加したHello WorldアプリケーションをApacheから呼び出せるようにしてみましょう。以降では、Apacheのインストール先をAPACHE_HOME、Tomcatインストール先をCATALINA_HOMEとして記述します。

   まず、APACHE_HOME\conf\extra\ディレクトリにリスト1の内容でAJP用の.confファイルを作成します(リスト1)。ajp://localhost:8009/がTomcatのWeb公開ディレクトリ(CATALINA_HOME/webapps)をあらわします。この場合、http://ホスト名/helloworld/以下にアクセスがあればCATALINA_HOME/webapps/helloworld/以下を呼び出すことを意味します。今回はhttpd-helloworld.confと名前をつけて保存しました。

   次に、APACHE_HOME\conf\httpd.confをエディタで開きproxy_moduleとproxy_ajp_moduleを読み込ませるため、99,100行目にあるリスト2のコメントアウト用の「#」を外します(行数はApacheのバージョン、インストール方法によって異なる場合があります)。また、ソースからビルドした場合はhttpd.confにリスト2を追加してください。

   また、リスト3の行を追加して先ほど作成したhttpd-helloworld.confファイルを読み込ませます。

   最後にTomcatの8080ポートを停止します。これによりTomcatへの直接アクセスを禁じ、Apacheを介してのみ接続が可能になります。8080ポートを停止させるには、CATALINA_HOME/conf/server.xml中のコネクタ定義をコメントアウトします(リスト4)。

   以上で設定は完了です。TomcatとApacheを起動し、
http://localhost/helloworld/hello」にアクセスしてHelloWorldが表示されれば、AJPコネクタが正常に動作しています。

1   2  3  次のページ


株式会社ビーブレイクシステムズ 羽倉 敬
著者プロフィール
株式会社ビーブレイクシステムズ  羽倉 敬
千葉大学法経学部卒業。大学時代よりオープンソースに興味を持ち、オープンソース専業ベンダーのビーブレイクシステムズに入社。現在に至る。また、現在は社内技術サークルの中心メンバーとして日々提案・啓蒙活動を行う。座右の銘は「自らが求めてつくらなければ、自身が求めるものはできない」


この記事の評価をお聞かせください
ボタンをクリックしますとウインドウが開きます。
ご意見、ご要望にお応えします! インプレスIT INSIDE

INDEX
第9回:Tomcatと外部のプログラムを連携させよう!
なぜWebサーバと連携させるのか
  Tomcatとデータベースの接続
  2. コンテキストにJDBC JDNIリソースを設定する
いまさら聞けないTomcat〜JSPサーバ構築のキソ
第1回 Tomcatって何ですか?
第2回 Tomcatって何ができるのですか?
第3回 TomcatをWindowsへのインストールしよう!
第4回 TomcatをLinuxへインストールしよう!(圧縮アーカイブ編)
第5回 TomcatをLinuxへインストールしよう!(パッケージ管理システム編)
第6回 TomcatにWebアプリケーションを配備する
第7回 Tomcat Webアプリケーションマネージャを使ってみよう!
第8回 Tomcatのサーバ設定
第9回 Tomcatと外部のプログラムを連携させよう!

Think IT 過去人気記事

注目おすすめ情報

Think IT人気ライター BEST 5

IT製品/サービス資料ダウンロード
    おすすめのホワイトペーパー情報を準備中です