|
|
| |
2002/11/24 田中宏和 |
| Last Update
2003/03/05 |
|
 |
ApacheとTomcatの連携編 |
 |
|
| ◆ApacheとTomcatの連携 |
ここではTomcatをApacheに組み込んで動かしてみたいと思います。こうすることでApacheが動いている環境でもポート80でTomcatを利用することがきるようになります。ApacheとTomcatの連携にはJK2コネクタを使用します。JK2コネクタはTomcatとApacheを連携するためのモジュールです。JK2コネクタはJKコネクタの改良版として開発され設定もシンプルになっています。 |
| ◆ApacheとTomcatを連携するメリット |
TomcatとApacheを連携するメリットは以下のようなものが考えられます。
1.静的なファイル(HTMLファイルや画像ファイル)をより高速なApacheが処理し、動的なページ(サーブレット、JSP)をTomcatが処理することによって効率のよいレスポンスが実現できる。
2.ApacheのHTTPサーバとしての様々な機能を利用できるようになる。
3.1台のWebサーバに対して複数のTomcatのインスタンスを割り当てることによって負荷分散を実現できる。 |
| ◆ここでの環境 |
| OS |
RedHat Linux
7.3 |
| J2SE SDK |
1.4.1_01 |
| Tomcat |
4.1.18 |
| Apache |
1.3.23-14 |
| jakarta-tomcat-connectors-jk2 |
2.0.1 |
|
|
|
|
| ◆Tomcatのインストール |
| サーブレット(Linux)編を参考にしてTomcatを使用可能にしてください。 |
| ◆Apacheのインストール |
| ■Apacheがインストールされているか確認 |
| Linux コンソール |
[root@redhat src]# rpm -aq | grep apache apache-manual-1.3.23-14 apache-devel-1.3.23-14 apache-1.3.23-14 [root@redhat src]# |
|
| 上記のように表示されればインストールされているのインストールする必要はありません。 |
| ■Apacheのインストール |
インストールされていない場合またはアップデートしたい場合は、LinuxのCDからインストールするか、サポートサイトからダウンロードしてインストールしてください。ここでは、RedHat
7.3を使用したのでhttp://www.jp.redhat.com/のアップデートページからダウンロードしました。
ここでダウンロードしたファイル:
apache-1.3.23-14.i386.rpm
apache-devel-1.3.23-14.i386.rpm
apache-manual-1.3.23-14.i386.rpm |
rpm -Uhv RPMファイル名
というコマンドでインストールできます。 |
| Linux コンソール |
[root@redhat src]# rpm -Uhv apache-*.rpm
Preparing... ########################################### [100%]
1:apache ########################################### [ 33%]
2:apache-devel ########################################### [ 66%]
3:apache-manual ########################################### [100%]
[root@redhat src]# |
|
| ■httpd.confの編集 |
/etc/httpd/conf/httpd.confの439行目付近のServerNameのコメントアウトをはずしてサーバー名を設定してください。
ServerName localhost |
| ■Apacheの起動 |
/etc/rc.d/init.d/httpd start
というコマンドでApachetを起動できます。 |
| Linux コンソール |
[root@redhat src]# /etc/rc.d/init.d/httpd start httpdを起動中: [ OK ] [root@redhat src]# |
|
| ■Apacheの動作確認 |
| http://Linuxサーバーのアドレス/のURLを指定してApacheが動作しているかどうか確認します。 |
 |
