
Tomcat を自動的に起動させようとしていますが、うまくいきません。(Amazon ami-11ca2d78 をベースにした Fedora 8 で実行されている Tomcat 6.0.16 です。) そこで、標準の手順に従って、/etc/init.d/tomcat
次の内容を作成しました。
export JRE_HOME=/env/jdk1.6.0_07/jre/
case $1 in
start)
sh /env/tomcat/bin/startup.sh
;;
stop)
sh /env/tomcat/bin/shutdown.sh
;;
restart)
sh /env/tomcat/bin/shutdown.sh
sh /env/tomcat/bin/startup.sh
;;
esac
exit 0
そして、chmod 755 を実行します。次に、ソフト リンクを作成します。
ln -s /etc/init.d/tomcat /etc/rc1.d/K99tomcat
ln -s /etc/init.d/tomcat /etc/rc2.d/S99tomcat
しかし、再起動すると失敗し、ログに次の例外が表示されます。
java.lang.IllegalArgumentException: ドキュメント ベース /env/tomcat/webapps/QCServer が存在しないか、読み取り可能なディレクトリではありません
しかし、/etc/init.d/tomcat start
コマンド ラインから直接実行すると、すべて正常に動作します。また、これは読み取り可能なディレクトリであり、すべてのユーザーに r+x 権限が与えられています。一体何が間違っているのでしょうか? ご協力いただければ幸いです。
交流
答え1
読み取り可能であれば、ディレクトリが見つからないことが問題です。Tomcat を手動で起動したとき、おそらく「root」ユーザーとしてログインしていたと思います。ユーザーは、Tomcat がインストールされている場所を指すように CATALINA_HOME を設定しています。問題は、Tomcat がアプリケーション ベース ディレクトリを見つけられないことだと思います。
server.xml ファイルで 'QCServe' のベース ディレクトリを指定する場合は、相対パスではなくフル パスを使用します。アプリケーションが /opt/apps/tomcat/webapps/QCServe にインストールされている場合は、その絶対パスをそこに入力します。
-N
答え2
どのランレベルで実行していますか?
/etc/rc3.dにリンクを作成する
答え3
/etc/init.d/tomcat として保存し、chkconfig add tomcat を実行します。必要に応じて上部の値を編集し、インストールに合わせて調整します。提示されている値は単なる例です (特に JAVA_OPTS メモリ設定)。
#!/bin/sh
#
# Startup script for Tomcat
#
# chkconfig: 345 82 20
# description: Tomcat is a servlet runner
JAVA_HOME=/usr/local/java
TOMCAT_HOME=/usr/local/tomcat
XMFILE=$TOMCAT_HOME/conf/server.xml
JAVA_OPTS="-server -Xms1536m -Xmx1536m -Xmn384m -XX:+UseParallelGC"
CATALINA_OPTS=""
export JAVA_HOME TOMCAT_HOME JAVA_OPTS CATALINA_OPTS
# See how we were called.
case "$1" in
start)
cd $TOMCAT_HOME
./bin/startup.sh -config $XMFILE
;;
stop)
cd $TOMCAT_HOME
./bin/shutdown.sh -config $XMFILE
;;
restart)
$0 stop
sleep 3
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0