Tomcat4.1.31 の設定と Apache2 との連携

 このページでは Apache2 と Tomcat4.1.31 の連携の仕方を掲載します。 連携する際に mod_jk.so 作成しますが、Tomcat3.3.1 の時みたいにソースからコンパイルして mod_jk.so を作成するのではなく、 ”jakarta-tomcat-connectors”からコンパイルして mod_jk2.so を作成するようになっています。
 
≪ 項目 ≫
1.Tomcatのインストールと設定
2.mod_jk2.soの作成
3.TomcatとApacheの再設定
4.起動と確認


 1.Tomcatのインストールと設定

 ◆ 必要なもの

 今回 Apache2 と Tomcat4.1.31 の連携に使用したファイルです。

ファイル名ダウンロード先
j2sdk-1_4_2_05-linux-i586.binhttp://www.sun.com
jakarta-tomcat-4.1.30.tar.gzhttp://jakarta.apache.org
jakarta-tomcat-connectors-jk2-2.0.1-src.tar.tar http://archive.apache.org/dist/jakarta/tomcat-connectors/jk2/v2.0.1/src/

 必要なのは Java、Tomcat、connectors です。
Java はJ2SDKをダウンロードします。( tomcat3.3.1 で使用した J2EESDKでも問題ないと思います。)
Tomcat と connectors の方は”http://jakarta.apache.org”からダウンロードできます。(ただし旧Versionは別みたいです。) ただし、connectors の方はバイナリーでは無くソースの方を、更に jk2 のVersion 2.0.1 をダウンロードします。 ( 2004/10/19時点での最新Versionは 2.0.4 ですが、コンパイルできませんでした。)


 ◆ Javaのインストール

 まずは Java をインストールします。 ダウンロードしてきた”j2sdk-1_4_2_05-linux-i586.bin”を”/usr/local/src”にコピーして、そのファイルに実行権限を与えます。
実行権限を与えたら、そのまま”j2sdk-1_4_2_05-linux-i586.bin”を実行します。

[root@localhost /usr/local/src]# chmod 755 j2sdk-1_4_2_05-linux-i586.bin
[root@localhost /usr/local/src]# ./j2sdk-1_4_2_05-linux-i586.bin

これで”/usr/local/src/j2sdk1.4.2_05”のディレクトリィの直下に Java のインストールされます。


 ◆ Tomcat4.1.30のインストール

 Tomcat4.1.30 をインストールする・・・と言ってもアーカイブを解凍するだけです。 以下の様に”jakarta-tomcat-4.1.30.tar.gz”を”/usr/local/src/”の直下で解凍します。

[root@localhost /usr/local/src]# tar zxvf jakarta-tomcat-4.1.30.tar.gz


 ◆ 環境の設定

 Tomcat を起動するために環境変数を設定します。 Tomcat は root権限で動作するので”/root/.bash_profile”を編集します。必要な環境変数は”JAVA_HOME”と”CATALINA_HOME”です。
( Tomcat4の場合は、”TOMCAT_HOME”ではなく”CATALINA_HOME”です。”APACHE_HOME”は宣言しておくと便利です。)
 以下の行を追加します。

export JAVA_HOME=/usr/local/src/j2sdk1.4.2_05
export APACHE_HOME=/usr/local/apache2
export CATALINA_HOME=/usr/local/src/jakarta-tomcat-4.1.30
export PATH=$PATH:/usr/local/src/j2sdk1.4.2_05/bin

 (mesg -nの上に追加します。)

 これで”$CATALINA_HOME”と指定した場合は”/usr/local/src/jakarta-tomcat-4.1.30”を指す事と同じ意味になります。


 ◆ Tomcatの起動

 上記の設定が完了したら Tomcat の起動をしてみます。
 起動と停止の仕方は以下の様にします。

  # $CATALINA_HOME/bin/catalina.sh start  ・・・起動
  # $CATALINA_HOME/bin/catalina.sh stop  ・・・停止

 実際に Tomcat を起動して、クライアントのブラウザからURLを”<< サーバーのIPアドレス >>:8080”でアクセスしてみます。
以下の様な画面が出力されればOKです。

