CentOS 5.4 で、Tomcat 6 を自動起動する

2010/03/24
★★★★

CentOS 5.4 で、Tomcat 6 を自動起動する

前回は、CentOS 上で Tomcat をデーモンとして起動する方法を紹介した。今回は、起動スクリプトを作成し、システムのスタートアップ時に自動起動する方法を紹介する。

以下は、前回紹介した手動でのデーモン起動方法だ。

>./bin/jsvc -cp ./bin/bootstrap.jar -user tommy -home /usr/java/jre1.6.0_18/ -outfile ./logs/catalina.out -errfile ./logs/catalina.err org.apache.catalina.startup.Bootstrap

同じく、手動停止方法は、以下の通り。

>./bin/jsvc -stop org.apache.catalina.startup.Bootstrap

簡単な話、これらのコマンドをスタートアップ時、シャットダウン時に実行するようにしてやれば良い。

ただ、前回 jsvc をビルドする際に展開したソースコードディレクトリにテンプレートとなるスクリプトファイルが含まれているので、これを転用する。jsvc のソースファイルは、前回と同様に "/usr/local/apache-tomcat-6.0.26/bin/jsvc-src" に展開したものとする。

>su
>cp /usr/local/apache-tomcat-6.0.26/bin/jsvc-src/native/Tomcat5.sh /etc/rc.d/init.d/
>mv /etc/init.d/Tomcat5.sh /etc/init.d/tomcat6

ファイルを rc スクリプトとして、カスタマイズする。

>vi /etc/init.d/tomcat6
#!/bin/sh
# chkconfig: - 80 20
# description: Tomcat 6 via jsvc. 
##############################################################################
#
# Copyright 2004 The Apache Software Foundation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
##############################################################################
#
# Small shell script to show how to start/stop Tomcat using jsvc
# If you want to have Tomcat running on port 80 please modify the server.xml
# file:
#
#  <!-- Define a non-SSL HTTP/1.1 Connector on port 80 -->
# <Connector className="org.apache.catalina.connector.http.HttpConnector"
# port="80" minProcessors="5" maxProcessors="75"
# enableLookups="true" redirectPort="8443"
# acceptCount="10" debug="0" connectionTimeout="60000"/>
#
# That is for Tomcat-5.0.x (Apache Tomcat/5.0)
#
# Adapt the following lines to your configuration
##JAVA_HOME=/home2/java/j2sdk1.4.2_03
JRE_HOME=/usr/java/jre1.6.0_18
##CATALINA_HOME=/home/tomcat5/tomcat5/jakarta-tomcat-5/build
CATALINA_HOME=/usr/local/apache-tomcat-6.0.26
##DAEMON_HOME=/home/jfclere/daemon
DAEMON_HOME=/usr/local/apache-tomcat-6.0.26/bin
##TOMCAT_USER=tomcat5
TOMCAT_USER=tommy
# for multi instances adapt those lines.
##TMP_DIR=/var/tmp
TMP_DIR=/tmp
##PID_FILE=/var/run/jsvc.pid
PID_FILE=/var/run/tomcat6.pid
##CATALINA_BASE=/home/tomcat5/tomcat5/jakarta-tomcat-5/build
CATALINA_BASE=$CATALINA_HOME
##CATALINA_OPTS="-Djava.library.path=/home/jfclere/jakarta-tomcat-connectors/jni/native/.libs"
CATALINA_OPTS=
CLASSPATH=\
##$JAVA_HOME/lib/tools.jar:\
$JRE_HOME/lib/tools.jar:\
$CATALINA_HOME/bin/commons-daemon.jar:\
$CATALINA_HOME/bin/bootstrap.jar

case "$1" in
  start)
    #
    # Start Tomcat
    #
    ##$DAEMON_HOME/src/native/unix/jsvc \
    $DAEMON_HOME/jsvc \
    -user $TOMCAT_USER \
&    -home $JRE_HOME \
    -Dcatalina.home=$CATALINA_HOME \
    -Dcatalina.base=$CATALINA_BASE \
    -Djava.io.tmpdir=$TMP_DIR \
    -wait 10 \
    -pidfile $PID_FILE \
    -outfile $CATALINA_HOME/logs/catalina.out \
    -errfile '&1' \
    $CATALINA_OPTS \
    -cp $CLASSPATH \
    org.apache.catalina.startup.Bootstrap
    #
    # To get a verbose JVM
    #-verbose \
    # To get a debug of jsvc.
    #-debug \
    exit $?
    ;;

  stop)
    # # Stop Tomcat
    #
    ##$DAEMON_HOME/src/native/unix/jsvc \
    $DAEMON_HOME/jsvc \
    -stop \
    -pidfile $PID_FILE \
    org.apache.catalina.startup.Bootstrap
    exit $?
    ;;
  *)
    echo "Usage tomcat.sh start/stop"
    exit 1;;
esac
(((EOF)

オリジナルのスクリプトを変更した部分は、"##" でコメントアウトしてある。VM は、JDK ではなく、JRE を利用すれば良いため、"JAVA_HOME" ではなく、"JRE_HOME" 環境変数を宣言し、パスを "/usr/java/jre1.6.0_18 " に定義し、"-home" オプションには、オリジナルのスクリプトでは、"JAVA_HOME" が指定されているため、 "JRE_HOME" に変更した。

ここで、最も重要なのは、ヘッダ付近に追加した以下の行を必ず記述すること。これは、起動スクリプトを管理する "chkconfig" コマンドを利用する場合に必ず必要な記述となる。

# chkconfig: - 80 20
## description: Tomcat 6 via jsvc. 

また、"Tomcat6.sh" ではなく、"Tomcat.sh" をテンプレートとする場合は、"-cp" オプションに指定するクラスが "org.apache.catalina.startup.BootstrapService" ではなく、 "org.apache.catalina.startup.Bootstrap" であることに注意する。

スクリプトに実行権限を付与する。

>chmod +x /etc/init.d/tomcat6p>

手動で実行する。/p>

>>/etc/init.d/tomcat6 start

エラーが出力されないことを確認し、ブラウザから、http://localhost:8080/ にアクセスし、正しく動作していることを確認する。

デーモンを停止する。

>/etc/init.d/tomcat6 stop

作成した起動スクリプト "tomcat6" を起動スクリプト管理下に設定する。

>/sbin/chkconfig tomcat6 on

システムを再起動する。

>reboot

システム起動後、ブラウザから、http://localhost:8080/ にアクセスし、正しく動作していることを確認する。

次回は、Tomcat の簡易的な Web サーバーではなく、Apache を Web サーバーとして使用する方法を説明する。