Tomcat5.5 インストールと設定
Tomcatとは、JavaのサーブレットやJSPを動作させるために必要なアプリケーションサーバーです。
サーブレットエンジンとも呼びます。TomcatはWEBサーバーとしても動作しますが、
WEBサーバーはApacheに任せて、Apacheと連動して稼動させることが多いです。
ここでは、Tomcat5.5 のインストールから、Apache2.2 との連携までを説明します。
1.J2SEのインストール
まずは、Java 2 Platform Standard Edition をインストールします。
今回は、J2SE(TM) Development Kit 5.0 Update 6をインストールしました。
> chmod +x jdk-1_5_0_06-linux-i586-rpm.bin
> ./jdk-1_5_0_06-linux-i586-rpm.bin
jdk-1_5_0_06-linux-i586-rpm.bin に実行権限を付与して、そのまま実行します。
〜
For inquiries please contact: Sun Microsystems, Inc., 4150 Network
Circle, Santa Clara, California 95054, U.S.A. (LFI#141623/Form
ID#011801)
Do you agree to the above license terms? [yes or no] yes
Unpacking...
Checksumming...
0
0
Extracting...
UnZipSFX 5.42 of 14 January 2001, by Info-ZIP (Zip-Bugs@lists.wku.edu).
inflating: jdk-1_5_0_06-linux-i586.rpm
Preparing... ########################################### [100%]
1:jdk ########################################### [100%]
Done.
終了すると、/usr/java/jdk1.5.0_06 が作成されています。
2.ANTのコンパイル
Tomcatをコンパイルするには、ANT というものが必要になります。
apache-ant-1.6.5-src.tar.gzを展開してコンパイルを行います。
> tar zxvf apache-ant-1.6.5-src.tar.gz > export JAVA_HOME=/usr/java/jdk1.5.0_06 JAVA_HOME という環境変数に、J2SE のディレクトリを設定します。 > cd apache-ant-1.6.5 > ./build.sh ... Bootstrapping Ant Distribution ... Compiling Ant Classes 〜 BUILD SUCCESSFUL Total time: 1 minute 14 seconds > cd /usr/local > ln -s /usr/local/src/apache-ant-1.6.5/dist ant > export ANT_HOME=/usr/local/ant > export PATH=$PATH:$ANT_HOME/bin コンパイル結果が distディレクトリにありますので、 antコマンドにパスが通るように、環境変数PATHを設定しましょう。 ここでは、/usr/local 配下にdistのシンボリックリンクを作成し、 /usr/local/ant/bin としてパスを通しています。環境変数の「JAVA_HOME」と「PATH」は、次回ログイン時にも反映されるように .bashrc 等に設定を記述しておきましょう。
> vi .bashrc ANT_HOME=/usr/local/ant JAVA_HOME=/usr/java/jdk1.5.0_06 PATH=$PATH:$ANT_HOME/bin:$JAVA_HOME/bin /usr/local/ant/bin と /usr/java/jdk1.5.0_06/bin を PATH に追加 export JAVA_HOME
3.Tomcat5.5のコンパイルと実行
事前準備ができましたので、いよいよTomcatのコンパイルを行います。
apache-tomcat-5.5.17-src.tar.gzを展開して
antコマンドを実行してください。
なお、startup.sh は以下のような感じで root以外のユーザーで実行するようにしましょう。
またこの時、TOMCAT_HOME(/usr/local/tomcat) 配下のlogs、work ディレクトリは 実行ユーザーが書込み可能な状態でないといけません。
> tar zxvf apache-tomcat-5.5.17-src.tar.gz > cd apache-tomcat-5.5.17-src > ant build.xmlをもとに、antコマンドでコンパイルを行います。 Buildfile: build.xml 〜 BUILD SUCCESSFUL Total time: 13 minutes 9 seconds > ln -s /usr/local/src/apache-tomcat-5.5.17-src/build/build /usr/local/tomcat コンパイル結果が build/build ディレクトリにありますので、 /usr/local/tomcat にコピーしたり、シンボリックリンクを作成したりすると ディレクトリが簡単に辿れて便利です。
コンパイルを終えたら、binディレクトリの startup.sh を実行して、Tomcatを起動してみます。
> cd /usr/local/tomcat/bin > ./startup.sh Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/java/jdk1.5.0_06この時、ブラウザから http:// 〜 :8080/ というアドレスを入力すると、 左のような画面が出ることを確認してください。(ポート番号が8080番) また、左メニューの「Example」から、 サンプルのJSPやサーブレットが実行できることも確認してください。
なお、startup.sh は以下のような感じで root以外のユーザーで実行するようにしましょう。
またこの時、TOMCAT_HOME(/usr/local/tomcat) 配下のlogs、work ディレクトリは 実行ユーザーが書込み可能な状態でないといけません。
> su - user -c "/usr/local/tomcat/bin/startup.sh"Tomcatを停止するには、同じく binディレクトリの shutdown.sh を実行します。
> /usr/local/tomcat/bin/shutdown.sh
4.Apache との連携設定
次に、Apache と Tomcat を連携させます。
連携させるモジュールとして mod_jk2 というものが存在しますが、
Apache2.2 では mod_proxy_ajp を使うのが主流のようです。
mod_proxy_ajp はApacheのモジュールですので、 Apacheの configure で mod_proxy_ajp をコンパイルするように 指定する必要があります。
Apache のモジュールとして登録しておきます。
mod_proxy_ajp はApacheのモジュールですので、 Apacheの configure で mod_proxy_ajp をコンパイルするように 指定する必要があります。
mod_proxy_ajp の設定 > cd /usr/local/src/httpd-2.2.0 > ./configure --enable-modules=all --enable-proxy --enable-proxy-ajp --enable-ssl mod_proxy_ajp には mod_proxy も必要になります。 > make > make install Apache のコンパイル・インストールを行います。mod_jk2 は jakarta-tomcat-connectors-jk2-src-current.tar.gzを展開してコンパイルし、
Apache のモジュールとして登録しておきます。
mod_jk2 の設定 > tar zxvf jakarta-tomcat-connectors-jk2-src-current.tar.gz > cd jakarta-tomcat-connectors-jk2-2.0.4-src > cd jk/native2 > ./configure --with-apxs2=/usr/local/apache2/bin/apxs > make configureで、Apache2の apxsコマンドを指定します。 > cd .. > cp build/jk2/apache2/mod_jk2.so /usr/local/apache2/modules > cp conf/workers2.properties /usr/local/apache2/conf mod_jk2.so と workers2.properties を Apache2 の環境にコピーします。 > cd /usr/local/apache2/conf > vi httpd.conf LoadModule jk2_module modules/mod_jk2.so Apache のhttpd.confで mod_jk2モジュールを読み込むように設定します。Apacheと連携することで、Tomcatの8080番ポートが不要になります。 /usr/local/tomcat/conf/server.xml の以下の箇所をコメントで囲んでください。
<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
<!--
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
-->
<!-- Note : To disable connection timeouts, set connectionTimeout value
to 0 -->
5.アプリケーションの設定
それでは、WEBアプリケーションを作成してみましょう。
以下のようなソースを作成してください。
以下のような階層で「WEB-INF」「classes」「lib」ディレクトリを作成し、 test.jsp, TestServlet.class, web.xml を配置してください。 なお、javaのソースは不要ですので、src ディレクトリは必要ではありません。
モジュールの mod_proxy_ajp と mod_jk2 などで設定方法が変わってきます。
test.jsp
<html>
<body>
<%= JSP TEST %><br />
<a href="Test">Servet Test</a>
</body>
</html>
TestServlet.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class TestServlet extends HttpServlet
{
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<body>");
out.println("SERVLET TEST<br />");
out.println("<a href=\"test.jsp\">Jsp Test</a>");
out.println("</body>");
out.println("</html>");
}
}
web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app>
<servlet>
<servlet-name>TEST</servlet-name>
<servlet-class>TestServlet</servlet-class>
</servlet>
TEST というサーブレットは TestServlet.class です。
<servlet-mapping>
<servlet-name>TEST</servlet-name>
<url-pattern>/Test</url-pattern>
</servlet-mapping>
TEST というサーブレットは /Test というアドレスです。
</web-app>
アプリケーションのディレクトリを /home/www/java 配下に置くことにします。以下のような階層で「WEB-INF」「classes」「lib」ディレクトリを作成し、 test.jsp, TestServlet.class, web.xml を配置してください。 なお、javaのソースは不要ですので、src ディレクトリは必要ではありません。
/home/www/java | |--test.jsp | |--WEB-INF | |--web.xml | |--classes | | | |--TestServlet.class TestServlet.java をコンパイルしたファイル | |--lib jarファイル等を格納するディレクトリ | |--src | |--TestServlet.java
TestServlet.java のコンパイル
> javac -classpath /usr/local/tomcat/common/lib/servlet-api.jar TestServlet.java
servlet-api.jar を JAVA_HOME(/usr/java/jdk1.5.0_06)/jre/lib/ext にコピーしておくと
「-classpath」は必要ありません。
それでは、アプリケーションの名前を決めましょう。
ここでは簡単に「test」という名前にすることにして、
Tomcat側に「test アプリケーション」の設定を行います。
/usr/local/tomcat/conf/Catalina/localhost 配下に
「test.xml」というファイルを作成してください。
> cd /usr/local/tomcat/conf/Catalina/localhost > vi test.xml 「アプリケーション名 .xml」というファイル名 <Context path="/test" docBase="/home/www/java" debug="0" reloadable="true" /> path :アプリケーションのURLを指定します。 docBase :アプリケーションのディレクトリを指定します。 debug :デバッグレベル reloadable:trueを指定すると、classファイルが更新された時にTomcatの再起動なく更新が反映されます。今度は連携するApache側の設定です。
モジュールの mod_proxy_ajp と mod_jk2 などで設定方法が変わってきます。
mod_proxy_ajp の場合 > vi /usr/local/apache2/conf/httpd.conf Include conf/extra/httpd-proxy.conf httpd.confに httpd-proxy.conf という設定ファイルを取り込むようにしておきます。 > vi /usr/local/apache2/conf/extra/httpd-proxy.conf <Location "/test/"> ProxyPass ajp://localhost:8009/test/ </Location> /test 配下は AJP13プロトコルで Tomcat と通信します。
mod_jk2 の場合 > vi /usr/local/apache2/conf/workers2.properties [uri:/test/*] /test 配下は Tomcatに処理を任せます。
6.TomcatとApacheの起動
ここまでで、ひと通りの設定は終わりです。
Tomcat と Apache の起動を行ってください。
> su - user -c "/usr/local/tomcat/bin/startup.sh" Tomcat の起動 Tomcat のほうから先に起動します。 > /usr/local/apache2/bin/apachectl start Apache の起動
/home/www/java/test.jsp
http:// 〜 /test/test.jsp というURLアドレスになります。
http:// 〜 /test/test.jsp というURLアドレスになります。
/home/www/java/WEB-INF/classes/TestServelet.class
http:// 〜 /test/Test というURLアドレスになります。
http:// 〜 /test/Test というURLアドレスになります。
2006.05.11 Kazuhito Usui