satoshiabe.jp : Installing Apache Tomcat

HOME > DOCUMENTS > GNU/Linux > Installing Apache Tomcat

Installing Apache Tomcat

Updated : 2006/07/18
Created : 2006/02/21

Preface

Files

Installing JDK

Installing Apache Tomcat

Installing Apache HTTP Server

Installing Apache Ant

Installing Apache Tomcat Connector

Installing PostgreSQL

Installing Struts

Links

Preface

Servlet, JSP のコンテナである Apache Tomcat を使用し、簡単なアプリケーションサーバのプラットフォームを構築してみる、作業メモ。 徐々に修正、追記する予定。 openSUSE 10.1 on ThinkPad R52 1858-13I で メモリ + 512 MB な環境。

Files

用意したファイル。 まだ本文で触れていないファイルが存在する。

apache-ant-1.6.5-bin.tar.gz httpd-2.0.58.tar.gz jakarta-tomcat-5.0.28.tar.gz jakarta-tomcat-connectors-1.2.15-src.tar.gz jdk-1_5_0_07-linux-i586.bin openssl-0.9.8b.tar.gz postgresql-8.1.4.tar.gz struts-1.2.9-bin.tar.gz

Installing JDK

Tomcat は Java で記述されているため、Java の実行環境がインストールされていなければならない。 Java Technology から、最新の JDK をダウンロードし、インストールする。 distribution のインストールで既に JDK がインストールされているなら、アンインストールする。

# /bin/sh jdk-1_5_0_07-linux-i586.bin ### 延々とメッセージが表示されるため space でスキップする ### 最後に yes と入力し Enter キーを押下する # ls -1 jdk-1_5_0_07-linux-i586.bin jdk1.5.0_07/ # mv jdk1.5.0_07/ /usr/local # cd /usr/local # ln -s jdk1.5.0_07 java # ls -l /usr/local/j* java -> jdk1.5.0_07/ jdk1.5.0_07/ #

環境変数を設定する。

# vi /etc/profile JAVA_HOME=/usr/local/java PATH=$JAVA_HOME/bin:$PATH export PATH :wq

再ログインして正しく設定されたかを確認する。

% java -version java version "1.5.0_07" Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_07-b03) Java HotSpot(TM) Client VM (build 1.5.0_07-b03, mixed mode, sharing) %

既にインストールされていた JDK をアンインストールする。

# rpm -e java-{version}

Installing Apache Tomcat

http://tomcat.apache.org/ から binary ファイルをダウンロードして Tomcat をインストールする。 ファイルを展開し、正常に起動するかを確認する。

# tar xzvf jakarta-tomcat-5.0.28.tar.gz

Tomcat を start, stop する方法。

### Starting Tomcat 1 ### ### STDOUT と STDERR が $TOMCAT_BASE/logs/catalina.out に出力される % ./jakarta-tomcat-5.0.28/bin/catalina.sh start ### Starting Tomcat 2 ### ### STDOUT と STDERR が current terminal に出力される % ./jakarta-tomcat-5.0.28/bin/catalina.sh run ### Stopping Tomcat ### % ./jakarta-tomcat-5.0.28/bin/catalina.sh stop

Tomcat をスタートしたら Web ブラウザで http://ip_address:8080/ を表示して確認する。 正常に表示されているかを確認する。

続いて、Tomcat をインストールしたディレクトリを移動し、シンボリックリンクを作成する。

% su - # mv jakarta-tomcat-5.0.28/ /usr/local/ # chown -R root:root /usr/local/jakarta-tomcat-5.0.28/ # ln -s /usr/local/jakarta-tomcat-5.0.28/ /usr/local/tomcat

安全な再起動。

% /usr/local/tomcat/bin/shutdown.sh % ps auxww % /usr/local/tomcat/bin/startup.sh

My First JSP

