Tomcatの設定



●概要

 Tomcatは、J2SDK(=JDK:J2SE Development Kit 5.0)(Javaの開発実行環境)と連携してサーバー側でJavaアプリケーションを実行して結果をWebブラウザに返します。
 Tomcatは、オープンソースのサーブレットエンジン(コンテナ)でWebサーバーとしての機能もあります。JSP&Servletを動かすには、JVM、JDK、サーブレットエンジン(Tomcat)が必要になります。WebサーバーにApache、コンテナにTomcatという組み合わせが主流ですが、その場合はApacheとTomcatの連携で別途設定が必要になります。

 FedoraでデフォルトでインストールされるGCJについては、Java Ahead-of-TimeコンパイラGCJを参照してください。
 なお、参照元にも記載されているとおり、「JDKとGCJの双方をインストールしている場合、どちらが実行されているのかが分かりにくくなる点には注意が必要です。」となっています。

 FedoraのJava環境の大幅変更に関するリリースノートはFedora Core 5 リリースノートを参照してください。リリースノートには、以下のように記載されています。
Fedora Core に Java は含まれません
JavaはSun Microsystems の商標です。完全に自由なソフトウェアスタックであるjava-gcj-compat(Fedora 10ではjava-1.5.0-gcj)はJavaではありませんが、Javaソフトウェアを実行することができるでしょう。
 GCJ及びリリースノートの件を鑑みると、GCJを削除してSUNのJava(以下、JDKという)をインストールするのが無難と思われます。
 しかし、これを実行するとOpenOffice.orgやEclipseなど、Fedoraに含まれるJavaを使用するパッケージの多くも削除されてしまいます。
 そこで、yumコマンドを使用する場合は、GCJを残したままJDKをインストールし、「alternatives」コマンドを使用してJDKを利用する環境に変更します。
 また、Tomcatは自分の環境のJDKに対応するものを選んで、ダウンロードしてください。

【Tomcatとサーブレット/JSPの対応バージョン】
Tomcat サーブレット JDK JSP
6.0系 2.5 5.0(JDK1.5.0)以上 2.1
5.5系 2.4 5.0(JDK1.5.0)以上 2.0
4.1系 2.3 JDK1.3以上 1.2
3.3系 2.2 JDK1.3以上 1.1
 Apache Tomcat Versions参照

 JDK1.2以降、Java2という名称が使われています。
 JDK1.5以降、Java2 SE 5.0 という名称が使われています。
 バージョンを正確に表すには、JDK 1.5.xx.xxという方がいいと思います。
 サンマイクロシステムズ社では、現在、5.0 が外部バージョン、1.5.0 は内部バージョンという用語で説明しています。

 Fedora場合、yumコマンドを使用してTomcat5をインストールすると、それに見合ったJDK(OpenJDK)も一緒にインストールされます。
 OpenJDKがインストールされると、自動的にOpenJDKの環境を利用するように環境が設定されます。

●alternativesコマンド

 下記は、JDKがインストールされていない場合の結果です。
# alternatives --display java
java -ステータスは自動です。
リンクは現在 /usr/lib/jvm/jre-1.5.0-gcj/bin/java を指しています。
/usr/lib/jvm/jre-1.5.0-gcj/bin/java - 優先項目 1500
 スレーブ javaws: (null)
 スレーブ keytool: /usr/lib/jvm/jre-1.5.0-gcj/bin/keytool
 スレーブ orbd: (null)
 スレーブ pack200: (null)
 スレーブ policytool: (null)
 スレーブ rmid: (null)
 スレーブ rmiregistry: /usr/lib/jvm/jre-1.5.0-gcj/bin/rmiregistry
 スレーブ servertool: (null)
 スレーブ tnameserv: (null)
 スレーブ unpack200: (null)
 スレーブ jre_exports: /usr/lib/jvm-exports/jre-1.5.0-gcj
 スレーブ jre: /usr/lib/jvm/jre-1.5.0-gcj
 スレーブ java.1.gz: (null)
 スレーブ keytool.1.gz: (null)
 スレーブ orbd.1.gz: (null)
 スレーブ pack200.1.gz: (null)
 スレーブ policytool.1.gz: (null)
 スレーブ rmid.1.gz: (null)
 スレーブ rmiregistry.1.gz: (null)
 スレーブ servertool.1.gz: (null)
 スレーブ tnameserv.1.gz: (null)
 スレーブ unpack200.1.gz: (null)
現在の「最適」バージョンは /usr/lib/jvm/jre-1.5.0-gcj/bin/java です。
 Tomcatをインストールすると、一緒にjava-1.6.0-openjdkがインストールされます。
 インストール後、alternativesコマンドで確認すると、下記のようになります。
