Tomcat 4 の設定 (webapp編)
下記は、Redhat Linux のシステムを使用し、必要なすべてのモジュールが /usr/local/src にダウンロードされているものとして説明をします。また、ほとんどのモジュールを /usr/local にインストールします。# はプロンプトで、スーパーユーザー(root) での作業であることを意味します。
JDK
JDK を入手しインストールします。
Java(TM)
2 Platform, Standard Edition より JDK 1.4をダウンロードする(ここでは、Tar シェルスクリプト版を使用)。
# cd /usr/local # sh src/j2sdk-1_4_0_01-linux-i586.bin Sun Microsystems, Inc. Binary Code License Agreement READ THE TERMS OF THIS AGREEMENT AND ANY PROVIDED SUPPLEMENTAL LICENSE TERMS (COLLECTIVELY "AGREEMENT") ... Do you agree to the above license terms? [yes or no] yes ... Done. #
利用するシェルに応じた形式で、 JAVA_HOME, PATH, CLASSPATH 環境変数を設定します。
sh, bash 系の場合: JAVA_HOME=/usr/local/j2sdk1.4.0_01 CLASSPATH=.:$JAVA_HOME/lib/tools.jar PATH=$PATH:$JAVA_HOME/bin export JAVA_HOME CLASSPATH PATH csh 系の場合: setenv JAVA_HOME /usr/local/j2sdk1.4.0_01 setenv CLASSPATH .:$JAVA_HOME/lib/tools.jar set path=($path $JAVA_HOME/bin) 動作チェック: # java -version java version "1.4.0_01" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0_01-b03) Java HotSpot(TM) Client VM (build 1.4.0_01-b03, mixed mode) #
Apache + Tomcat 4
バイナリーおよびソースを入手します。
Apache (HTTP Server) | http://www.apache.org/dist/httpd/ |
Tomcat 4 (Servlet 2.3/JSP 1.2) | http://jakarta.apache.org/builds/jakarta-tomcat-4.0/ |
jakarta-tomcat-4.0.4.tar.gz jakarta-tomcat-connectors-4.0.4-src.tar.gz |
|
APR (Apache Portable Runtime) | http://apr.apache.org/ から最新のものをダウンロード |
ANT (Java-based build tool) | http://www.apache.org/dist/ant/から最新のものをダウンロード |
HTTP サーバーである Apacheのインストール
DSO(Dynamic Shared Object) をサポートするように設定します。
# gzip -dc apache_1.3.26.tar.gz | tar xf - # cd apache_1.3.26 # ./configure --enable-module=so Configuring for Apache, Version 1.3.26 + using installation path layout: Apache (config.layout) ... # make # make install
Apache の設定ファイルである httpd.conf をチェックします。Redhat で既に HTTP サーバーが起動している場合、それを停止するか、新しくインストールした Apache の Port を変更(たとえば 8080、ただし Tomcat でデフォルトで設定されているポートがあるので注意が必要)する。
# /usr/local/apache/bin/apachectl configtest Syntax OK #
Servlet/JSP である Tomcat のインストール
必要なものが揃っているバイナリ版(jakarta-tomcat-4.0.4.tar.gz)をインストールします。Pure Java なコードなのでバイナリーがどのマシンでも動作します...ここでは説明しませんが、もしソースから作る場合、多くのアーカイブが必要になります。ソースパッケージに含まれる BUILDING.txt を参照してください(ANTを利用してコンパイル。ついでにインストールしておきます)。
# cd /usr/local # gzip -dc src/jakarta-tomcat-4.0.4.tar.gz | tar xf - # gzip -dc src/jakarta-ant-1.4.1-bin.tar.gz | tar xf -
ApacheとTomcatを連携させるためのコネクタのインストール
コネクタには、AJP13 と WARP という二つのメジャーなコネクタがあります。AJP13(mod_jk)は、安定したバージョンで、複数の Tomcat サーバーを利用して load-balancing を行うことができます。WARP(mod_webapp)は、まだ発展している段階ですが、わかりやすいセットアップとStreamlined protocol を採用しています。
mod_jkを利用する場合:コネクタのバイナリーが見つからなかったので、ソース(jakarta-tomcat-connectors-4.0.4-src.tar.gz)から作ります。mod_jk のコンパイルには GNU autoconf, libtool が必要です。存在しなかったり古いバージョンの時は、新しいパッケージをインストールします(./configure;make;make check;make install と簡単なので詳細は省略します)。
# cd /usr/local/src # gzip -dc jakarta-tomcat-connectors-4.0.4-src.tar.gz | tar xf - # cd jakarta-tomcat-connectors-4.0.4-src/jk/native # ./buildconf.sh libtoolize --force --automake --copy ... autoconf # ./configure --with-apxs=/usr/local/apache/bin/apxs \ > --with-java-home=/usr/local/j2sdk1.4.0_01 checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes ... config.status: creating common/list.mk config.status: creating jni/Makefile # make # cp apache-1.3/mod_jk.so /usr/local/apache/libexec/
Apache の設定ファイル httpd.conf に mod_jk モジュールをロードする設定を追加します。最後の行に追加します。
# edit /usr/local/apache/conf/httpd.conf include /usr/local/jakarta-tomcat-4.0.4/conf/mod_jk.conf
コネクタの設定を行います。/usr/local/jakarta-tomcat-4.0.4/conf/mod_jk.conf の作成。
LoadModule jk_module libexec/mod_jk.so JkWorkersFile /usr/local/jakarta-tomcat-4.0.4/conf/workers.properties JkLogFile /usr/local/apache/logs/mod_jk.log JkLogLevel info JkMount /examples/*.jsp ajp13 JkMount /examples/servlet/* ajp13 Alias /examples "/usr/local/jakarta-tomcat-4.0.4/webapps/examples" <Directory "/usr/local/jakarta-tomcat-4.0.4/webapps/examples"> Options Indexes FollowSymLinks MultiViews </Directory> <Directory "/usr/local/jakarta-tomcat-4.0.4/webapps/examples/WEB-INF"> AllowOverride None deny from all </Directory>
コネクタの設定を行います。/usr/local/jakarta-tomcat-4.0.4/conf/workers.properties の作成。
workers.tomcat_home=/usr/local/jakarta-tomcat-4.0.4 workers.java_home=/usr/local/j2sdk1.4.0_01 ps=/ worker.list=ajp13 worker.ajp13.port=8009 worker.ajp13.host=localhost worker.ajp13.type=ajp13
変更したの設定ファイル httpd.conf をチェックします。
# /usr/local/apache/bin/apachectl configtest Syntax OK #
Tomcat自身は、HTTPサーバとして使用しないので設定ファイルを変更します。
# edit /usr/local/jakarta-tomcat-4.0.4/conf/server.xml <!-- Define a non-SSL HTTP/1.1 Connector on port 8080 --> <!-- <Connector className="org.apache.catalina.connector.http.HttpConnector" port="8080" minProcessors="5" maxProcessors="75" enableLookups="true" redirectPort="8443" acceptCount="10" debug="0" connectionTimeout="60000"/> -->
動作させるには、まず、Tomcat を起動してから Apache を起動します。JAVA_HOME 環境変数が設定されてなければなりません(上記 JDK 1.4 のインストールを参考にしてください)。
Tomcat の起動: # /usr/local/jakarta-tomcat-4.0.4/bin/catalina.sh start Using CATALINA_BASE: /usr/local/jakarta-tomcat-4.0.4 Using CATALINA_HOME: /usr/local/jakarta-tomcat-4.0.4 Using CATALINA_TMPDIR: /usr/local/jakarta-tomcat-4.0.4/temp Using JAVA_HOME: /usr/local/j2sdk1.4.0_01 Tomcat の停止: # /usr/local/jakarta-tomcat-4.0.4/bin/catalina.sh stop Using CATALINA_BASE: /usr/local/jakarta-tomcat-4.0.4 Using CATALINA_HOME: /usr/local/jakarta-tomcat-4.0.4 Using CATALINA_TMPDIR: /usr/local/jakarta-tomcat-4.0.4/temp Using JAVA_HOME: /usr/local/j2sdk1.4.0_01
最後に Apache を起動して、ブラウザーを使って動作確認をします。
# /usr/local/apache/bin/apachectl start
ブラウザーで http://<servername>/examples/jsp/dates/date.jsp にアクセスすることできちんと動作しているか確認できます。
Webアプリケーションは、mod_jk の設定ファイル(mod_jk.conf)に JkMount を記述し、Tomcatの設定ファイル(server.xml)にContextを記述することで追加することができます。
mod_webappを利用する場合:コネクタのバイナリーが見つからなかったので、ソース(jakarta-tomcat-connectors-4.0.4-src.tar.gz)から作ります。mod_webapp のコンパイルには GNU autoconf, libtool が必要です。存在しなかったり古いバージョンの時は、新しいパッケージをインストールします(./configure;make;make check;make install と簡単なので詳細は省略します)。
# cd /usr/local/src # gzip -dc apr_20020#########.tar.gz | tar xf - # cd apr # ./buildconf buildconf: checking installation... ... Creating configure ... # cd .. # gzip -dc jakarta-tomcat-connectors-4.0.4-src.tar.gz | tar xf - # cd jakarta-tomcat-connectors-4.0.4-src/webapp # ./support/buildconf.sh --- Checking "autoconf" version ... --- All done # ./configure --with-apr=/usr/local/src/apr \ > --with-apxs=/usr/local/apache/bin/apxs Configuring WebApp Module + checking build system type... i686-pc-linux-gnu ... config.status: creating apache-1.3/Makefile config.status: creating build.properties # make # cp build/mod_webapp.so /usr/local/apache/libexec/
warp.jar も作り直したい場合は、--enable-java と --with-ant を指定して configure を実行しコンパイルする。build ディレクトリーの下に tomcat-warp.jar が作られる。JAVA_HOME 環境変数が設定されてなければなりません(上記 JDK 1.4 のインストールを参考にしてください)。
# ./configure --with-apr=/usr/local/src/apr \ > --with-apxs=/usr/local/apache/bin/apxs \ > --enable-java=/usr/local/jakarta-tomcat-4.0.4 \ > --with-ant=/usr/local/jakarta-ant-1.4.1/bin/ant # make # cp build/mod_webapp.so /usr/local/apache/libexec/ # cp build/tomcat-warp.jar /usr/local/jakarta-tomcat-4.0.4/server/lib/warp.jar
Apache の設定ファイル httpd.conf に mod_webapp モジュールをロードする設定を追加します。
# edit /usr/local/apache/conf/httpd.conf LoadModule webapp_module libexec/mod_webapp.so <IfModule mod_webapp.c> WebAppConnection warpConnection warp localhost:8008 WebAppDeploy examples warpConnection /examples/ WebAppInfo info </IfModule>
変更したの設定ファイル httpd.conf をチェックします。
# /usr/local/apache/bin/apachectl configtest Syntax OK #
Tomcat自身は、HTTPサーバとして使用しないので設定ファイルを変更します。機能を使用しないようにコメントアウトします。SSL対応 HTTPサーバーとしても使用しないなら、その記述もコメントアウトします。
# edit /usr/local/jakarta-tomcat-4.0.4/conf/server.xml <!-- Define a non-SSL HTTP/1.1 Connector on port 8080 --> <!-- <Connector className="org.apache.catalina.connector.http.HttpConnector" port="8080" minProcessors="5" maxProcessors="75" enableLookups="true" redirectPort="8443" acceptCount="10" debug="0" connectionTimeout="60000"/> -->
動作させるには、まず、Tomcat を起動してから Apache を起動します。JAVA_HOME 環境変数も設定されてなければなりません(上記 JDK 1.4 のインストールを参考にしてください)。
Tomcat の起動: # /usr/local/jakarta-tomcat-4.0.4/bin/catalina.sh start Using CATALINA_BASE: /usr/local/jakarta-tomcat-4.0.4 Using CATALINA_HOME: /usr/local/jakarta-tomcat-4.0.4 Using CATALINA_TMPDIR: /usr/local/jakarta-tomcat-4.0.4/temp Using JAVA_HOME: /usr/local/j2sdk1.4.0_01 Tomcat の停止: # /usr/local/jakarta-tomcat-4.0.4/bin/catalina.sh stop Using CATALINA_BASE: /usr/local/jakarta-tomcat-4.0.4 Using CATALINA_HOME: /usr/local/jakarta-tomcat-4.0.4 Using CATALINA_TMPDIR: /usr/local/jakarta-tomcat-4.0.4/temp Using JAVA_HOME: /usr/local/j2sdk1.4.0_01
最後に Apache を起動して、ブラウザーを使って動作確認をします。
# /usr/local/apache/bin/apachectl start
ブラウザーでアクセス(http://<servername>/info/)してみると以下のような場面が表示されます。ここで、URL を指定する際に最後に必ずスラッシュ(/)を指定して下さい。JSPのサンプルは http://<servername>/examples/jsp/ にアクセスすることで確認できます。
Webアプリケーションは、Apacheの設定ファイル(httpd.conf)に WebAppDeploy を記述し、Tomcatの設定ファイル(server.xml)にContextを記述することで追加することができます。
各プログラムの起動とシステムへの登録
各ユーザーが設定しておくと便利な環境変数
sh, bash 系の場合 | JAVA_HOME=/usr/local/j2sdk1.4.0_01 CLASSPATH=.:$JAVA_HOME/lib/tools.jar CATALINA_HOME=/usr/local/jakarta-tomcat-4.0.4 ANT_HOME=/usr/local/jakarta-ant-1.4.1 PATH=$PATH:$JAVA_HOME/bin:$ANT_HOME/bin export JAVA_HOME CLASSPATH CATALINA_HOME ANT_HOME PATH |
csh 系の場合 | setenv JAVA_HOME /usr/local/j2sdk1.4.0_01 setenv CLASSPATH .:$JAVA_HOME/lib/tools.jar setenv CATALINA_HOME /usr/local/jakarta-tomcat-4.0.4 setenv ANT_HOME /usr/local/jakarta-ant-1.4.1 set path=($path $JAVA_HOME/bin $ANT_HOME/bin) |
システム起動時に自動的に Tomcat や Apache を起動させたい場合、/etc/rc.d/init.d 以下にスクリプトを用意しておく(Linux の場合、chkconfig コマンドを利用できるように設定しておくと便利)
Tomcat | /usr/local/jakarta-tomcat-4.0.4/bin/catalina.sh start /usr/local/jakarta-tomcat-4.0.4/bin/catalina.sh stop |
Apache | /usr/local/apache/bin/apachectl start /usr/local/apache/bin/apachectl stop |
Webアプリケーションの登録
コンパイルした Java のコード(Servlet)を、Web アプリケーションとして利用できるようにするには、決められたディレクトリー構成と幾つかの設定ファイルが必要になります。まず、web.xml にサーブレットを登録することで、WEB-INF/classesの下に置いたServletを指定したサーブレット名でアクセス出来るようになります。ここでは、mytest という Webアプリケーションの登録を例に説明します。
【JSPのサンプル】
<%@ page contentType="text/html; charset=EUC-JP" %> <html><body> <% out.println("<h2>Hello World !!</h2>"); out.println("<p>JSPのサンプル</p>"); %> </body></html>
【サーブレットのサンプル】
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloServlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { PrintWriter out = res.getWriter(); res.setContentType("text/html; charset=EUC-JP"); out.println("<html><body>"); out.println("<h2>Hello World !!</h2>"); out.println("<p>Servletのサンプル</p>"); out.println("</body></html>"); out.close(); } }
【web.xml のサンプル】
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app> <servlet> <servlet-name>HelloWorld</servlet-name> <servlet-class>HelloServlet</servlet-class> </servlet> </web-app>
次に、web.xml, HelloServlet.class といったファイルを以下のようなディレクトリー構成にします。Tomcat では、webapps という Servlet を置くところがデフォルト(docBase:デフォルトのルート)で存在するので、その下に mytest という Web アプリケーションを構築します。
/usr/local/jakarta-tomcat-4.0.4/webapps/mytest/hello.jsp /usr/local/jakarta-tomcat-4.0.4/webapps/mytest/WEB-INF/web.xml /usr/local/jakarta-tomcat-4.0.4/webapps/mytest/WEB-INF/classes/HelloServlet.class
Web アプリケーションとして利用できるように、Tomcat へ Context の追加と Apache へ JkMount または WebAppDeploy の追加を行ないます。
Tomcat への Context の追加は、Tomcat の設定ファイルである server.xml を編集します。Host タグ内に登録してください。
/usr/local/jakarta-tomcat-4.0.4/conf/server.xml:
... <!-- Tomcat Examples Context --> ... </ResourceParams> </Context> <!-- MyTest WebApp Context --> <Context path="/mytest" docBase="mytest" debug="0" reloadable="true" > <Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_mytest_log." suffix=".txt" timestamp="true"/> </Context> </Host> ...
mod_jk の場合、設定ファイル(mod_jk.conf)に JkMount を追加。
/usr/local/jakarta-tomcat-4.0.4/conf/mod_jk.conf:
... JkMount /examples/*.jsp ajp13 JkMount /examples/servlet/ ajp13 JkMount /mytest/*.jsp ajp13 JkMount /mytest/servlet/ ajp13 Alias /examples "/usr/local/jakarta-tomcat-4.0.4/webapps/examples" Alias /mytest "/usr/local/jakarta-tomcat-4.0.4/webapps/mytest"
mod_webapp の場合、Apache の設定ファイル(httpd.conf)に WebAppDeploy を追加。
/usr/local/apache/conf/httpd.conf:
... <IfModule mod_webapp.c> WebAppConnection warpConnection warp localhost:8008 WebAppDeploy examples warpConnection /examples/ WebAppDeploy mytest warpConnection /mytest/ WebAppInfo info </IfModule>
それぞれの設定ファイルの編集が終わったら、tomcatと apache を再起動します。
# /usr/local/jakarta-tomcat-4.0.4/bin/catalina.sh stop # /usr/local/jakarta-tomcat-4.0.4/bin/catalina.sh start # /usr/local/apache/bin/apachectl restart
ここで、Servlet を指定(http://<servername>/mytest/servlet/HelloWorld)すると Servlet (HelloServlet.class) が実行されます。JSPを指定(http://<servername>/mytest/hello.jsp)すると JSP(hello.jsp) が実行されます。