Apache2.2-Tomcat5.5のインストールと連携方法

Apache2.2, Tomcat5.5, Java5をインストールして連携する方法を記述する。また、Apache2.0とTomcat5.0も並行して運用する。
動作確認OSは、Solaris 9である。

Java, Tomcat, Apacheの対応バージョンの関係

  • Java5.0(JDK1.5)でTomcat5.0使用時のエラー

  • Java5.0(JDK1.5)でTomcat5.0を使用すると「..(Unsupported major.minor version 49.0)」といったエラーが出る。原因はコンパイル用のJavaTomcat内蔵のJavaのバージョンの不整合による。

    version 48.0:JDK1.4でコンパイルされたクラス
                  (Tomcat5.0のクラス)
    version 49.0:JDK1.5でコンパイルされたクラス
                  (Webアプリケーションのクラス)

  • JDKTomcatのバージョンの関係


  • Java5.0(JDK1.5)を使用するには、Tomcat5.5かTomcat6が必須である。Tomcat6はファイルの構成が以前のバージョンとは異なるため、Tomcat5.5を使用することにした。



    と思い込んでいたが、後にJava5(JDK1.5)をTomcat5.0で動かすことに成功した。

    一般的な組み合わせは以下の通り。

    Java4(JDK1.4)→Tomcat4/Tomcat5.0
    Java5(JDK1.5)→Tomcat5.5/Tomcat6

    ApacheとTomcat5.5の連携には、Apache2.2以降を使えばmod_jkが不要となる。よって、WebサーバーにはJava5.0, Apache2.2, Tomcat5.5の組み合わせを採用することにした。また、既存のApache2.0, Tomcat5.0を並行して運用するので、ポートが競合しないように設定を変更する必要がある。

Java 5.0のインストールと設定