JSP ページを表示できるかも試験しておく。 Tomcat の DocumentRoot(と呼ぶのか不明)は /usr/local/tomcat/webapps/ROOT だ。 ここに my_first_jsp.jsp を作成して試験してみる。 現在の時刻が表示されるはずだ。

http://ip_address:8080/my_first_jsp.jsp

# vi /usr/local/tomcat/webapps/ROOT/my_first_jsp.jsp <%@ page contentType="text/html; charset=EUC-JP" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=EUC-JP"> <title>JSP test page</title> </head> <body> <%= new java.util.Date() %> </body> </html> :wq

Installing Apache HTTP Server

Tomcat 単体でも Web サーバとして動作させられるが、いくつかの理由から Apache HTTP Server をフロントエンドに設置し、動的ページの処理をバックエンドの Tomcat に任せるように設定する。

Apache HTTP Server をインストールする。

% tar xzvf httpd-2.0.58.tar.gz % cd httpd-2.0.58 % ./configure --enable-so % make % su # make install clean

httpd.conf を編集する。 ServerName は IP アドレスにしているが、環境にあわせて記述すること。

# cp /usr/local/apache2/conf/httpd.conf /usr/local/apache2/conf/httpd.conf.bk # vi /usr/local/apache2/conf/httpd.conf #ServerName www.example.com:80 ServerName ip_address:80 :wq

httpd を起動する。

# /usr/local/apache2/bin/apachectl start

Apache HTTP Server 単体で正常動作していることを確認するため、http://ip_address/ を Web ブラウザで表示してみること。

My First Servlet

Servlet を作成する手順をメモしておく。

ます、Servlet プログラムを deploy するディレクトリを作成する。 WEB-INF ディレクトリ配下に classes ディレクトリと lib ディレクトリを作成する。

# mkdir -p $CATALINA_HOME/webapps/mydir/WEB-INF/{classes,lib}

設定ファイルを作成する。

# vi /usr/local/tomcat/conf/Catalina/localhost/mydir.xml <Context path="/mydir" docBase="/usr/local/tomcat/webapps/mydir" reloadable="falese"/> :wq #

設定ファイルを作成する。

# vi /usr/local/tomcat/webapps/mydir/WEB-INF/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>Hello</servlet-name> <servlet-class>HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Hello</servlet-name> <url-pattern>/Hello</url-pattern> </servlet-mapping> </web-app> :wq #

Servlet プログラムを作成する。

# vi /usr/local/tomcat/webapps/mydir/WEB-INF/classes/HelloServlet.java import java.io.*; import java.text.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloServlet extends HttpServlet { public void doGet( HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException { res.setContentType("text/html"); PrintWriter out = res.getWriter(); out.println("<html>"); out.println("<body>"); out.println(new java.util.Date()); out.println("</body>"); out.println("</html>"); } } :wq #

コンパイルする。

# javac -classpath /usr/local/tomcat/common/lib/servlet-api.jar \ /usr/local/tomcat/webapps/mydir/WEB-INF/classes/HelloServlet.java

Tomcat を再起動する。

# /usr/local/tomcat/bin/catalina.sh stop # /usr/local/tomcat/bin/catalina.sh start

http://ip_address/mydir/Hello を Web ブラウザで表示して確認する。

Installing Apache Ant

Apache Ant をインストールする。

# tar xzvf apache-ant-1.6.5-bin.tar.gz # ls -d1 apache-ant-1.6.5* apache-ant-1.6.5 apache-ant-1.6.5-bin.tar.gz # mv apache-ant-1.6.5/ /usr/local/ # cd /usr/local # ln -s apache-ant-1.6.5/ ant

環境変数を設定する。

# vi /etc/profile PATH=$PATH:/usr/local/apache/bin export PATH :wq

Installing Apache Tomcat Connector

Apache HTTP Server と Apache Tomcat を接続するための Apache Tomcat Connector を設定する。

