[opencms-dev] AA Starting Tomcat under Linux

Michael.Kuethe at die-fabrik.org Michael.Kuethe at die-fabrik.org
Wed May 17 12:01:24 CEST 2006


Hi,
with SUSE you also have to add two links in ther suitable rc directory
normaly rc3.d
They are named like this
SXXtomcat
KXXtomcat
Where XX is a number with detemines, when the start or stop command will
occur!
These Link should point to to tomcat script, which is in the /etc/init.d
directory
This Script has to handle at least a STOP and a START argument

Here's the script I'm using

#! /bin/sh
# Copyright (c) 1995-2001 SuSE GmbH Nuernberg, Germany.
# Copyright (c) 2002 SuSE Linux AG Nuernberg, Germany.
#
# Author: Petr Mladek <feedback at suse.de>
#
# /etc/init.d/tomcat5
#
#   and its symbolic link
#
# /usr/sbin/rctomcat5
#
# System startup script for the Tomcat servlet container
#
### BEGIN INIT INFO
# Provides: tomcat
# Required-Start: $local_fs $remote_fs
# X-UnitedLinux-Should-Start: $named $syslog $time
# Required-Stop:  $local_fs $remote_fs
# X-UnitedLinux-Should-Stop: $named $syslog $time
# Default-Start:  3 5
# Default-Stop:   0 1 2 6
# Short-Description: Tomcat Servlet Container
# Description:    Start Tomcat to allow JAVA server pages
### END INIT INFO

tomcatIsRunning()
{
  tomcat_ps_log=`mktemp /var/tmp/tomcat-ps.log.XXXXXX`
  ps aux --cols 1024 >"$tomcat_ps_log"
  tomcat_is_running="false"
  if grep "
-Dcatalina.base=$CATALINA_BASE.*-Dcatalina.home=$CATALINA_HOME.*org.apache.catalina.startup.Bootstrap"
 "$tomcat_ps_log" >/dev/null 2>/dev/null ; then
    tomcat_is_running="true"
  fi
  rm -f "$tomcat_ps_log"
  test "$tomcat_is_running" = "true"
}




# Check for missing binaries and configuration
# Note: Special treatment of stop for LSB conformance
TOMCAT_CONFIG=/etc/sysconfig/j2ee
test -r "$TOMCAT_CONFIG" || { echo "$TOMCAT_CONFIG not existing";
      if [ "$1" = "stop" ]; then exit 0;
      else exit 6; fi; }

# Read config
. "$TOMCAT_CONFIG"

#CATALINA_HOME="$CATALINA_HOME_4"
#CATALINA_BASE="$CATALINA_BASE_4"
# defaults CATALINA_BASE to CATALINA_HOME
test -n "$CATALINA_BASE" || CATALINA_BASE="$CATALINA_HOME"

test -x "$CATALINA_HOME/bin/startup.sh" || { echo
"$CATALINA_HOME/bin/startup.sh not installed";
      if [ "$1" = "stop" ]; then exit 0;
      else exit 5; fi; }
test -x "$CATALINA_HOME/bin/shutdown.sh" || { echo
"$CATALINA_HOME/bin/shutdown.sh not installed";
      if [ "$1" = "stop" ]; then exit 0;
      else exit 5; fi; }

# is the BASE valid?
test -d "$CATALINA_BASE/webapps" || test -L "$CATALINA_BASE/webapps" || {
echo "$CATALINA_BASE/webapps not existing";
      if [ "$1" = "stop" ]; then exit 0;
      else exit 6; fi; }

# the following variables affects the server
export CATALINA_HOME CATALINA_BASE

# Shell functions sourced from /etc/rc.status:
#      rc_check         check and set local and overall rc status
#      rc_status        check and set local and overall rc status
#      rc_status -v     ditto but be verbose in local rc status
#      rc_status -v -r  ditto and clear the local rc status
#      rc_failed        set local and overall rc status to failed
#      rc_failed <num>  set local and overall rc status to <num><num>
#      rc_reset         clear local rc status (overall remains)
#      rc_exit          exit appropriate to overall rc status
. /etc/rc.status

