Showing posts with label auto startup. Show all posts
Showing posts with label auto startup. Show all posts

Friday, September 30, 2011

How to start Tomcat at boot time on CentOS

If you use Tomcat for you Java app, you will most probably encouter a situation where Tomcat doesn't load  after reboot.

This due to, as at the time of writing ,Tomcat doesn't have its built-in or default startup script included.
As usual, after some googling, found out the script below creates a custom Tomcat service and load tomcat automatically at startup.

#!/bin/bash
#
# Tomcat Server
#
# chkconfig: 345 96 30
# description:  Start up the Tomcat servlet engine.

# Source function library.
. /etc/init.d/functions


RETVAL=$?
 CATALINA_HOME="/opt/tomcat"

start() {
        if [ -f $CATALINA_HOME/bin/startup.sh ];
          then
            echo $"Starting Tomcat"
            /bin/su tomcat $CATALINA_HOME/bin/startup.sh
        fi
        sleep 2
}
stop() {
        if [ -f $CATALINA_HOME/bin/shutdown.sh ];
          then
            echo $"Stopping Tomcat"
            /bin/su tomcat $CATALINA_HOME/bin/shutdown.sh
        fi

}

case "$1" in
 start)
        start
        ;;
 stop)
        stop
        ;;
 restart)
        stop
        sleep 2
        start
        ;;

 *)
        echo $"Usage: $0 {start|stop|restart}"
        exit 1

        ;;
esac

exit $RETVAL



 In order to support chkconfig, an init script must:
1.  Be located in /etc/rc.d/init.d (which /etc/init.d is a symlink to)
2.  Have a commented out line that contains “chkconfig: <default  runlevels for this service> <start priority> <stop priority>”
3.  Have a commented out line that contains “description: <a description of the service>”
4.  Upon successful service startup, place a lock file in  /var/lock/subsys that matches the name of the service script.  Upon  successful service shutdown, the lockfile must be removed.
5. If the avove doesn't wotk. Add symbolic link for /etc/init.d/tomcat to  etc/rc.d/rc2.d/S96tomcat, /etc/rc.d/rc1.d/K99tomcat 

Reference:
http://adityo.blog.binusian.org/?tag=redhat-run-level-and-how-to-make-tomcat-service-to-run-on-boot-time-in-centos

Update: If you install Tomcat from Yum, init script is already included, just run /etc/init.d/tomcat7 start/stop/restart