Apache HTTP Server と Tomcat を専用のプロトコルで接続する connector は、様々な実装が存在するらしい。 Web で検索すると頻繁にヒットする JK2 は 11/2004 に officially unsupported になっている。 本ドキュメントでは、正式にメンテナンスされている JK 1.2 を使用する。

# tar xzvf jakarta-tomcat-connectors-1.2.15-src.tar.gz # cd jakarta-tomcat-connectors-1.2.15-src/jk/native/ # ./buildconf.sh # ./configure --with-apxs=/usr/local/apache2/bin/apxs # make # cp apache-2.0/mod_jk.so /usr/local/apache2/modules/

httpd.conf に以下の行を追記する。

LoadModule jk_module modules/mod_jk.so

mod_jk のコンフィギュレーションファイルを設定する。 AJP が何なのか?については、AJPv13Ajp13 (Tomcat API Documentation) が参考になる、かもしれない。

# cp jakarta-tomcat-connectors-1.2.15-src/jk/conf/workers.properties /usr/local/apache2/conf/ # vi /usr/local/apache2/conf/workers.properties #workers.tomcat_home=/var/tomcat3 workers.tomcat_home=/usr/local/tomcat #workers.java_home=/opt/IBMJava2-13 workers.java_home=/usr/loca/java #worker.list=ajp12, ajp13 worker.list= ajp13 worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)tomcat.jar #worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)tomcat.jar worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)bin$(ps)classic$(ps)jvm.dll #worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)bin$(ps)classic$(ps)jvm.dll #worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)lib$(ps)i386$(ps)classic$(ps)libjvm.so worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)lib$(ps)i386$(ps)classic$(ps)libjvm.so

mod_jk.conf ファイルを作成する。

# vi /usr/local/apache2/conf/mod_jk.conf JkWorkersFile conf/workers.properties JkLogFile logs/mod_jk.log JkLogLevel info JkLogStampFormat "{%a %b %d %H:%M:%S %Y}" JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories JkRequestLogFormat "%w %V %T" JkMount /* ajp13

Tomcat が 8080 port で反応しないよう設定を変更する。

# vi /usr/local/tomcat/conf/server.xml ### 次の 1 行 <!-- Stop 8080 Port <Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" /> ### 次の 1 行 --> <!-- Note : To disable connection timeouts, set connectionTimeout value to 0 -->

確認手順

0.
既に Apache HTTP Server と Apache Tomcat が起動しているなら、Apache HTTP Server -> Apache Tomcat の順で停止する。

1.
Apache Tomcat を起動する。

2.
Apache HTTP Server を起動する。

3.
前に作成した JPS ファイルを表示できるかを確認する。

Installing PostgreSQL

PostgreSQL をインストールする。

PostgreSQL 用にユーザとグループを追加する。

# groupadd postgres # useradd -g postgres -d /home/postgres postgres

インストール先のディレクトリを作成し、オーナとグループを変更する。

# mkdir /usr/local/pgsql # chown postgres:postgres /usr/local/pgsql/

インストールする。

--enable-unicode-conversion は、PostgreSQL 7.2 から --enable-multibyte するだけでこの機能が有効になるので, configure を実行するときに --enable-unicode-conversion オプションを指定する必要がなくなっている。
--enbable-multibyte は PostgreSQL 7.3 以降だと default で有効。
--with-java オプションは無視される。jar ファイルを適切なディレクトリに配置すること。

# su - postgres % tar xzvf postgresql-8.1.4.tar.gz % chown -R postgres:postgres postgresql-8.1.4/ % su - # postgresql-8.1.4/ /usr/local/ # exit % cd /usr/local/postgresql-8.1.4/ % ./configure --without-readline --without-zlib % make All of PostgreSQL successfully made. Ready to install. % make check . . . ====================== All 98 tests passed. ====================== % make install clean

JDBC ドライバを JDBC Driver8.1-407 JDBC 3 からダウンロードし、適切なディレクトリに配置する。 既に Tomcat が起動しているなら再起動すること。