# alternatives --display java
java - ステータスは手動です。
リンクは現在 /usr/lib/jvm/jre-1.5.0-gcj/bin/java を指しています。
/usr/lib/jvm/jre-1.5.0-gcj/bin/java - 優先項目 1500
 スレーブ javaws: (null)
 スレーブ keytool: /usr/lib/jvm/jre-1.5.0-gcj/bin/keytool
 スレーブ orbd: (null)
 スレーブ pack200: (null)
 スレーブ policytool: (null)
 スレーブ rmid: (null)
 スレーブ rmiregistry: /usr/lib/jvm/jre-1.5.0-gcj/bin/rmiregistry
 スレーブ servertool: (null)
 スレーブ tnameserv: (null)
 スレーブ unpack200: (null)
 スレーブ jre_exports: /usr/lib/jvm-exports/jre-1.5.0-gcj
 スレーブ jre: /usr/lib/jvm/jre-1.5.0-gcj
 スレーブ java.1.gz: (null)
 スレーブ keytool.1.gz: (null)
 スレーブ orbd.1.gz: (null)
 スレーブ pack200.1.gz: (null)
 スレーブ policytool.1.gz: (null)
 スレーブ rmid.1.gz: (null)
 スレーブ rmiregistry.1.gz: (null)
 スレーブ servertool.1.gz: (null)
 スレーブ tnameserv.1.gz: (null)
 スレーブ unpack200.1.gz: (null)
/usr/lib/jvm/jre-1.6.0-openjdk/bin/java - 優先項目 16000
 スレーブ javaws: /usr/lib/jvm/jre-1.6.0-openjdk/bin/javaws
 スレーブ keytool: /usr/lib/jvm/jre-1.6.0-openjdk/bin/keytool
 スレーブ orbd: /usr/lib/jvm/jre-1.6.0-openjdk/bin/orbd
 スレーブ pack200: /usr/lib/jvm/jre-1.6.0-openjdk/bin/pack200
 スレーブ policytool: /usr/lib/jvm/jre-1.6.0-openjdk/bin/policytool
 スレーブ rmid: /usr/lib/jvm/jre-1.6.0-openjdk/bin/rmid
 スレーブ rmiregistry: /usr/lib/jvm/jre-1.6.0-openjdk/bin/rmiregistry
 スレーブ servertool: /usr/lib/jvm/jre-1.6.0-openjdk/bin/servertool
 スレーブ tnameserv: /usr/lib/jvm/jre-1.6.0-openjdk/bin/tnameserv
 スレーブ unpack200: /usr/lib/jvm/jre-1.6.0-openjdk/bin/unpack200
 スレーブ jre_exports: /usr/lib/jvm-exports/jre-1.6.0-openjdk
 スレーブ jre: /usr/lib/jvm/jre-1.6.0-openjdk
 スレーブ java.1.gz: /usr/share/man/man1/java-java-1.6.0-openjdk.1.gz
 スレーブ keytool.1.gz: /usr/share/man/man1/keytool-java-1.6.0-openjdk.1.gz
 スレーブ orbd.1.gz: /usr/share/man/man1/orbd-java-1.6.0-openjdk.1.gz
 スレーブ pack200.1.gz: /usr/share/man/man1/pack200-java-1.6.0-openjdk.1.gz
 スレーブ policytool.1.gz: /usr/share/man/man1/policytool-java-1.6.0-openjdk.1.gz
 スレーブ rmid.1.gz: /usr/share/man/man1/rmid-java-1.6.0-openjdk.1.gz
 スレーブ rmiregistry.1.gz: /usr/share/man/man1/rmiregistry-java-1.6.0-openjdk.1.gz
 スレーブ servertool.1.gz: /usr/share/man/man1/servertool-java-1.6.0-openjdk.1.gz
 スレーブ tnameserv.1.gz: /usr/share/man/man1/tnameserv-java-1.6.0-openjdk.1.gz
 スレーブ unpack200.1.gz: /usr/share/man/man1/unpack200-java-1.6.0-openjdk.1.gz
 現在の「最適」バージョンは /usr/lib/jvm/jre-1.6.0-openjdk/bin/java です。
 自動的にGCJではなく、JDKが利用できるようになります。
 使用するJava環境を切り替えたい場合は、以下のコマンドを実行します。
 *が付いてるものが現在の「最適」であり、+が現在選択されている実装です。
# alternatives --config java
2 プログラムがあり 'java' を提供します。
  選択       コマンド
-----------------------------------------------
   1           /usr/lib/jvm/jre-1.5.0-gcj/bin/java
*+ 2           /usr/lib/jvm/jre-1.6.0-openjdk/bin/java
Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:
 以下のコマンドを実行すると、現在使用しているJavaのバージョンが分かります。
# java -version ← バージョンの確認
IcedTea6 1.4 (fedora-7.b12.fc10-i386) Runtime Environment (build 1.6.0_0-b12)
OpenJDK Client VM (build 10.0-b19, mixed mode)

●Tomcatのインストール(tar)

JDKのダウンロードとインストール

 JDKの自己解凍バイナリファイルをJava SE Downloadsからダウンロードします。
 「JDK 5.0 Update 17」の「ダウンロード 」をクリックして、Downloadページに移動します。
 オプションボタンの「Accept License Agreement」を選択してライセンスに同意した後に、「Linux self-extracting file(Linux 用の自己解凍バイナリファイル)」の 「jdk-1_5_0_17-linux-i586.bin」をダウンロードします。
 ダウンロードしたファイルを/usr/local/srcディレクトリに保存します。
 保存したバイナリファイルのインストールを行います。
