satoshiabe.jp : Installing Apache Tomcat
HOME > DOCUMENTS > GNU/Linux > Installing Apache Tomcat
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 が何なのか?については、AJPv13 や Ajp13 (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 Driver の 8.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
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)