JavaでHello World
Google
  HOME  |  基礎  |  掲示板  |  ツール |  書籍  |  デザインパターン  |  リンク  |  フィードバック
JavaでHello World > ApacheとTomcatの連携編  
メニュー
Home
情報交換掲示板
ツールの部屋
Java関連の書籍
アプリケーション編
Swing編
Swing(イベント)編
Swing(Look&Feel)編
アプレット編
iアプリ編
サーブレット編
サーブレット(Linux)編
サーブレット(web.xml)編
サーブレット(セッション)編
サーブレット(クッキー)編
サーブレット(フィルタ)編
JSP編
JSP(ディレクティブ)編
JSP(アクション)編
JSP(スクリプト)編
JSP(オブジェクト)編
JSP(カスタムタグ)編
JSP(データベース)編
Apache + Tomcat編
Struts編
JDBC編
JDBC(データソース)編
JDBC(MySQL)編
JDBC(PostgreSQL)編
JDBC(トランザクション)編
JavaMail(SMTP)編
JavaMail(POP)編
JNI編
RMI編
RMI(アプレット)編
CORBA編
JNDI編
EJB編
EJB(Entity Bean)編
JMS(PTP)編
JMS(Pub/Sub)編
XML(SAX)編
XML(DOM)編
XSLT編
SOAP編
国際化編
国際化(タイムゾーン)編
国際化(通貨)編
リフレクション編
コレクション編
コレクション(Set)編
コレクション(List)編
コレクション(Map)編
スレッド編
正規表現編
アサーション編
ログ機能編
サウンド編
ファイル入出力編
URL編
ソケット編
データグラム編
HTTP
FTP編
jar編
javadoc編
Ant編
外部コマンド編
プロパティファイル編
システムプロパティ編
Eclipse編
  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