# cd /usr/local/src
# cp jdk-1_5_0_17-linux-i586.bin /usr/local
# cd /usr/local
# chmod 755 jdk-1_5_0_17-linux-i586.bin ← 実行権限付加
# ./jdk-1_5_0_17-linux-i586.bin ← バイナリファイル抽出
使用許諾契約が出るのでスペースキーを押下する(複数回)
面倒な場合は「q」を入力する
Do you agree to the above license terms? [yes or no]
yes ← yes応答
 JDKのディレクトリを/usr/local/jdkとしてアクセスできるように、シンボリックリンクを作成します。
# ln -sfn /usr/local/jdk1.5.0_17 /usr/local/jdk ← シンボリックリンクの作成

Tomcatのダウンロードとインストール

 Tomcat 6.0のバイナリファイルをApache Tomcatからダウンロードしてインストールを行います。
# wget -P /usr/local/src http://ftp.riken.jp/net/apache/tomcat/tomcat-6/v6.0.33/bin/apache-tomcat-6.0.33.tar.gz 

# cd /usr/local/src
# tar xzf apache-tomcat-6.0.33.tar.gz -C /usr/local
 Tomcatのディレクトリを/usr/local/tomcatとしてアクセスできるようにシンボリックリンクを作成します。
# ln -sfn /usr/local/apache-tomcat-6.0.33 /usr/local/tomcat ← シンボリックリンクの作成

Tomcatの設定

 Tomcatのディレクトリを環境変数PATHに設定します。
 また、Tomcatの実行ファイルが参照するJDKのディレクトリも環境変数PATHに設定します。
# vi /etc/profile
##### Tomcat環境設定 ##### ← 最終行へ追加
export JAVA_HOME=/usr/local/jdk ← 最終行へ追加 ただし、Javaの開発実行環境で設定済みの場合は不必要
export CATALINA_HOME=/usr/local/tomcat ← 最終行へ追加
PATH=$PATH:$JAVA_HOME/bin ← 最終行へ追加
# source /etc/profile ← 環境変数を反映
 最近、TomcatディレクトリはCATALINA_HOME=/usr/share/tomcat6とする書き方が多いかもしれません。
 yumコマンドを利用してインストールした場合も、上記のように設定しておいた方が後々の作業が楽になります。
 Tomcatをユーザ権限で実行するためにtomcatユーザを作成し、ユーザ権限で実行するための設定を行います。
# useradd -d /var/empty/tomcat -s /sbin/nologin tomcat
 Tomcatのディレクトリやファイルの所有者をtomcatユーザに設定します。
# chown -R tomcat:tomcat /usr/local/apache-tomcat-6.0.33
 環境変数の設定の確認を含め、Javaの開発実行環境を参照して、サンプルプログラムの作成・実行を行います。

Tomcatの起動

 インストールしたTomcatを起動して動作の確認を行います。
 また、Tomcatの自動起動スクリプトを作成してOS起動時に自動的にTomcatが起動するように設定します。
Tomcatを起動するには以下のようにします。
# su -s /bin/bash - tomcat -c "$CATALINA_HOME/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/local/jdk
 ウェブブラウザでhttp://localhost:8080/にアクセスして、以下のように表示されることを確認します。
 またサンプルページの左メニューにある「Examples」の各サンプルを実行して、正しく動作するかを確認します。

tomcat10.jpg

 Tomcatを停止する場合は以下のようにします。
# $CATALINA_HOME/bin/shutdown.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:       /usr/local/jdk

Tomcatの自動起動スクリプト(その1)Tomcat5.shから作成バージョン

 Tomcatの自動起動スクリプトを使うことで、サーバーマシンが起動するときに自動的にTomcatを起動させることができます。
# cd /$CATALINA_HOME/bin
# tar xzvf jsvc-src.tar.gz ← jsvc-src.tar.gzを展開
# cd jsvc-src ← jsvc-srcに移動
# chmod +x configure ← 実行権限付加
# ./configure -with-java=/usr/local/jdk1.5.0_17 ← configure実行
 ↑ 環境変数JAVA_HOMEが有効になっている場合、このオプションは必要なし。
# make ← コンパイル
# ls -l
-rwxrwxr-x 1 root root  93326 2009-02-07 15:45 jsvc ← jsvcがあることを確認
# mv jsvc .. ← jsvcを/$CATALINA_HOME/binに移動
 「$CATALINA_HOME/bin/jsvc-src/native/Tomcat5.sh」をもとに自動起動用スクリプトを作成します。
 ただし、Apacheと連携させる場合は、Apacheより先にTomcatを起動する必要があるので、"# chkconfig:"で指定する優先度をApacheよりあげる必要があります。
 Tomcatの自動起動スクリプトは、/etc/rc.d/init.d/tomcatファイルとして作成します。jsvcツールを用いてサービス起動用スクリプトを作成します。
