You are currently using guest access (Login)

Apacheとの連携

アプリケーションサーバ

  • サーバ側でアプリケーション(スクリプト)を実行する部分を切り離し,独立したサーバにしたもの.
  • WEBサーバと同じマシンで実行される場合もあるし,複数のアプリケーションサーバで負荷分散を行なう場合もある.
  • WEBブラウザ <-----> WEBサーバ <-----> アプリケーションサーバ <-----> データベース
  • 授業では WEBサーバに apache2,アプリケーションサーバに tomcat を使用している
  • WEBサーバ(apache)とアプリケーションサーバ(tomcat)の間でやり取りを行なうのが,JKコネクタである.
  • JKコネクタには幾つかバージョンが存在するが,授業では mod_jk を使用する.


apacheから tomocatへリクエストが渡される手順 (通常のCGIやPHPよりはかなり複雑)

  1. apachemod_jk.conf をみて, JkMount で指定された URL をコンテキストとして tomcat へ渡す.
  2. tomcat/usr/local/tomcat/webappコンテキスト名のディレクトリが在るかどうかを検索する.
  3. ディレクトリがなければ,/usr/local/tomcat/conf/Catalina/localhost/コンテキスト名.xml を検索する
  4. /usr/local/tomcat/conf/Catalina/localhost/コンテキスト名.xml の内容に従って,実際にコンテキストのあるディレクトリを決定する.
  5. コンテキストを実行し(ServletとJSPでは実行の仕方が違う),結果を apacheに返す.
    注) /usr/local/tomcat/work/Catalina/localhost には作業用ディレクトリが作成される.




連携モジュール: JKコネクタ (Tomcatと Apacheの連携を取るためのモジュール)

■ ファイルのダウンロード

  • tomcat-connectors-1.2.37-src.tar.gz
  • 学内 FTP: tomcat関連

■ モジュールのコンパイルとインストール

 # zcat tomcat-connectors-1.2.37-src.tar.gz | tar xfv -
 # cd tomcat-connectors-1.2.37-src/native
 # ./buildconf.sh
 # ./configure --with-apxs=/usr/local/apache/bin/apxs
 # make
 # make install

■ モジュールの設定

 # mkdir /usr/local/tomcat/conf/jk/
 # chmod a+rx /usr/local/tomcat/conf/jk/
 

ワーカファイル workers.properties を /usr/local/tomcat/conf/jk にコピーする




Tomcatと Apacheの設定

Apacheの設定

  • /usr/local/apache/conf/httpd.conf の最後の方の下記(赤字)の一行を有効にする. もしなければ書き足す.

Include "/usr/local/tomcat/conf/mod_jk.conf"

  • mod_jk.so の設定ファイル /usr/local/tomcat/conf/mod_jk.conf を作成する

■ Tomcatの設定

  • /usr/local/tomcat/conf/server.xml で 8080ポートを使用しないように変更する.
  • 変更箇所は server.xml の赤字の部分.ただし,useBodyEncodingForURI="true" はPOSTで漢字コードが化けないようにするためのもの

■ Tomcatと Apacheの再起動

 # /etc/init.d/tomcat stop
 # /etc/init.d/apache restart
 # /etc/init.d/tomcat start
 



動作の確認


演習用サーバのページ(貴方のサーバで,ここと同じようなものが見えればOK)

Last modified: Saturday, 29 September 2012, 04:53 PM
Skip Navigation

Navigation


You are currently using guest access (Login)