Runing Tomcat as Linux service

By Robert Sayfullin

Not big deal but I am bit tired to google for this script each time I setup new box. Now I know where to get it without spending two valuable extra minutes to google. First create /etc/rc.d/init.d/tomcatd :

#!/bin/bash
#
# Startup script for Tomcat
#
# chkconfig: 345 84 16
# description: Tomcat jakarta JSP server
TOMCAT_HOME=/usr/share/apache-tomcat-5.5.20
TOMCAT_START=$TOMCAT_HOME/bin/startup.sh
TOMCAT_STOP=$TOMCAT_HOME/bin/shutdown.sh
#Necessary environment variables
export JAVA_HOME=”/usr/share/jdk1.5.0_10?
export CATALINA_HOME=”/usr/share/apache-tomcat-5.5.20?
#export LD_KERNEL_ASSUME=”2.2.5?
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = “no” ] && exit 0
#Check for tomcat script
if [ ! -f $TOMCAT_HOME/bin/catalina.sh ]
then
    echo “Tomcat not available…”
    exit
fi
start() {
    echo -n “Starting Tomcat: “
    su - tomcat -c $TOMCAT_START
    echo
    touch /var/lock/subsys/tomcatd
# We may need to sleep here so it will be up for apache
    sleep 3
#Instead should check to see if apache is up by looking for httpd.pid
}
stop() {
    echo -n $”Shutting down Tomcat: “
    su - tomcat -c $TOMCAT_STOP
    rm -f /var/lock/subsys/tomcatd
    echo
}
status() {
    ps ax –width=1000 | grep “[o]rg.apache.catalina.startup.Bootstrap start” | awk ‘{printf $1 ” “}’ | wc | awk ‘{print $2}’ > /tmp/tomcat_process_count.txt
   read line

Add user tomcat. Please note that it is normal user with his own home. Many times it was very useful.

adduser tomcat

Set JAVA_HOME for all users in /etc/profile.d/java.sh . When we run ’su – tomcat’ this script will set up our environment:

export JAVA_HOME=/usr/share/jdk1.5.0_10

Give enough permissions to tomacat:

chown tomcat /usr/share/apache-tomcat-5.5.20/ -R

Now you are able to run tomcat with

service tomcatd start

The last thing is to run it when system boots:

chkconfig –add tomcatd
chkconfig tomcatd on

Done

2 Responses to “Runing Tomcat as Linux service”

  1. srk & rkini Says:

    you forgot to add this :-)

    case “$1″ in
    start)
    start
    ;;
    stop)
    stop
    ;;
    restart)
    stop
    start
    ;;
    reload)
    reload
    ;;
    status)
    status
    RETVAL=$?
    ;;
    *)
    echo $”Usage: $0 {start|stop|restart|reload|status}”
    RETVAL=1
    esac

  2. javarules Says:

    And for beginning shell programmers watch the use of “ and ” that gave me an error until I cnverted all the “ to “(tx to vim)

    I also changed these lines
    export JAVA_HOME=”/usr/share/jdk1.5.0_10?
    export CATALINA_HOME=”/usr/share/apache-tomcat-5.5.20?

    to these
    export JAVA_HOME=/usr/share/jdk1.5.0_10
    export CATALINA_HOME=/usr/share/apache-tomcat-5.5.20

    tx anyway ciao

Leave a Reply