# vi $CATALINA_HOME/bin/jsvc-src/native/Tomcat5.sh
#!/bin/sh
# chkconfig: 2345 80 15 ← 追加
# description: Tomcat ← 追加
<〜中略〜>
JAVA_HOME=/usr/local/jdk1.5.0_17 ← Javaを指定
CATALINA_HOME=/usr/local/tomcat6 ← Tomcatインストール場所
DAEMON_HOME=$CATALINA_HOME ← 変更
TOMCAT_USER=tomcat ← Tomcatの実行ユーザを指定
# for multi instances adapt those lines.
TMP_DIR=/var/tmp
PID_FILE=/var/run/jsvc.pid
CATALINA_BASE=$CATALINA_HOME ← 変更
<〜中略〜>
case "$1" in
  start)
    #
    # Start Tomcat
    #
    $DAEMON_HOME/bin/jsvc \ ← jsvcのパスを指定
<〜中略〜>
  stop)
    #
    # Stop Tomcat
    #
    $DAEMON_HOME/bin/jsvc \ ← jsvcのパスを指定
<〜以下省略〜>
:w tomcat ← ファイル名「tomcat」として保存
:q! ← 「$CATALINA_HOME/bin/jsvc-src/native/Tomcat5.sh」から抜ける
# chmod +x tomcat ← 実行権限付加
 作成した自動起動スクリプトに実行権限を与えてサービスの登録を行います。自動起動スクリプトはここからダウンロード出来ます。
 Tomcat5.shの編集が終わったら「$CATALINA_HOME/bin/jsvc-src/tomcat start」および「stop」コマンドでTomcatが起動/終了するか確認してみましょう。問題ないようなら起動スクリプトを「/etc/rc.d/init.d」にコピーします。
 コピーを行うには、rootユーザであることが必要です。
$ su - ← rootユーザでない場合は、rootユーザに変更
# cp $CATALINA_HOME/bin/jsvc-src/tomcat /etc/rc.d/init.d
 ↑ /etc/rc.d/init.dディレクトリにコピー
# chkconfig --add tomcat ← tomcatスクリプトをサービスに追加
 これにより、/etc/rc2.d〜/etc/rc5.dディレクトリに以下のシンボリックリンクが作成されます。
 /etc/rcn.d/S80tomcat
 /etc/rcn.d/K15tomcat
 開始(S)や停止(K)のあとの数字が小さい順にサービスの開始や停止が行われます。
# chkconfig tomcat on ← tomcatスクリプトの有効化
   Tomcatサービスの状態を確認します。サービスの状態で、2,3,4,5がonになっていれば自動起動設定は完了です。
# chkconfig -list tomcat ← サービスの状態の確認
tomcat         0:off   1:off   2:on    3:on    4:on    5:on    6:off
 上記スクリプトにより起動している場合は、下記のように表示されます。
# ps -ef | grep tomcat
root       2190       1  0 11:52 ?        00:00:00 jsvc.exec -user tomcat -home /usr/local/jdk1.5.0_17 -Dcatalina.home=/usr/local/tomcat -Dcatalina.base=/usr/local/tomcat -Djava.io.tmpdir=/var/tmp -wait 10 -pidfile /var/run/jsvc.pid -outfile /usr/local/tomcat/logs/catalina.out -errfile &1 -Djava.library.path=/home/jfclere/jakarta-tomcat-connectors/jni/native/.libs -cp /usr/local/jdk1.5.0_17/lib/tools.jar:/usr/local/tomcat/bin/commons-daemon.jar:/usr/local/tomcat/bin/bootstrap.jar org.apache.catalina.startup.Bootstrap
tomcat    2191  2190  1 11:52 ?        00:00:03 jsvc.exec -user tomcat -home /usr/local/jdk1.5.0_17 -Dcatalina.home=/usr/local/tomcat -Dcatalina.base=/usr/local/tomcat -Djava.io.tmpdir=/var/tmp -wait 10 -pidfile /var/run/jsvc.pid -outfile /usr/local/tomcat/logs/catalina.out -errfile &1 -Djava.library.path=/home/jfclere/jakarta-tomcat-connectors/jni/native/.libs -cp /usr/local/jdk1.5.0_17/lib/tools.jar:/usr/local/tomcat/bin/commons-daemon.jar:/usr/local/tomcat/bin/bootstrap.jar org.apache.catalina.startup.Bootstrap
Tomcatの自動起動スクリプト(その2)自作バージョン

 Tomcatの自動起動スクリプトを使うことで、サーバーマシンが起動するときに自動的にTomcatを起動させることができます。
 ただし、Apacheと連携させる場合は、Apacheより先にTomcatを起動する必要があるので、"# chkconfig:"で指定する優先度をApacheよりあげる必要があります。
# vi /etc/rc.d/init.d/tomcat ← 自動起動スクリプトの作成
#!/bin/sh
#
# Startup script for Apache Tomcat
#
# chkconfig: 2345 80 15
# description: Apache Tomcat Java Servlets and JSP server
# processname: Tomcat
# pidfile: /var/run/tomcat.pid
# config: /usr/local/tomcat/conf/server.xml
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
pidfile=/var/run/tomcat.pid
export JAVA_HOME=/usr/local/jdk1.5.0_17 ← Javaを指定
export PATH=$JAVA_HOME/bin:$PATH
export TOMCAT_HOME=/usr/local/tomcat ← Tomcatインストール場所
 ↑ この行がないと、このスクリプトはシステム起動時に動作しない
