Dashboard > Server Administration > ... > 5 Tomcat > 5.1 Tomcat Startup on Boot
  Server Administration Log In   View a printable version of the current page.  
  5.1 Tomcat Startup on Boot
Added by Larry Talley, last edited by Larry Talley on Oct 20, 2006  (view change)
Labels: 
(None)

Resources http://tomcat.apache.org/tomcat-5.5-doc/setup.html and more importantly, the example in

$CATALINA_HOME/bin/jsvc-src/native/Tomcat5.sh
  1. Make tomcat startup apparatus
    cd $CATALINA_HOME/bin
    tar xvfz jsvc.tar.gz
    cd jsvc-src/
    autoconf
    chmod +x configure
    ./configure
    make
    cp jsvc ..
    cd ..
    
  2. Tomcat startup script – for an unknown reason, a simple startup script doesn't work for me. I find that Tomcat will startup fine using the script manually after the normal startup has completed. So, I modify the startup process... the normal startup script runs another script as a background process, and that background script sleeps a while and then starts Tomcat.
    vi /etc/init.d/tomcat
    
    #!/bin/sh
    #
    # Tomcat Control Script
    #
    # To use this script
    # run it as root - it will switch to the specified user
    # It loses all console output - use the log.
    #
    # ---------------------
    
    JAVA_HOME=${JAVA_HOME:-"/usr/lib/j2sdk1.5-sun"}
    JDK_HOME={$JDK_HOME:-"$JAVA_HOME"}
    PATH=$JAVA_HOME/bin:$PATH
    JAVA_OPS=${JAVA_OPTS:-"-Xms512m -Xmx800m -server -Djava.awt.headless=true"}
    CATALINA_HOME=${CATALINA_HOME:-"/usr/apache-tomcat-5.5.15"}
    JAVAPTH=${JAVAPTH:-"/usr/lib/j2re1.5-sun/bin"}
    CATALINA_CONSOLE=${CATALINA_CONSOLE:-"$CATALINA_HOME/logs/console"}
    CATALINA_USER=${CATALINA_USER:-"tomcat"}
    CLASSPATH=\
    $JAVA_HOME/lib/tools.jar:\
    $CATALINA_HOME/bin/commons-daemon.jar:\
    $CATALINA_HOME/bin/bootstrap.jar
    
    if [ ! -d "$CATALINA_HOME" ]; then
      echo CATALINA_HOME does not exist as a valid directory : $CATALINA_HOME
      exit 1
    fi
    
    case "$1" in
    start)
        if [ -z "`ps -U tomcat|grep jsvc`" ]; then
            /home/root/scripts/tomcat.start.sh >/home/root/scripts/tomcat.start.log 2>&1 &
    #        echo -n $"Startup tomcat:"
    #        cd $CATALINA_HOME
    #        su - $CATALINA_USER -c "$CATALINA_HOME/bin/jsvc \
    #             -user $CATALINA_USER \
    #             -pidfile $CATALINA_HOME/logs/jsvc.pid \
    #             -Djava.endorsed.dirs=$CATALINA_HOME/common/endorsed \
    #             -Dcatalina.home=$CATALINA_HOME \
    #             -Dbucket.indexing.threads.fixed=1 \
    #             -Xms512m -Xmx800m \
    #             -Djava.awt.headless=true \
    #             -cp $CLASSPATH \
    #             -wait 10 \
    #             -outfile $CATALINA_HOME/logs/catalina.out \
    #             -errfile $CATALINA_HOME/logs/catalina.err \
    #             org.apache.catalina.startup.Bootstrap >$CATALINA_CONSOLE 2>&1 &
    #        echo
        else
            echo -n "tomcat is ALREADY running"
            echo
        fi
        ;;
    stop)
        if [ -z "`ps -U tomcat|grep jsvc`" ]; then
            echo -n "tomcat is NOT running"
            echo
        else
            echo -n $"Shutdown tomcat :"
            cd $CATALINA_HOME
            su - $CATALINA_USER -c "$CATALINA_HOME/bin/jsvc \
                 -pidfile $CATALINA_HOME/logs/jsvc.pid \
                 -stop \
                 org.apache.catalina.startup.Bootstrap >$CATALINA_CONSOLE 2>&1 &
            while [ ! -z "`ps -U tomcat|grep jsvc`" ]; do
                    sleep 1
                    echo -n .
            done
            echo
        fi
        ;;
    restart)
        $0 stop
        $0 start
        ;;
    status)
        if [ -z "`ps -U tomcat|grep jsvc`" ]; then
            echo "tomcat is NOT running"
        else
            echo "tomcat is running: pid=`ps -U tomcat|grep jsvc`"
        fi
        ;;
    *)
        echo "usage: $0 (start|stop|restart|help)"
    esac
    
    vi /home/root/scripts/tomcat.start.sh
    
    #!/bin/sh
    #
    # Tomcat Startup/Delay Script
    #
    # To use this script
    # run it as root - it will switch to the specified user
    # It loses all console output - use the log.
    #
    # ---------------------
    
    sleep 60
    JAVA_HOME=${JAVA_HOME:-"/usr/lib/j2sdk1.5-sun"}
    JDK_HOME={$JDK_HOME:-"$JAVA_HOME"}
    PATH=$JAVA_HOME/bin:$PATH
    CATALINA_HOME=${CATALINA_HOME:-"/usr/apache-tomcat-5.5.15"}
    JAVAPTH=${JAVAPTH:-"/usr/lib/j2re1.5-sun/bin:$CATALINA_HOME/common/lib"}
    CATALINA_CONSOLE=${CATALINA_CONSOLE:-"$CATALINA_HOME/logs/console"}
    CATALINA_USER=${CATALINA_USER:-"tomcat"}
    CLASSPATH=\
    $JAVA_HOME/lib/tools.jar:\
    $CATALINA_HOME/bin/commons-daemon.jar:\
    $CATALINA_HOME/bin/mysql-connector-java-3.1.12-bin.jar:\
    $CATALINA_HOME/bin/bootstrap.jar
    
    if [ ! -d "$CATALINA_HOME" ]; then
      echo CATALINA_HOME does not exist as a valid directory : $CATALINA_HOME
      exit 1
    fi
    
        if [ -z "`ps -U tomcat|grep jsvc`" ]; then
            echo -n $"Startup tomcat:"
            cd $CATALINA_HOME
            modprobe capability
            su - $CATALINA_USER -c "$CATALINA_HOME/bin/jsvc \
                 -user $CATALINA_USER \
                 -pidfile $CATALINA_HOME/logs/jsvc.pid \
                 -Djava.endorsed.dirs=$CATALINA_HOME/common/endorsed \
                 -Dcatalina.home=$CATALINA_HOME \
                 -Dbucket.indexing.threads.fixed=1 \
                 -Xms512m -Xmx800m \
                 -Djava.awt.headless=true \
                 -cp $CLASSPATH \
                 -wait 10 \
                 -outfile $CATALINA_HOME/logs/catalina.out \
                 -errfile $CATALINA_HOME/logs/catalina.err \
                 org.apache.catalina.startup.Bootstrap >$CATALINA_CONSOLE 2>&1 &"
            echo
        else
            echo -n "tomcat is ALREADY running"
            echo
        fi
    
  3. Create symbolic links for system level startup
    ln -s /etc/init.d/tomcat /etc/rc2.d/K01tomcat 
    ln -s /etc/init.d/tomcat /etc/rc2.d/S99tomcat 
    ln -s /etc/init.d/tomcat /etc/rc3.d/K01tomcat 
    ln -s /etc/init.d/tomcat /etc/rc3.d/S99tomcat 
    ln -s /etc/init.d/tomcat /etc/rc5.d/K01tomcat 
    ln -s /etc/init.d/tomcat /etc/rc5.d/S99tomcat 
    

Site powered by a free Open Source Project / Non-profit License (more) of Confluence - the Enterprise wiki.
Learn more or evaluate Confluence for your organisation.
Powered by Atlassian Confluence, the Enterprise Wiki. (Version: 2.5.2 Build:#807 May 20, 2007) - Bug/feature request - Contact Administrators