Tomcat4_Index


 2.mod_jk2.soの作成

 次に Apache2 と Tomcat4 を連携させるため mod_jk2.so を作成します。 最初に記述した通り、管理人が最新版の”jakarta-tomcat-connectors”の 2.0.4 でコンパイルした時、どうしてもコンパイルエラーが起きて作成できませんでした。(原因がちょっと分かってません。) と言うわけで、今回は最新versionを使用せず 2.0.1 を使います。
ちなみに mod_jk2.so を作成するために使用する”jakarta-tomcat-connectors-jk2-2.0.1-src.tar.tar”は Apache2 用の mod_jk2.so だけではなく、Apache1.3 用のmod_jk.so も作成できます。


 ◆ 解凍

 まずは”jakarta-tomcat-connectors-jk2-2.0.1-src.tar.tar”を”/usr/local/src”にコピーして、アーカイブを解凍します。

[root@localhost /usr/local/src]# tar zxvf jakarta-tomcat-connectors-jk2-2.0.1-src.tar.tar

 解凍すると”/usr/local/src/jakarta-tomcat-connectors-jk2-2.0.1-src”というディレクトリィが作成されます。


 ◆ コンパイルする前に

 コンパイルする前に Apache2 をインストールしたディレクトリィの中に”libapr-0.so”というファイルが存在するか確認します。 ( mod_jk2.so を作成する際に必要です。) 標準では”$APACHE_HOME/lib”の直下にあるのですが、Apache2 をコンパイルする際の”configure”のオプションによって作成されない場合があります。 もし、”libapr-0.so”が無い場合は、Apache2 をコンパイルし直して下さい。
 今回のコンパイルは、gcc、make だけではなく automake、autoconf、libtool が必要になります。RPMSでありますので、あらかじめインストールしておいてください。


 ◆ コンパイル

 まず、上で説明した”libapr-0.so””libapr.so”というファイル名でシンボリックリンクを張ります。(コンパイル時に libapr.so というファイル名で参照されます。) ”$APACHE_HOME/lib”の直下で以下の様にします。

[root@localhost /]# cd $APACHE_HOME/lib
[root@localhost /usr/local/apache2/lib]# ln -s libapr-0.so libapr.so

 カレントを”/usr/local/src/jakarta-tomcat-connectors-jk2-2.0.1-src/jk/native2”移動させ、以下の様にコマンドを実行します。

  # ./buildconf.sh
  # ./configure --with-apxs2=/usr/local/apache2/bin/apxs
     --with-tomcat41=/usr/local/src/jakarta-tomcat-4.1.30
 (全部一行で)
  # make

 ここまででエラーが無い場合は、”/usr/local/src/jakarta-tomcat-connectors-jk2-2.0.1-src/jk/build/jk2/apache2”と言うディレクトリィがあります。 その中に”mod_jk2.so”と言うファイルが作成されるので、”$APACHE_HOME/modules”の中にコピーします。

  # cp -p mod_jk2.so $APACHE_HOME/modules

 ”mod_jk2.so”の他に”/usr/local/src/jakarta-tomcat-connectors-jk2-2.0.1-src/jk/conf”のディレクトリィの中に
”workers2.properties”と言うファイルがあります。 Apache2 と連携するための設定ファイルとして使用するので
”$APACHE_HOME/conf”へコピーしておきます。

  # cp -p workers2.properties $APACHE_HOME/conf

 以上で”mod_jk2.so”の作成は終わりです。



 3.TomcatとApacheの再設定

 ◆ ”httpd.conf”の設定

 Apache2 設定ファイルである”$APACHE_HOME/conf/httpd.conf”に、上で作成した”mod_jk2.so”をロードするように以下の様に編集します。

LoadModule jk2_module modules/mod_jk2.so

Perl の時と同じように 220行目辺りに追加します。


 ◆ Servlet用のディレクトリィの作成

 Servlet用のJavaファイルを置くディレクトリィの作成します。これは Tomcat3.3.1 の時と同じです。
 Apache で設定したHTMLデータの置くディレクトリィ(DocumentRootで指定)の直下に新しくディレクトリィを作成します。 ここでは、HTMLデータの置き場所を”/home/html-data”として、その中に Java Servletデータを置くディレクトリィとして