export CATALINA_HOME=$TOMCAT_HOME
TOMCAT_SCRIPT=$CATALINA_HOME/bin/catalina.sh
TOMCAT_USER=tomcat ← Tomcatの実行ユーザを指定
pidfile_make="ps -ef | grep -v grep | grep $TOMCAT_HOME | awk '{print \$2}' > $pidfile"
 ↑ TomcatのプロセスID保存用ファイル作成
pidfile_del="rm -f $pidfile" ← プロセスID保存用ファイル削除
[ -f $TOMCAT_SCRIPT ] || exit 0
# See how we were called.
case "$1" in
    start)
        # Start daemons.
        if [ -f /var/lock/subsys/tomcat ] ; then
            echo "Tomcat already started!"
            exit 1
        fi
        echo "Starting Tomcat: "
        su -s /bin/bash - $TOMCAT_USER -c "$TOMCAT_SCRIPT start"
        daemon $pidfile_make ← この行がないと、[  OK  ]が表示されない
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && touch /var/lock/subsys/tomcat
        ;;
    stop)
        # Stop daemons.
        if [ ! -f /var/lock/subsys/tomcat ] ; then
            echo "Tomcat already stopped!"
            exit 1
        fi
        echo "Shutting down Tomcat: "
        su -s /bin/bash - $TOMCAT_USER -c "$TOMCAT_SCRIPT stop"
        daemon $pidfile_del ← この行がないと、[  OK  ]が表示されない
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && rm -f /var/lock/subsys/tomcat
        ;;
    status)
        status tomcat
        exit $?
        ;;
    restart)
        $0 stop
        sleep 1 ← $pidfileに一つ前のプロセスIDが残ってしまうための対処
        $0 start
        ;;
    *)
        echo "Usage: $TOMCAT_PROG {start|stop|status|restart}"
        exit 1
esac
exit 0
 作成した自動起動スクリプトに実行権限を与えてサービスの登録を行います。自動起動スクリプトはここからダウンロード出来ます。
# chmod 755 /etc/rc.d/init.d/tomcat
# chkconfig --add tomcat ← tomcatスクリプトをサービスに追加
 これにより、/etc/rc2.d〜/etc/rc5.dディレクトリに以下のシンボリックリンクが作成されます。
 /etc/rcn.d/S80tomcat
 /etc/rcn.d/K15tomcat
 開始(S)や停止(K)のあとの数字が小さい順にサービスの開始や停止が行われます。
# chkconfig tomcat on ← tomcat自動起動設定
# chkconfig --list tomcat ← tomcat自動起動設定確認
tomcat         0:off   1:off   2:on    3:on    4:on    5:on    6:off ← ランレベル2〜5のonを確認
 自動起動スクリプトを使ってTomcatを起動する場合は以下のように実行します。
# /etc/rc.d/init.d/tomcat start
 上記スクリプトにより起動している場合は、下記のように表示されます。
# ps -ef | grep tomcat
tomcat    4125       1 55 18:06 ?        00:00:02 /usr/local/jdk/bin/java -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.endorsed.dirs=/usr/local/tomcat/endorsed -classpath :/usr/local/tomcat/bin/bootstrap.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
●Tomcatのインストール(rpm)
 Tomcat 5.5からはTomcat自身にIBMが無償で提供しているJavaのJDT(Java Development Tools)コンパイラが内蔵されています。このためTomcat 5.5以降のバージョンでは、JREだけでもJSPのコンパイルを行うことが可能です。しかしTomcat 5.0以前のバージョンではJSPをコンパイルするために、JREではなくJDKが必須となります。JDKはJavaの実行環境であるJRE(Java Runtime Environment)とコンパイラやデバッガなどの開発ツールのセットです。JDKのインストールについてはSunのインストールガイドを参照ください。

 Sun JDKインストールガイド(Linux)
 http://java.sun.com/j2se/1.5.0/ja/install-linux.html#install
 または、Javaの開発実行環境を参照してください。
# yum -y install tomcat6 tomcat6-admin-webapps tomcat6-webapps
 何か、いろいろインストールされます。
tomcat6-admin-webappsをインストールしないと、Tomcat Web Server Administration Toolを使用できません。また、tomcat6-admin-webappsをインストールすると「balancer(負荷分散装置)」がインストールされます。
tomcat6-webappsをインストールしないと、http://localhost:8080/に接続してもTomcatの起動で説明しているサンプルページが表示されません。

●Tomcatのインストール先(rpm)

 yumでインストールした場合の主要なTomcat関連ファイルのインストール先を以下に示します。

関連ファイルのインストール先 概要
/usr/share/tomcat[5,6] tomcat6以下はbin以外、シンボリックリンクになっています。
/etc/sysconfig/tomcat[5,6] このファイルを編集することで、Tomcatの使う環境変数や、JVMのヒープサイズを設定することができます。
/etc/tomcat[5,6]/tomcat[5,6].conf 同上。どちらが優先されるかは環境によります。
/etc/rc.d/init.d/tomcat[5,6] システムサービスの用のスクリプトです。直接実行することもできます。
/var/lib/tomcat[5,6]/catalina.out 標準出力と標準エラー出力をリダイレクトしたログが記録されます。

 /usr/share/tomcat6以下のシンボリックのリンク先は下記のコマンドで確認できます。
