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)」といったエラーが出る。原因はコンパイル用のJavaとTomcat内蔵のJavaのバージョンの不整合による。
version 48.0:JDK1.4でコンパイルされたクラス (Tomcat5.0のクラス) version 49.0:JDK1.5でコンパイルされたクラス (Webアプリケーションのクラス)
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用の追加サポートをインストールする必要がある。
インストールガイド
- JDK 5.0 Solaris オペレーティングシステム (32 ビット) 版
- JDK 5.0 Solaris (SPARC Platform Edition) オペレーティングシステム (64 ビット) 版
- JDK 5.0(32bit版+64bit版)のダウンロード
- [JDK 5.0 Update 13」の[Download]をクリックする。
- [Accept]を選ぶ。
- [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) ]にチェックを入れる。
- [Download selected with Sun Download Manager]をクリックし[開く]を選択すると、Sun Download Managerが起動する。
- ローカルPCの場所を指定して[Start]でダウンロードする。
- JDK 5.0 32bit版のインストール
- JDK 5.0 64bit版の追加のインストール
- Javaのバージョンの確認
- 環境変数の設定
ローカル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
ローカル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
Javaのバージョンを確認する。
$ [jdk1.5.0_13のディレクトリ]/bin/java -fullversion java full version "1.5.0_13-b05"
JAVA_HOME=[jdk1.5.0_13のディレクトリ]
Tomcatのインストールと設定
- Tomcat 5.5のインストール
- server.xmlの設定
- CGIを有効にする設定
- jarファイル名の変更
- web.xmlの設定
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
ポートが既存のTomcatの[ポート番号A]と競合する場合は変更する。
<Connector port="[ポート番号A]" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" /> ↓変更 <Connector port="[ポート番号B]" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
Tomcat5.5からCGIが利用可能になった。
デフォルトでは、CGIスクリプトは、WEB-INF/cgi以下、CGIの言語はperl、サーブレットマッピングは、/cgi-bin/* である。
参考サイト:
$ cd [Tomcatルートディレクトリ]/server/lib $ mv servlets-cgi.renametojar servlets-cgi.jar
web.xmlのcgiサーブレットの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の設定
- Apache 2.2のインストール
- ビルトインモジュールの確認
- httpd.confの設定
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
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 :
ポートが既存の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の連携
- 環境変数の設定
- Webサーバー起動
- Web表示テスト
- Webサーバー停止
同時に元のJava4.0とTomcat5.0で動かすWebアプリケーションがある場合は、javaバージョン毎の環境変数設定スクリプトを作成して使用すると便利。
$ cd $ source set_java
# JAVA_HOME=[jdk1.5.0_13のディレクトリ] CATALINA_HOME=[Tomcatルートディレクトリ] export JAVA_HOME CATALINA_HOME PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin export PATH
Tomcat→Apacheの順に起動する。
情報の流れは、Webブラウザの[ポート番号A]からApache2.2.6→[ポート番号B]からTomcat5.5.25→Apache2.2.6→Webブラウザ、となる。
$ cd [Tomcatルートディレクトリ]/bin $ sh startup.sh $ cd [Apacheルートディレクトリ]/bin $ ./apachectl start
テストして表示されれば連携は成功。→OK!
http://[URL]:[ポート番号A]/jsp-examples/ http://[URL]:[ポート番号A]/servlets-examples/ http://[URL]:[ポート番号A]/manager/status/
$ cd [Apacheルートディレクトリ]/bin $ ./apachectl stop -k graceful-stop (graceful-stopはリクエスト処理中のクライアントの終了を待つオプション) $ cd [Apacheルートディレクトリ]/bin $ sh shutdown.sh
Tomcatの起動に失敗する場合は「TomcatとApacheの起動方法」を参照のこと。