”lab-kage”というディレクトリィを作成する事にします。

 /home/html-data
      +--- /lab-kage
           +------ /WEB-INF
                  +--- /classes   <<--(1)
                  +--- web.xml   <<--(2)

 以上の様に作成します。”WEB-INF”と”classes”というディレクトリィ名だけ固定して作成します。 ((1) のディレクトリィの中に Java Servlet のデータが入ります。)
その他の設定も、このディレクトリィ構成になっている事を前提にして説明します。


 ◆ ”web.xml”の編集

 次にTomcat4の設定ファイルを編集します。 Tomcat4 のディレクトリィの”$CATALINA_HOME/conf”の直下に”web.xml”と言うファイルがあるので、 上記の(2)の場所にコピーをして編集をします。
 そのファイルの 290行目辺りに

  〜 省略 〜
 <!--
 <servlet-mapping>
   <servlet-name>invoker</servlet-name>
   <url-pattern>/servlet/*</url-pattern>
 </servlet-mapping>
 -->
  〜 省略 〜

とコメント化してある箇所があります。そこのコメント化の部分を外します。(太字の部分を削除します。)


 ◆ ”server.xml”の編集

 次に同じ”$CATALINA_HOME/conf”の直下にある”server.xml”を編集します。(Tomcatサーバの動作を定義する設定ファイルです。)
 まず90行目辺りに、ポート8080番の設定があるので、その設定の行をコメント化します。

 <!--
 <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
    port="8080" minProcessors="5" maxProcessors="75"
    enableLookups="true" redirectPort="8443"
    acceptCount="100" debug="0" connectionTimeout="20000"
    useURIValidationHack="false" disableUploadTimeout="true" />
 -->

 太字の部分を追加してコメント化してください。
 次に Java Servletデータの置きディレクトリィの設定をします。 以下の様に最後の方( 380行目ぐらい)に、</Context>のタグがあるのでその下に追加します。

 <Context path="/lab-kage"
   docBase="/home/html-data/lab-kage"
   debug="0"
   reloadable="true"
   crossContext="true"/>


 ◆ ”workers2.properties”の編集

 Apache が Tomcat と通信するための設定みたいです。(ちょっと詳細が分かってません。) ここの [uri:〜] で、指定したパスにアクセスされた場合、Tomcat の方へ処理を渡すようになります。
ファイルの最後の方の105行目ぐらいから、[uri:/examples] と記述されている箇所があります。 その辺りを以下の様に編集します。

 #[uri:/examples]
 #info=Example webapp in the default context.
 #context=/examples
 #debug=0

 #[uri:/examples1/*]
 #info=A second webapp, this time going to the second tomcat only.
 #group=lb_1
 #debug=0

 #[uri:/examples/servlet/*]
 #info=Prefix mapping

 #[uri:/examples/*.jsp]
 #info=Extension mapping

 #[uri:/examples/*]
 #info=Map the whole webapp

 #[uri:/examples/servlet/HelloW]
 #info=Example with debug enabled.
 #debug=10

 [uri:/lab-kage/*]  <<--(1)

 まず、初期状態で[uri:〜〜]と記述されている部分は不要ですのでコメント化します。 そして Java Servletデータを置くディレクトリィは、”lab-kage”なので (1) の様に追加します。

 以上で設定は終わりです。



 4.起動と確認

 ◆ 起動

 Tomcat を起動してから Apache を起動します。

 # $CATALINA_HOME/bin/catalina.sh start
 # $APACHE_HOME/bin/apachectl start

 停止する場合は逆にします。

 # $APACHE_HOME/bin/apachectl stop
 # $CATALINA_HOME/bin/catalina.sh stop

 ここできちんと停止できなければ設定ファイルに記述ミスがある場合があります。
(その時 Tomcat は kill コマンドでプロセスを停止させましょう。)


 ◆ 確認

 Tomcat3.3.1 の時に作成したServletのクラスファイルを使って動作テストしてみます。
”HelloWorld.calss”を”/home/html-data/lab-kage/WEB-INF/classes”の直下にコピーして Tomcat と Apache を再起動します。
 その後クライアントからブラウザを開き、URLを”<< サーバーのIPアドレス >>/lab-kage/servlet/HelloWorld”としてアクセスします。 これで画面が表示されればOKです。




先頭に戻る Web設定のページに戻る TOPページに戻る