# ls -l /usr/share/tomcat6
 またパッケージ管理システム(yum)によるTomcatインストールの詳細は次のコマンドで確認できます。
# rpm -ql tomcat6

●JVMの設定

 yumインストールを行った場合、Tomcatの依存関係でGCJ(GNU Compiler for Java)が入っており、yumでインストールしたTomcatはデフォルトでこのGCJを使用する設定になっています。JVMをSunのJREに変更したい場合は、/etc/sysconfig/tomcat6()を編集alternativesコマンドを使用します。
/etc/sysconfig/tomcat6と同等の設定項目を持つファイルに「/etc/tomcat6/tomcat6.conf」があります。Tomcatの起動スクリプト「/etc/init.d/tomcat6」はこの両方から環境変数などの設定を読むようになっていますが、どちらが優先されるかは環境に依存するようです。当システムでは/etc/tomcat6/tomcat6.confの設定値が優先されました。
 そこで下記の部分を修正します。
JAVA_HOME="/usr/lib/jvm/java"

JAVA_HOME="/usr/java/jre1.5.0_12/"

●Tomcatの設定

 Tomcatのディレクトリを環境変数PATHに設定します。
 また、Tomcatの実行ファイルが参照するJDKのディレクトリも環境変数PATHに設定します。
# vi /etc/profile
##### Tomcat環境設定 ##### ← 最終行へ追加
export JAVA_HOME=/usr/java/jdk1.5.0_17 ← 最終行へ追加 ただし、Javaの開発実行環境で設定済みの場合は不必要
export CATALINA_HOME=/usr/share/tomcat6 ← 最終行へ追加
PATH=$PATH:$JAVA_HOME/bin ← 最終行へ追加
# source /etc/profile ← 環境変数を反映
 環境変数の設定の確認を含め、Javaの開発実行環境を参照して、サンプルプログラムの作成・実行を行います。

●Tomcatの起動
# service tomcat6 start
# chkconfig tomcat6 on ← tomcat自動起動設定
# chkconfig --list tomcat6 ← tomcat自動起動設定確認
tomcat6         0:off   1:off   2:on    3:on    4:on    5:on    6:off ← ランレベル2〜5のonを確認
 http://localhost:8080/に接続して動作確認をします。問題がなければ、下記のように表示されます。
 表示されない場合、tomcat-webappsをインストールしてください。

tomcat01.jpg

●Tomcatの動作確認

 http://localhost:8080/jsp-examples/にアクセスしてJSP Examplesページが表示されることを確認します。
 http://localhost:8080/servlets-examples/にアクセスしてServlet Examplesページが表示されることを確認します。

 上記のリンクは、インストール方法等の違いにより下記のかもしれません。
 http://localhost:8080/examples/jsp/にアクセスしてJSP Examplesページが表示されることを確認します。
 http://localhost:8080/examples/servlets/にアクセスしてServlet Examplesページが表示されることを確認します。


●Tomcatのバージョン確認

 インストールされているtomcatのバージョンを確認するため、jspが動作するディレクトリにtest.jspを作成します。
# vi /usr/share/tomcat6/webapps/ROOT/test.jsp
<%@ page contentType="text/html" %>
<%
  out.println( application.getServerInfo() );
%>
 上記のように、・・・/webapps/ROOT/test.jspに作成した場合は、http://localhost:8080/test.jspで確認できます。

●Tomcat Webアプリケーションマネージャ

 Tomcat Webアプリケーションマネージャ はTomcat 上のコンテキストの動作(起動・停止・配備・削除など)を、管理するためのツールです。
 コンテキストの起動・停止・配備といった操作は、通常、Tomcatの再起動が必要ですが、このツールを使えば再起動なしに実行することができます。通常、このツールはブラウザを通して利用されます。
 この管理ツールを使うためのユーザの設定を行います。/etc/tomcat6/tomcat-users.xml(インストール方法によって場所が異なります)を下記のように編集します。
 ここではユーザ名、パスワードともに"manager"として設定します。
# vi /etc/tomcat6/tomcat-users.xml
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <role rolename="manager"/> ← 追加
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
  <user username="role1" password="tomcat" roles="role1"/>
  <user username="manager" password="manager" roles="manager"/> ← 追加
