Shammer's Philosophy

My private adversaria

Tomcat daemon configuration on Debian

According to Apache Tomcat 7 (7.0.92) - Tomcat Setup, tomcat can be invoked as UNIX daemon. And installation step is explained in this document. This requires JDK and gcc. I try this by following steps. This article is an additional one of Install JavaSDK and apache-tomcat on Debian - Shammerism.

  1. su -
  2. apt-get install build-essential
  3. cd $TOMCAT_HOME/bin
  4. tar xvzf commons-daemon-native.tar.gz
  5. cd commons-daemon-1.0.x-native-src/unix
  6. ./configure (--with-java=/usr/local/src/java/jdk1.7.0_67)
  7. make
  8. cp jsvc ../..
  9. cd ../..
  10. cp daemon.sh /etc/init.d/tomcat
  11. edit /etc/init.d/tomcat
    1. add following lines(*1)
    2. define JAVA_HOME
    3. define CATALINA_HOME
    4. define CATALINA_PID
  12. useradd tomcat
  13. chown -R tomcat $CATALINA_HOME
  14. update-rc.d tomcat defaults

I add /etc/init.d/tomcat as below.

### BEGIN INIT INFO
# Provides: tomcat
# Required-Start: $network $syslog
# Required-Stop: $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: start and stop tomcat
# Short-Description: start and stop tomcat
### END INIT INFO

JAVA_HOME I defined is line#102.

# grep -n JAVA_HOME /etc/init.d/tomcat
50:        JAVA_HOME="$2"
101:# Set JAVA_HOME to working JDK or JRE
102:JAVA_HOME="/usr/local/src/java/jdk1.7.0_67"
105:# If not set we'll try to guess the JAVA_HOME
108:if [ -z "$JAVA_HOME" ]; then
110:    test -x "$JAVA_BIN" && JAVA_HOME="`dirname $JAVA_BIN`"
111:    test ".$JAVA_HOME" != . && JAVA_HOME=`cd "$JAVA_HOME/.." >/dev/null; pwd`
113:    JAVA_BIN="$JAVA_HOME/bin/java"
194:      -java-home "$JAVA_HOME" \
211:      -java-home "$JAVA_HOME" \
240:      -java-home "$JAVA_HOME" \

CATALINA_HOME I defined is line#103.

# grep -n CATALINA_HOME /etc/init.d/tomcat
55:        CATALINA_HOME="$2"
103:CATALINA_HOME="/usr/local/src/tomcat/7.0.54"
116:# Only set CATALINA_HOME if not already set
117:test ".$CATALINA_HOME" = . && CATALINA_HOME=`cd "$DIRNAME/.." >/dev/null; pwd`
118:test ".$CATALINA_BASE" = . && CATALINA_BASE="$CATALINA_HOME"
120:# If not explicitly set, look for jsvc in CATALINA_BASE first then CATALINA_HOME
124:        JSVC="$CATALINA_HOME/bin/jsvc"
136:elif [ -r "$CATALINA_HOME/bin/setenv.sh" ]; then
137:  . "$CATALINA_HOME/bin/setenv.sh"
142:CLASSPATH="$CLASSPATH$CATALINA_HOME/bin/bootstrap.jar:$CATALINA_HOME/bin/commons-daemon.jar"
152:  CLASSPATH="$CLASSPATH:$CATALINA_HOME/bin/tomcat-juli.jar"
204:      -Dcatalina.home="$CATALINA_HOME" \
221:      -Dcatalina.home="$CATALINA_HOME" \
233:      -Dcatalina.home="$CATALINA_HOME" \
249:        -classpath "$CATALINA_HOME/lib/catalina.jar" \

CATALINA_PID I defined is line#104.

# grep -n CATALINA_PID /etc/init.d/tomcat
65:        CATALINA_PID="$2"
104:CATALINA_PID="/var/run/tomcat.pid"
168:test ".$CATALINA_PID" = . && CATALINA_PID="$CATALINA_BASE/logs/catalina-daemon.pid"
195:      -pidfile "$CATALINA_PID" \
213:      -pidfile "$CATALINA_PID" \
229:      -pidfile "$CATALINA_PID" \
241:      -pidfile "$CATALINA_PID" \