# cp postgresql-8.1-407.jdbc3.jar /usr/local/tomcat/common/lib/

~/.bashrc ファイルコマンドサーチパスと環境変数を設定する。

% vi ~/.bashrc ### コマンドサーチパスを追加 PATH=$PATH:$POSTGRES_HOME/bin ### 環境変数を追加 export POSTGRES_HOME=/usr/local/pgsql export PGLIB=$POSTGRES_HOME/lib export PGDATE=$POSTGRES_HOME/date export MANPATH=$MANPATH:$POSTGRES_HOME/man :w % % . ~/.bashrc %

データベースクラスタを作成するディレクトリを initdb コマンドの引数として指定し実行する。

データベースクラスタとは、データベースシステムのすべてのデータを保存する領域のことを呼ぶ。
データベースシステムは、複数のデータベース、システムカタログ、データベースユーザとグループから構成される。
initdb コマンドは、--encoding オプションを指定することによりデフォルトの文字コードを指定できるが、後に作成するデータベースごとに指定もできるため、ここでは指定していない。

% initdb /usr/local/pgsql/data . . . Success. You can now start the database server using: postmaster -D /usr/local/pgsql/data or pg_ctl -D /usr/local/pgsql/data -l logfile start %

postgresql.conf を編集する。 listen_address は、どのクライアントアプリケーションからの接続を許可するのかを、ホスト名か IP アドレスで指定する。 複数のエントリを追加する場合、comma-separated list とすること。 silent_mode は、デーモンで動作させるためのオプション。 value type は boolian のようだ。

% cp /usr/local/pgsql/data/postgresql.conf /usr/local/pgsql/data/postgresql.conf.bk % vi /usr/local/pgsql/data/postgresql.conf listen_addresses = '*' silent_mode = true :wq

pg_hba.conf を編集する。

% cp /usr/local/pgsql/data/pg_hba.conf /usr/local/pgsql/data/pg_hba.conf.bk % vi /usr/local/pgsql/data/pg_hba.conf ### ファイル末尾 ### host all all 0.0.0.0 0.0.0.0 trust :wq

起動スクリプトを作成する。

% su - # mv /usr/local/src/postgresql-8.1.4/contrib/start-scripts/linux /etc/init.d/postgresql # chown root:root /etc/init.d/postgresql # chmod 755 /etc/init.d/postgresql # chkconfig --add postgresql

起動してみる。

# /etc/init.d/postgresql start # ps auxww | grep '^postgres' postgres 26079 0.0 0.8 15360 2716 ? S 17:09 0:00 /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data postgres 26082 0.0 0.8 15372 2748 ? S 17:09 0:00 postgres: writer process postgres 26083 0.0 0.5 6148 1784 ? S 17:09 0:00 postgres: stats buffer process postgres 26084 0.0 0.5 5280 1900 ? S 17:09 0:00 postgres: stats collector process # # /etc/init.d/postgresql stop

Installing Struts

Apache Struts から最新の binary ファイルをダウンロードする。 ファイルを展開した後、webapps ディレクトリに存在する struts-examples.war を、$CATALINA_HOME の webapps ディレクトリにコピーする。 その後、Tomcat をリスタートする。

# tar xzvf struts-1.2.9-bin.tar.gz # cp ./struts-1.2.9-bin/webapps/struts-examples.war /usr/local/tomcat/webapps/ # /usr/local/tomcat/bin/catalina.sh stop # /usr/local/tomcat/bin/catalina.sh start

Tomcat をリスタートしたら、http://ip_address:8080/struts-examples/ を Web ブラウザでオープンし、画面が表示されることを確認する。

Links

Apache Tomcat

ONJava.com -- Configuring Tomcat and Apache With JK 1.2 (onjava.com)

Apache Ant - Welcome (apache.org)

PostgreSQL: The world's most advanced open source database (postgresql.org)

Tomcat 5.5.15 のクラスタ信頼性評価

Email to Satoshi ABE