</tomcat-users>
パスワードが平文なので、パーミッションを適切に設定します。
# chown tomcat.tomcat /etc/tomcat6/tomcat-users.xml
# chmod 640 /etc/tomcat6/tomcat-users.xml
# service tomcat6 restart ← 設定反映のため、Tomcatの再起動
 ブラウザで次のURLにアクセスします。
 http://localhost:8080/manager/html
 すると、次のような認証ウィンドウが現れますので、先ほど設定したように、ユーザ名とパスワードを入力します(同じユーザ名とパスワードでhttp://localhost:8080/manager/statusにもアクセスできます)。

tomcat03.jpg

 認証が成功すると、下記のようなウィンドウが表示されます。

tomcat04.jpg

 登録されたコンテキストの一覧が表示され、「起動」「停止」「配備解除」などのリンクをクリックするだけでそれぞれの操作を実行することができます。

●管理用リンク(AdministrationのStatusやTomcat Manager)が404になる

 Tomcatが5.5から6.0にバージョンアップ後、administrationのStatusやTomcat Managerがページが見つからない(404)の現象が発生しました。いろいろ調べてみると、本来ファイルであるはずの箇所がなぜかディレクトリになっていました。

Tomcat-Administration
# ls -l /etc/tomcat6/Catalina/localhost
合計 8
drwxr-xr-x 2 tomcat tomcat 4096  8月 16 22:19 host-manager.xml
drwxr-xr-x 2 tomcat tomcat 4096  8月 16 22:19 manager.xml
# rm -rf /etc/tomcat6/Catalina/localhost/* ← ファイル削除
# ls -l /etc/tomcat6/Catalina/localhost
合計 0
 他のPCのファイルをSCPで移植。
# scp /etc/tomcat6/Catalina/localhost/* root@*****:/etc/tomcat6/Catalina/localhost/
host-manager.xml       100%  885     0.9KB/s   00:00    
manager.xml            100%  885     0.9KB/s   00:00    
 Tomcatを再起動後確認。正常に戻りました。

●Webアプリケーションを管理する

 Webアプリケーションの管理はアプリケーションセクションで行います。Webアプリケーションセクションには配備済みのWebアプリケーションの一覧が表示されます。アプリケーションセクションの項目は次の通りです。

Tomcat-AppManager

項目 説明
パス Webアプリケーションのコンテキストパス。
表示 web.xmlにが設定されている場合に表示されます。
実行 Webアプリケーションが実行中で使用可能な場合にtrue、実行中ではない、または使用不可な場合にfalseを表示します。
セッション Webアプリケーションにアクセスしているセッションの数。セッションのリンクをクリックするとセッション情報の詳細が閲覧できます。
コマンド Webアプリケーションに対して実行するコマンドです。Webアプリケーションマネージャ自体に対してはコマンドは実行できません。

 コマンドには、Webアプリケーションに対して実行できるものが表示されています。ここでは、起動、停止、再ロード、配備解除の4つが実行可能です。
 起動は、停止しているWebアプリケーションを起動します。停止は現在実行中のWebアプリケーションを停止し、使用不可にします。
 再ロードとは、Webアプリケーションを再起動することです。再起動することで「/WEB-INF/lib/」にある新しい「.jarファイル」や「/WEB-INF/classes/」にある新しいクラスを使えるようにします。また、再ロードではweb.xmlを書き換えた場合に新しい内容を読み込みませんので、一度「停止 → 起動」を行ってください。
 配備解除は、配備したアプリケーションを削除します。アプリケーションが「/webapps」配下にある場合は、WebアプリケーションのディレクトリおよびWARファイルが削除されます。コンテキスト設定ファイルがある場合、これも削除されます。

●Webアプリケーションの配備

 Webアプリケーションの配備は、配備セクションで行います。Webアプリケーションマネージャの配備機能を利用することで、手動でファイルのコピーやコンテキスト設定ファイルの編集を行うことなく、Webアプリケーションを配備できます。また、手動で行った場合と違い、Tomcatを再起動する必要もありません。

TomcatManagerDeploy.png

 「サーバ上のWARファイル又はディレクトリの配備」では、Tomcatと同じホスト上、または、リモートホスト上にあるWebアプリケーションをTomcatに配備することができます。
 まず、コンテキストパス(省略可能)を設定します。ここで指定したコンテキストパスがWebアプリケーションのパスになります。
 例として、コンテキストパスに/helloworldと入力した場合は「http://localhost:8080/helloworld/」がそのwebアプリケーションのパスとなります。
 省略した場合は「WARファイル又はディレクトリのURL」に指定したディレクトリ名、またはWARファイル名がそのままコンテキストパスになります。また、「XML設定ファイルのURL」にコンテキスト設定ファイルを指定した場合は、ここで入力されたコンテキストパスは使用されません。
 次は、XML設定ファイルのURLを設定します。コンテキスト設定ファイルのURLを指定します(使用例、/usr/share/tomcat6/conf/Catalina/localhost/hello.xml)。
 次は、WARファイル又はディレクトリのURLを設定します。ここには、WebアプリケーションのURLを指定します。
 ローカルファイルを指定する場合は、Webアプリケーションのディレクトリを指定するか(使用例、/usr/share/tomcat6/webapps/helloworld/hello/)、またはWARファイルを指定します(使用例、/usr/share/tomcat6/webapps/hello.war)。
 リモートホスト上のファイルを指定する場合は、jarプロトコルを用いてWARファイルをURLで指定します(使用例、jar:http://ホスト名:ポート/hello.war)。
 「WARファイルの配備」では、ローカルシステムからWebアプリケーションをホストのTomcatに配備することができます。
 アップロードするWARファイルの選択でアップロードするファイルを設定します。ローカルシステム上のWARファイルをアップロードして、ホストの「$CATALIMA_HOME/webapps」ディレクトリに配置します。コンテキストパス名には、自動的にWARファイル名が使われます。WARファイルをアップロードした場合、Tomcatのserver.xmlに自動的に<Context>エントリが追加されます。
 独自のコンテキスト設定ファイルを使用したい場合は、WARファイル中に「META_INF/context.xml」ファイルを作成し、コンテキスト設定を記述します。すると、こちらのエントリが優先されます。

●Tomcat Web Server Administration Toolの設定

 Administration ToolはTomcat 4.1.xから導入されたStrutsベースのGUI管理ツールです。server.xml、tomcat-users.xmlの設定ファイルをGUI管理ツールを使用して設定できます。Tomcatの動作設定、コンテキストの追加・変更・削除、ユーザ・ロールの追加・変更・削除などを行うことができます。 Administraion ToolはTomcatをインストールしたサーバのhttp://localhost:8080/admin/にアクセスすることで利用できます。ユーザ、パスワードはWindows環境であれば、インストール時に設定した値であり、その他の場合はtomcat-users.xml設定ファイルに記述する のusernameとpasswordの値になります。

 Administration Toolを使用できるようにするため、/etc/tomcat6/tomcat-users.xml(インストール方法によって場所が異なります)を下記のように編集します。
 ここではユーザ名、パスワードともに"admin"として設定します。
# vi /etc/tomcat6/tomcat-users.xml
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <role rolename="manager"/>
  <role rolename="admin"/> ← 追加
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
  <user username="role1" password="tomcat" roles="role1"/>
  <user username="manager" password="manager" roles="manager"/>
  <user username="admin" password="admin" roles="admin"/> ← 追加
  <user username="manager" password="manager" roles="manager,admin"/>
     ← ロールmanagerとadminのユーザ名とパスワードをともに"manager"にする場合
</tomcat-users>
パスワードが平文なので、パーミッションを適切に設定します。
# chown tomcat.tomcat /etc/tomcat6/tomcat-users.xml
# chmod 640 /etc/tomcat6/tomcat-users.xml
# service tomcat6 restart ← 設定反映のため、Tomcatの再起動
 ブラウザで次のURLにアクセスします。
 http://localhost:8080/admin/
 すると、次のような認証ウィンドウが現れますので、先ほど設定したように、ユーザ名とパスワードを入力します。

tomcat05.jpg

 認証が成功すると、下記のようなウィンドウが表示されます。

tomcat06.jpg

●Tomcat Web Server Administration Toolの使用例

 Administration Toolを使用して、コンテキストを追加する例を解説します。

 【設定例】
 コンテキスト名:test1
 コンテキストのルートディレクトリ: CATALINA_HOME\webapps\test1
 動作確認プログラム:HelloJsp.jsp(現在時刻を表示する)
CATALINA_HOMEはTomcatインストールディレクトリを表します。
# vi HelloJsp.jsp
<html>
<body>
<%= new java.util.Date() %>
</body>
</html>
ディレクトリ、ファイル配置構成
tomcat07.jpg

 設定例に従い、ディレクトリの作成・配置、プログラムの作成・配置を行います。
 Administraion Tool(http://localhost:8080/admin/)にアクセスし、ログインします。
 左フレームのHostを選択し、表示された右フレームのHost Actionsプルダウンメニューの「新しいコンテキストの作成」をクリックします。

tomcat08.jpg

 以下の設定表に従い、右フレームに値を入力します。
 なお、ドキュメントベースは、アプリケーションを設置したディレクトリのパスです。現在の例で言うと、 $CATALNA_HOME/webapps/<アプリケーション名>です。

tomcat09.jpg

【コンテキストプロパティ】
プロパティ 内容
クッキー True セッションの判別にcookieを使用するかどうか。
クロスコンテキスト False 他のコンテキストのオブジェクトを参照かのうか。
デバッグレベル 0 ログの生成レベル。数が大きいほどログが詳細になる。
ドキュメントベース E:\ProgramFiles \Tomcat5.0 \Tomcat 5.0 \webapps\test1 コンテキストのルートディレクトリのパス。
上書き False DefaultContext要素がある場合、その値を上書きするかどうか。
パス /test1 ドキュメントペースにマッピングするURLのパス名。
再ロード可能 False ファイルの内容をチェックし、変更があった場合、自動的にリロードするかどうか。高負荷がかかる。
標準出力・標準エラー出力をログファイルに出力 False 標準出力・標準エラー出力をログファイルに出力するかどうか。
ネームサービスの利用 True JNDIを利用するかどうか。

【ローダプロパティ】
プロパティ 内容
デバッグレベル 0 ログの生成レベル。数が大きいほどログが詳細になる。
再ロード可能 False ファイルの内容をチェックし、変更があった場合、自動的にリロードするかどうか。高負荷がかかる。

【セッションマネージャプロパティ】
プロパティ 内容
デバッグレベル 0 ログの生成レベル。数が大きいほどログが詳細になる。
セッションIDイニシャライザ org.apache.catalina. session.StandardManager セッション管理クラスの指定。
最大有効セッション数 -1 最大セッション数の指定。-1は無制限。

 「保存」ボタンを押し、「保存成功!」と表示されたら入力値に誤りがないことを表します。その後、「変更を反映」ボタンを押します。変更反映前のserver.xmlが日付が入ったファイル(server.xml.yyyy-mm-dd.hh-mi-ss)にリネイムされ、server.xmlに変更が反映されます。