JDK 5.0をインストールする。
32bit版の自己解凍バイナリ(self-extracting file)であるjdk-1_5_0_13-solaris-sparc.shをダウンロードしてインストールする。デフォルトのJavaを置き換えたくないので、パッケージ(packages - tar.Z)からのインストール(pkgaddを使用)はしないことにした。
64bit対応とするためには、さらに64bit用の追加サポートをインストールする必要がある。
インストールガイド
  1. JDK 5.0(32bit版+64bit版)のダウンロード



    1. [JDK 5.0 Update 13」の[Download]をクリックする。

    2. [Accept]を選ぶ。

    3. [Solaris SPARC 32-bit self-extracting file]と[Solaris SPARC 64-bit self-extracting file(use 32-bit version for applet and Java Web Start support) ]にチェックを入れる。

    4. [Download selected with Sun Download Manager]をクリックし[開く]を選択すると、Sun Download Managerが起動する。

    5. ローカルPCの場所を指定して[Start]でダウンロードする。




  2. JDK 5.0 32bit版のインストール


  3. ローカルPCからSolarisの[jdkインストール用ディレクトリ]にファイルを移して、実行アクセス権を付与する。

    $ cd [jdkインストール用ディレクトリ]
    $ chmod +x jdk-1_5_0_13-solaris-sparc.sh

    自己解凍バイナリを実行する。

    $ ./jdk-1_5_0_13-solaris-sparc.sh 

    バイナリコードライセンスが表示されるので契約内容に同意すると、現在のディレクトリに jdk1.5.0_13 というディレクトリが作成され、ここにインストールされる。

    Do you agree to the above license terms? [yes or no]
    yes

  4. JDK 5.0 64bit版の追加のインストール


  5. ローカルPCからSolarisの[jdkインストール用ディレクトリ]にファイルを移して、実行アクセス権を付与する。

    $ cd [jdkインストール用ディレクトリ]
    $ chmod +x jdk-1_5_0_13-solaris-sparcv9.sh

    自己解凍バイナリを実行する。

    $ ./jdk-1_5_0_13-solaris-sparcv9.sh

    バイナリコードライセンスが表示されるので契約内容に同意すると、[jdk1.5.0_13のディレクトリ]内の複数の位置に追加されたマシンアーキテクチャモデルのディレクトリが作成され、その下に 64 ビットサポートのための補助ファイルがインストールされる。

    Do you agree to the above license terms? [yes or no]
    yes

  6. Javaのバージョンの確認


  7. Javaのバージョンを確認する。

    $ [jdk1.5.0_13のディレクトリ]/bin/java -fullversion
    java full version "1.5.0_13-b05"

  8. 環境変数の設定

  9. JAVA_HOME=[jdk1.5.0_13のディレクトリ]

Tomcatのインストールと設定

  1. Tomcat 5.5のインストール



  2. apache-tomcat-5.5.25.zipを[Tomcatインストール用ディレクトリ]下に置き、解凍する。シェルファイルに実行権を付けておく。

    $ unzip apache-tomcat-5.5.25.zip
    $ cd apache-tomcat-5.5.25/bin
    $ chmod +x startup.sh
    $ chmod +x shutdown.sh
    $ chmod +x catalina.sh
    $ chmod +x setclasspath.sh

  3. server.xmlの設定



  4. ポートが既存のTomcatの[ポート番号A]と競合する場合は変更する。

    <Connector port="[ポート番号A]" 
      enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
                     ↓変更
    <Connector port="[ポート番号B]" 
      enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />

  5. CGIを有効にする設定


  6. Tomcat5.5からCGIが利用可能になった。

    デフォルトでは、CGIスクリプトは、WEB-INF/cgi以下、CGIの言語はperlサーブレットマッピングは、/cgi-bin/* である。



    参考サイト:



    1. jarファイル名の変更

    2. $ cd [Tomcatルートディレクトリ]/server/lib
      $ mv servlets-cgi.renametojar servlets-cgi.jar

    3. web.xmlの設定



    4. web.xmlcgiサーブレットの2箇所のコメントをはずす。

      334行目付近
      <!--
          <servlet>
              <servlet-name>cgi</servlet-name>
              <servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
              <init-param>
                <param-name>debug</param-name>
                <param-value>0</param-value>
              </init-param>
              <init-param>
                <param-name>cgiPathPrefix</param-name>
                <param-value>WEB-INF/cgi</param-value>
              </init-param>
               <load-on-startup>5</load-on-startup>
          </servlet>
      -->
      
      394行目付近
      <!--
          <servlet-mapping>
              <servlet-name>cgi</servlet-name>
              <url-pattern>/cgi-bin/*</url-pattern>
          </servlet-mapping>
      -->

Apacheの設定
  1. Apache 2.2のインストール



  2. httpd-2.2.6.tar.gzを適当な場所にダウンロード。解凍してインストール。

    $ gzip -d httpd-2.2.6.tar.gz
    $ tar xvf httpd-2.2.6.tar
    $ cd httpd-2.2.6
    $ ./configure --prefix=[Apacheルートディレクトリ] --enable-proxy --enable-proxy-ajp --enable-so
    $ make
    $ make install

  3. ビルトインモジュールの確認


  4. mod_proxy,mod_proxy_ajpはビルトインモジュールなので、以下のコマンドで確認できる。

    $ [Apacheルートディレクトリ]/bin/httpd -l
    Compiled in modules:
    core.c
    mod_authn_file.c
    mod_authn_default.c
    mod_authz_host.c
      :

  5. httpd.confの設定



  6. ポートが既存のTomcatのポート番号と競合する場合は変更する。

    変更
      Listen 80 → Listen [ポート番号A]
    
    追加
     # テスト用
      <Location /jsp-examples/>
        ProxyPass ajp://localhost:[ポート番号B]/jsp-examples/
      </Location>
      <Location /servlets-examples/>
        ProxyPass ajp://localhost:[ポート番号B]/servlets-examples/
      </Location>
     # Tomcat Webアプリケーションマネージャ
      <Location /manager/>
        ProxyPass ajp://localhost:[ポート番号B]/manager/
      </Location>

Apache2.2とTomcat5.5の連携

  1. 環境変数の設定

  2. 同時に元のJava4.0とTomcat5.0で動かすWebアプリケーションがある場合は、javaバージョン毎の環境変数設定スクリプトを作成して使用すると便利。

    $ cd
    $ source set_java

    set_javaの内容(bashの場合)

    #
    JAVA_HOME=[jdk1.5.0_13のディレクトリ]
    CATALINA_HOME=[Tomcatルートディレクトリ]
    export JAVA_HOME CATALINA_HOME
    PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
    export PATH

  3. Webサーバー起動


  4. TomcatApacheの順に起動する。

    情報の流れは、Webブラウザの[ポート番号A]からApache2.2.6→[ポート番号B]からTomcat5.5.25→Apache2.2.6→Webブラウザ、となる。

    $ cd [Tomcatルートディレクトリ]/bin
    $ sh startup.sh
    
    $ cd [Apacheルートディレクトリ]/bin
    $ ./apachectl start

  5. Web表示テスト


  6. テストして表示されれば連携は成功。→OK!

    http://[URL]:[ポート番号A]/jsp-examples/
    http://[URL]:[ポート番号A]/servlets-examples/
    http://[URL]:[ポート番号A]/manager/status/

  7. Webサーバー停止

  8. $ cd [Apacheルートディレクトリ]/bin
    $ ./apachectl stop -k graceful-stop
    (graceful-stopはリクエスト処理中のクライアントの終了を待つオプション)
    
    $ cd [Apacheルートディレクトリ]/bin
    $ sh shutdown.sh

managerの設定方法については「Tomcat Webアプリケーションマネージャ」へ。
Tomcatの起動に失敗する場合は「TomcatとApacheの起動方法」を参照のこと。