# First reset status of this service
rc_reset

# Return values acc. to LSB for all commands but status:
# 0 - success
# 1 - generic or unspecified error
# 2 - invalid or excess argument(s)
# 3 - unimplemented feature (e.g. "reload")
# 4 - insufficient privilege
# 5 - program is not installed
# 6 - program is not configured
# 7 - program is not running
#
# Note that starting an already running service, stopping
# or restarting a not-running service as well as the restart
# with force-reload (in case signalling is not supported) are
# considered a success.

case "$1" in
    start)
      echo -n "Starting Tomcat ($CATALINA_BASE)"
      ## Start daemon with startproc(8). If this fails
      ## the echo return value is set appropriate.

      # NOTE: startproc return 0, even if service is
      # already running to match LSB spec.
      if tomcatIsRunning ; then
        rc_failed 0
        else
        # try to fix permissions
        chown --dereference tomcat:tomcat "$CATALINA_BASE"
        for dir in "$CATALINA_BASE/conf" \
                 "$CATALINA_BASE/logs" \
                 "$CATALINA_BASE/temp" \
                 "$CATALINA_BASE/webapps" \
                 "$CATALINA_BASE/work" ; do
          # the command true is used because of for example conf directory
may be mounted read-only
          test -d "$dir" && chown -R --dereference tomcat:tomcat "$dir"
2>/dev/null || true
        done
        su tomcat -s /bin/bash -c "$CATALINA_HOME/bin/startup.sh"
>"$CATALINA_BASE/logs//start.log" 2>&1
        sleep 1
          if tomcatIsRunning ; then
            rc_failed 0
        else
          rc_failed 7
        fi
        fi
      rc_status -v
      ;;
    stop)
      echo -n "Shutting down Tomcat ($CATALINA_BASE)"
      ## Stop daemon with killproc(8) and if this fails
      ## set echo the echo return value.
        if tomcatIsRunning ; then
        su tomcat -s /bin/bash -c "$CATALINA_HOME/bin/shutdown.sh"
>"$CATALINA_BASE/logs/stop.log" 2>&1
        # wait 60 sec for stop at maximum
          wait_sec=60
        while [ "$wait_sec" != "0" ] ; do
          sleep 1
            if ! tomcatIsRunning ; then
            # theTomcat server is stoped, end the loop
            wait_sec=0
            break
          fi
          wait_sec=$((wait_sec -1))
        done
        # check the final status
          if tomcatIsRunning ; then
          rc_failed 1
        else
          rc_failed 0
        fi
      else
        rc_failed 0
      fi
      # Remember status and be verbose
      rc_status -v
      ;;
    try-restart)
      ## Stop the service and if this succeeds (i.e. the
      ## service was running before), start it again.
        ## Note: try-restart is not (yet) part of LSB (as of 0.7.5)
        $0 status >/dev/null &&  $0 restart

      # Remember status and be quiet
      rc_status
      ;;
    restart)
      ## Stop the service and regardless of whether it was
      ## running or not, start it again.
      $0 stop
      $0 start

      # Remember status and be quiet
      rc_status
      ;;
    force-reload)
      ## Signal the daemon to reload its config. Most daemons
      ## do this on signal 1 (SIGHUP).
      ## If it does not support it, restart.

      echo -n "Reload service Tomcat $($CATALINA_BASE)"
      ## if it supports it:
      #killproc -HUP $TOMCAT_BIN
      #touch /var/run/FOO.pid
      #rc_status -v

      ## Otherwise:
      $0 stop  &&  $0 start
      rc_status
      ;;
    reload)
      ## Like force-reload, but if daemon does not support
      ## signalling, do nothing (!)

      # If it supports signalling:
      #echo -n "Reload service FOO"
      #killproc -HUP $TOMCAT_BIN
      #touch /var/run/FOO.pid
      #rc_status -v

      ## Otherwise if it does not support reload:
      rc_failed 3
      rc_status -v
      ;;
    status)
      echo -n "Checking for Tomcat ($CATALINA_BASE)"
      ## Check status with checkproc(8), if process is running
      ## checkproc will return with exit status 0.

      # Status has a slightly different for the status command:
      # 0 - service running
      # 1 - service dead, but /var/run/  pid  file exists
      # 2 - service dead, but /var/lock/ lock file exists
      # 3 - service not running

      # NOTE: checkproc returns LSB compliant status values.
        if tomcatIsRunning ; then
          rc_failed 0
      else
        rc_failed 3
      fi
      rc_status -v
      ;;
    probe)
        ## Optional: Probe for the necessity of a reload,
        ## give out the argument which is required for a reload.
        ;;
    *)
      echo "Usage: $0
{start|stop|status|try-restart|restart|force-reload|reload|probe}"
      exit 1
      ;;
