CentOS4.4で運用するTomcat5のための自動起動スクリプトを作りました。 Tomcat の起動 | 自宅サーバー Fedoraを参考にさせていただき サクっと動くだろうと考えていたら割とめんどうでした。
- 上記サイトの内容を/etc/init.d/tomcatに保存。
- JAVA_HOME、TOMCAT_HOME、PATHの設定を追加。
-
chkconfigで登録
- chkconfig --add tomcat
- chkconfig tomcat on
- 再起動。
これだと何度起動してもTomcatの起動部分で止まってしまいます。しかたないので 起動ログをファイルに落としてみたところ、何やら見慣れない文字が含まれていました。
/etc/init.d/tomcat
/bin/su -s /bin/bash - $TOMCAT_USER -c "$TOMCAT_SCRIPT start" >/tmp/tomcat.log 2>&1
/tmp/tomcat.log
Do you want to choose a different one? [n] Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/java/jdk1.5.0_11 Your default context is user_u:system_r:unconfined_t.
"Do you want to choose a different one"と表示されるのは SE Linuxの機能が 働いているのが原因みたいです。解決策は、"su" -> "runuser"に変更すること。って 工工工エエエエエエェェェェェェ(゚Д゚)ェェェェェェエエエエエエ工工工。
最終的にこんな感じになりました。
File Edit Options Buffers Tools Insert Help
# chkconfig: 2345 85 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
###### added by src #####
export JAVA_HOME=/usr/java/jdk1.5.0_11
export PATH=$JAVA_HOME/bin:$PATH
export TOMCAT_HOME=/usr/local/tomcat
export CATALINA_HOME=$TOMCAT_HOME
###### added by src #####
TOMCAT_SCRIPT=$CATALINA_HOME/bin/catalina.sh
TOMCAT_USER=tomcat
[ -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 -n "Starting Tomcat: " #/bin/su -s /bin/bash - $TOMCAT_USER -c "$TOMCAT_SCRIPT start" >/tmp/tomcat.log 2>&1
###### su->runuser by src #####
/sbin/runuser -s /bin/bash - $TOMCAT_USER -c "$TOMCAT_SCRIPT start"
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 -n "Shutting down Tomcat: "
$TOMCAT_SCRIPT stop
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f /var/lock/subsys/tomcat
;;
status)
status tomcat
exit $?
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $TOMCAT_PROG {start|stop|status|restart}"
exit 1
esac
exit 0