・環境
OS CentOS release 6.7 (Final)
tomcat 7.0.55
tomcatをserviceに登録してserviceから実行しようとするとpermissionエラーが発生します。
serviceを実行するユーザはrootではなく通常のユーザです。
原因として何が考えられるでしょうか?
serviceからではなく通常の起動方法
sudo -u tomcat /opt/apache-tomcat/apache-tomcat-7.0.55/bin/startup.sh
の実行では、特に問題なく動作します。
serviceから実行したときのエラーは以下のとおりです。
Starting tomcat
Using CATALINA_BASE: /opt/apache-tomcat/apache-tomcat-7.0.55
Using CATALINA_HOME: /opt/apache-tomcat/apache-tomcat-7.0.55
Using CATALINA_TMPDIR: /opt/apache-tomcat/apache-tomcat-7.0.55/temp
Using JRE_HOME: /usr
Using CLASSPATH: /opt/apache-tomcat/apache-tomcat-7.0.55/bin/bootstrap.jar:/opt/apache-tomcat/apache-tomcat-7.0.55/bin/tomcat-juli.jar
touch: cannot touch `/opt/apache-tomcat/apache-tomcat-7.0.55/logs/catalina.out': Permission denied
/opt/apache-tomcat/apache-tomcat-7.0.55/bin/catalina.sh: line 385: /opt/apache-tomcat/apache-tomcat-7.0.55/logs/catalina.out: Permission denied
/opt/apache-tomcat/apache-tomcat-7.0.55/配下のフォルダのmodeは以下のとおり
drwxr-xr-x. 2 tomcat tomcat 4096 May 30 11:08 bin
drwxr-xr-x. 3 tomcat tomcat 4096 Jul 25 06:57 conf
drwxr-xr-x. 2 tomcat tomcat 4096 May 30 11:08 lib
-rw-r--r--. 1 tomcat tomcat 56812 Jul 18 2014 LICENSE
drwxr-xr-x. 2 tomcat tomcat 12288 Jul 27 00:04 logs
-rw-r--r--. 1 tomcat tomcat 1192 Jul 18 2014 NOTICE
-rw-r--r--. 1 tomcat tomcat 8963 Jul 18 2014 RELEASE-NOTES
-rw-r--r--. 1 tomcat tomcat 16204 Jul 18 2014 RUNNING.txt
drwxr-xr-x. 3 tomcat tomcat 4096 Jul 27 00:19 temp
drwxr-xr-x. 11 tomcat tomcat 4096 Jun 23 23:54 webapps
drwxr-xr-x. 3 tomcat tomcat 4096 May 30 11:19 work
touchできないと言われるcatalina.outのmodeは以下のとおり
rw-r--r--. 1 tomcat tomcat 42084568 Jul 27 00:21 catalina.out
tomcatをサービスに登録した方法は以下のとおり
/etc/init.d/tomcat
chmod +x tomcat
chkconfig --add tomcat
登録できたことを確認
chkconfig --list tomcat
tomcat 0:off 1:off 2:on 3:on 4:on 5:on 6:off
/etc/init.d/tomcatの中身
#!/bin/bash # Startup script for the Tomcat Servlet Container # # chkconfig: 2345 35 65 export LANG=ja_JP.UTF-8 TOMCAT_HOME=/opt/apache-tomcat/apache-tomcat-7.0.55 LOCKFILE=/var/lock/subsys/tomcat # source function library . /etc/rc.d/init.d/functions start(){ if [ ! -f ${LOCKFILE} ]; then echo ""Starting tomcat"" #sudo -u tomcat ${TOMCAT_HOME}/bin/startup.sh ${TOMCAT_HOME}/bin/startup.sh sleep 1 PID=`ps -ef | grep catalina.home=${TOMCAT_HOME} | grep -v grep | awk '{print $2}'` echo ${PID} > ${LOCKFILE} tail -f ${TOMCAT_HOME}/logs/catalina.out | while read LINE do PID=`ps -ef | grep -v grep | egrep -e '.*tail.*catalina.out$' | awk '{print $2}'` if [ 1 -ne `echo $LINE | egrep -e '^.*: Server startup in [0-9]* ms$' | wc -l` ]; then echo -n ""."" else echo echo $LINE kill ${PID} fi done else echo ""tomcat is already running"" fi } stop(){ if [ -f ${LOCKFILE} ]; then echo ""Shutting down tomcat"" #sudo -u tomcat ${TOMCAT_HOME}/bin/shutdown.sh ${TOMCAT_HOME}/bin/shutdown.sh while [ 1 -eq `ps -ef | grep ${TOMCAT_HOME} | grep -v grep | wc -l` ] do echo -n ""."" sleep 1 done echo echo ""Shutted down tomcat"" rm -f ${LOCKFILE} else echo ""tomcat is not running"" fi } case ""$1"" in start) start ;; stop) stop ;; restart) stop start ;; status) #${TOMCAT_HOME}/bin/catalina.sh version if [ -f ${LOCKFILE} ] then echo ""tomcat(pid:""`cat ${LOCKFILE}`"") is running."" else echo ""tomcat is not running."" fi ;; *) echo ""Usage: $0 {start|stop|restart|status}"" esac exit 0
回答2件