| おおおお! |
|
|
| ◆jakarta-tomcat-connectors-jk2のダウンロード |
The
Apache Jakarta ProjectからApacheからTomcatを利用するためのモジュールのソースをダウンロードします。最新バージョンをダウンロードしてください。
ここでダウンロードしたファイル:
jakarta-tomcat-connectors-jk2-2.0.1-src.tar.gz |
| ◆jakarta-tomcat-connectors-jk2のコンパイルとインストール |
| ■ファイルの解凍 |
| Linux コンソール |
# tar -xzvf jakarta-tomcat-connectors-jk2-2.0.1-src.tar.gz |
|
| ■コンパイル |
| Linux コンソール |
# cd jakarta-tomcat-connectors-jk2-2.0.1-src/jk/native2/ # ./configure --with-apxs=/usr/sbin/apxs --with-tomcat41=/usr/local/tomcat4 # make |
|
Apache2の場合の例 cd
jakarta-tomcat-connectors-jk2-2.0.1-src/jk/native2/
./configure --with-apxs2=/usr/local/apache2/bin/apxs
--with-tomcat41=/usr/local/tomcat4
make
(makeで以下のようなエラーが出た場合) /usr/bin/ld:
cannot find -lapr
collect2: ld returned 1 exit status
以下のようにシンボリックリンクを作成してからもう一度makeします。 ln
-s /usr/local/apache2/lib/libapr-0.so /usr/local/apache2/lib/libapr.so |
|
| ■mod_jk2.soファイルとworkers2.propertiesファイルのコピー |
| Linux コンソール |
# cp ../build/jk2/apache13/mod_jk2.so /etc/httpd/modules/ # cp ../conf/workers2.properties /etc/httpd/conf/ |
|
Apache2の場合の例 cp
../build/jk2/apache2/mod_jk2.so /usr/local/apache2/modules/
cp ../conf/workers2.properties /usr/local/apache2/conf/ |
|
| ■/etc/httpd/conf/httpd.conf(/usr/local/apache2/conf/httpd.conf)ファイルの編集 |
| 以下の行をhttpd.confファイルの最後に追加します。 |
LoadModule jk2_module modules/mod_jk2.so |
|
|
|
| ◆Tomcatの設定の確認 |
| [Tomcatのフォルダ]/conf/server.xmlファイルに以下の行がコメントアウトされていないことと、ここのポート番号とworkers2.propertiesファイルに記述されているポート番号が一致していることを確認してください。 |
| ■server.xml |
| /usr/local/tomcat4/conf/server.xml |
<!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 -->
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8009" minProcessors="5" maxProcessors="75"
enableLookups="true" redirectPort="8443"
acceptCount="10" debug="0" connectionTimeout="0"
useURIValidationHack="false"
protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/> |
|
| ■workers2.properties |
| /etc/httpd/conf/workers2.properties |
[channel.socket:localhost:8009]
info=Ajp13 forwarding over socket
debug=0
tomcatId=localhost:8009 |
|
|
|
|
| ◆元々Tomcatで使用していたポート8080でのサービスを起動しないように設定 |
| [Tomcatのフォルダ]/conf/server.xmlファイルを編集して、元々Tomcatで使用していたポート8080でのサービスを起動しないように設定します。 |
| 以下の部分をコメントアウトします。赤字の部分を追加してください。 |
| /usr/local/tomcat4/conf/server.xml |
<!-- Define a non-SSL Coyote HTTP/1.1 Connector on port 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" />
--> |
|
|
| これでポート8080でのサービスは起動しなくなります。 |
|
|
| ◆ファイルの一覧表示をしないように設定 |
URLにディレクトリまでを指定した場合、Tomcatのデフォルトの設定だとファイルの一覧が表示されてしまいます。例えばhttp://<サーバー名>/<WEBアプリ名>/
というURLを指定するとWEBアプリケーションのフォルダにあるJSPなどのファイルの一覧が表示されてしまいます。これだとセキュリティ的に問題がでる場合があるのでこの一覧表示をしないように設定します。
[Tomcatのフォルダ]\conf\web.xmlの以下の部分をfalseに修正します。 |
| /usr/local/tomcat4/conf/web.xml |
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>
org.apache.catalina.servlets.DefaultServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet> |
|
|
| これでファイルの一覧表示はしないようになります。 |
|
|
| ◆Tomcatの起動 |
| Tomcatを起動します。すでに起動している場合は停止してから起動してください。 |
| Linux コンソール |
[root@redhat src]# /usr/local/tomcat4/bin/startup.sh Using CATALINA_BASE: /usr/local/tomcat4 Using CATALINA_HOME: /usr/local/tomcat4 Using CATALINA_TMPDIR: /usr/local/tomcat4/temp Using JAVA_HOME: /usr/java/j2sdk1.4.1_01 [root@redhat src]# |
|
| 起動には少し時間がかかります。 |
| ◆Apacheの再起動 |
| Linux コンソール |
[root@redhat native2]# /etc/rc.d/init.d/httpd restart httpdを停止中: [ OK ] httpdを起動中: [Sun Nov 24 17:16:16 2002] ( info) [mod_jk2.c (208)]: Set server Root /etc/httpd Create config for main host [ OK ] [root@redhat native2]# |
|
| ◆動作確認 |
| http://Linuxサーバーのアドレス/examples/servlet/HelloWorldExample のURLを開いてサーブレットのサンプルが動くか試してみてください。 |
 |
| おおおお!動作しましたね! |
|
|
| ◆Tomcatに新しくWEBアプリケーションを追加した場合の設定 |
| Tomcatに新しくWEBアプリケーションを追加した場合は、/etc/httpd/conf/workers2.propertiesファイルの最後に以下のように追加します。 |
| (例) javahelloという名前のWEBアプリケーションを追加した場合 |
[uri:/javahello/*]
[uri:/javahello/servlet/*] |
|
| 追加したらApacheを再起動してください。 |
| Linux コンソール |
[root@redhat native2]# /etc/rc.d/init.d/httpd restart httpdを停止中: [ OK ] httpdを起動中: [Sun Nov 24 17:16:16 2002] ( info) [mod_jk2.c (208)]: Set server Root /etc/httpd Create config for main host [ OK ] [root@redhat native2]# |
|
|
|
| ◆自動起動の設定 |
| ■Apacheの自動起動 |
Apacheをサーバーの起動時に自動的に起動するように設定します。chkconfigコマンドで設定できます。
chkconfig --level 2345 サービス名 on |
| Linux コンソール |
[root@redhat root]# chkconfig --level 2345 httpd on
|
|
| ■Tomcatの自動起動 |
| /erc/rc.d/rc.localファイルに以下の行を追加します。(J2SE SDKのバージョンが1.4.1_01の場合) |
| /etc/rc.d/rc.local |
export JAVA_HOME=/usr/java/j2sdk1.4.1_01 export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib/tools.jar
/usr/local/tomcat4/bin/startup.sh
|
|
|
|
|
■関連 サーブレット(Linux)編 |
■ツール
ツールの部屋 |
■書籍
Java関連の書籍 サーブレット関連の書籍 |
|
| |
|
| |
| ツールの部屋
- Java関連の書籍
- デザインパターン - 情報交換掲示板
- HOME |