esac
rc_exit


regards

Michael




                                                                           
             <nickm at absa.co.za                                             
             >                                                             
             Sent by:                                                   To 
             opencms-dev-bounc         <opencms-dev at opencms.org>           
             es at opencms.org                                             cc 
                                                                           
                                                                   Subject 
             17.05.2006 10:33          [opencms-dev] AA Starting Tomcat    
                                       under Linux                         
                                                                           
             Please respond to                                             
                The OpenCms                                                
               mailing list                                                
             <opencms-dev at open                                             
                 cms.org>                                                  
                                                                           
                                                                           




Hi sigi
Thanks for the advice

BTW I am using SUSE 9.3 Linux.

I created a file tomcat in this path
/etc/init.d/tomcat

I placed these command in this tomcat file :

cd $CATALINA_home/bin
./startup.sh

And nothing happens the tomcat does not start

Do I need to change the ./startup.sh to just startup.sh

and/or do I need to make a change in another file to point to the tomcat
file ?

Regards
Nico

Message: 24
Date: Tue, 16 May 2006 11:24:51 +0200
From: "Siegfried Puchbauer" <siegfried.puchbauer at gmail.com>
Subject: Re: [opencms-dev] AA Starting Tomcat under Linux
             automatically
To: "The OpenCms mailing list" <opencms-dev at opencms.org>
Message-ID:
             <53239a200605160224i1a4f0457x9aa4f9409875c445 at mail.gmail.com>
Content-Type: text/plain; charset="iso-8859-1"

Which distribution of linux do you use? In my case (gentoo linux) I
added an
init script (/etc/init.d/tomcat5) and added this to the default
runlevel...
you can check the docs of your distri for how to add a service to the
default runlevel...

hth

sigi

On 5/16/06, nickm at absa.co.za <nickm at absa.co.za> wrote:
>
> Hi there
>
> How do I get Tomcat under Linux to start automatically ?
>
> I added (exported) a CATALINA_HOME environment variable in my
> etc/profile
> I even added this line to my etc/profile :
> $CATALINA_HOME/bin/startup.sh
>
>
> But the tomcat does not start automatically
> I want it to start in the root profile so all users can have it
> available
>
>
> Regards
> Nico
>

___________________________________________________________

Important Notice:
Authorised Financial Services Provider

Important restrictions, qualifications and disclaimers
("the Disclaimer") apply to this email. To read this click on the
following address or copy into your Internet browser:

http://www.absa.co.za/disclaimer

The Disclaimer forms part of the content of this email in terms of
section 11 of the Electronic Communications and Transactions
Act, 25 of 2002.

If you are unable to access the Disclaimer, send a blank e-mail
to disclaimer at absa.co.za and we will send you a copy of the
Disclaimer.

_______________________________________________
This mail is sent to you from the opencms-dev mailing list
To change your list options, or to unsubscribe from the list, please visit
http://lists.opencms.org/mailman/listinfo/opencms-dev





More information about the opencms-dev mailing list