Tomcat won't start automatically

Discuss installation of Scalix software

Moderators: ScalixSupport, admin

DColeman
Posts: 19
Joined: Thu May 26, 2005 3:44 pm

Postby DColeman » Thu Jun 02, 2005 4:36 pm

>> -save the initscript from tomcat in /etc/init.d
What is the name and location of this initscript?

>> -uninstall the IBM-Java with Yast
>> -install with Yast the 2 Sun-Java packages(jre, sdk) from the SLES 9 >> CDs, Yast create then a initscript for the tomcat automatically
Done. I uninstalled IBM-Java w/ YaST and reinstalled Sun Java JRE & SDK from YaST, however I don't see any initscript..

>> - rctomcat start
I cannot find an rctomcat file anywhere on the system.

dgu
Posts: 24
Joined: Wed Dec 08, 2004 8:27 am

Postby dgu » Thu Jun 02, 2005 4:50 pm

Hi,

What is the name and location of this initscript?


/etc/init.d/tomcat

your posted error message

/etc/init.d/tomcat: line 36: /etc/init.d/functions: No such file or dir


looks like, that you use the initscript from scalix, which is particularly for Red Hat

Done. I uninstalled IBM-Java w/ YaST and reinstalled Sun Java JRE & SDK from YaST, however I don't see any initscript..


hm, can you the first 20 lines of the script /etc/init.d/tomcat

PS: sorry for my bad english ;)

Cheers
dgu

DColeman
Posts: 19
Joined: Thu May 26, 2005 3:44 pm

Postby DColeman » Thu Jun 02, 2005 4:55 pm

Thanks dgu, I appreciate your input.

Here is the entire /etc/init.d/tomcat file:

mgmail:/etc/init.d # more tomcat
#!/bin/sh
#
# chkconfig: 345 91 10
#
# description: \
# This is the init script for starting up the Jakarta Tomcat server.
#
# To install this script on a Redhat Linux system, follow these steps:
#
# (1) log in as root
# (2) copy this script to /etc/rc.d/init.d
# (3) enter "chmod 755 /etc/rc.d/init.d/tomcat"
# (4) edit the script using vi or your favorite editor and ensure that CATALIN
A_HOME points
# to the location of your Tomcat directory
# (5) enter "chkconfig --add tomcat"
# (6) enter "chkconfig --level 345 tomcat on" to enable Tomcat in run levels
# 3, 4 and 5.
#
# Tomcat will now be configured to start as a system service when the
# machine boots.
#
# (7) enter "service tomcat start" to manually start Tomcat and
# "service tomcat stop" to manually stop Tomcat.
#
# This script has been tested on Redhat Enterprise Linux 3.0
#


###### !! PLEASE CHANGE THE FOLLOWING LINE TO MATCH YOUR ENVIRONMENT !! ######
CATALINA_HOME=/opt/jakarta-tomcat-5.0.28; export CATALINA_HOME
###### !! YOU SHOULD NOT NEED TO CHANGE ANYTHING BELOW HERE !! ######

# you do not need to change anything below here

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

# Get config.
. /etc/sysconfig/network

# Check that networking is up.
[ "${NETWORKING}" = "no" ] && exit 0

startup=$CATALINA_HOME/bin/startup.sh
shutdown=$CATALINA_HOME/bin/shutdown.sh

# Where the Scalix server admin commands live (for Scalix server installed local
ly)
PATH=$PATH:/opt/scalix/bin; export PATH

# Functions
start(){
action $"Starting Tomcat service: " $startup
RETVAL=$?
}

stop(){
action $"Stopping Tomcat service: " $shutdown
RETVAL=$?
}

restart(){
stop
start
}

# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo $"Usage: $0 {start|stop|restart}"
exit 1
esac

exit 0

dgu
Posts: 24
Joined: Wed Dec 08, 2004 8:27 am

Postby dgu » Thu Jun 02, 2005 5:05 pm

Hi,

this is not an SuSE initscript.

rename this script

mv /etc/init.d/tomcat /etc/init.d/tomcat.old

than reinstall Sun-Java, Yast should then create a new initscript for tomcat. if not, i can past the initscript from my SLES 9 ;).

DColeman
Posts: 19
Joined: Thu May 26, 2005 3:44 pm

Postby DColeman » Thu Jun 02, 2005 5:23 pm

Did as instructed, but YaST did not create a new initscript for Tomcat.

dgu
Posts: 24
Joined: Wed Dec 08, 2004 8:27 am

Postby dgu » Thu Jun 02, 2005 5:28 pm

ok, here is my initscript


#! /bin/sh
# Copyright (c) 1995-2001 SuSE GmbH Nuernberg, Germany.
# Copyright (c) 2002 SuSE Linux AG Nuernberg, Germany.
#
# Author: Petr Mladek <feedback@suse.de>
#
# /etc/init.d/tomcat
#
# and symbolic its link
#
# /usr/sbin/rctomcat
#
# 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 root:root "$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 root:root "$dir" 2>/dev/null || true
done
"$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
"$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



which version of tomcat you use? from the SLES 9 cd's?

DColeman
Posts: 19
Joined: Thu May 26, 2005 3:44 pm

Postby DColeman » Thu Jun 02, 2005 5:31 pm

Hey thanks alot dgu! Do I name this rctomcat and then run "rctomcat start"?

DColeman
Posts: 19
Joined: Thu May 26, 2005 3:44 pm

Postby DColeman » Thu Jun 02, 2005 5:37 pm

>> which version of tomcat you use? from the SLES 9 cd's?

I'm using tomcat version 5.0.28.

dgu
Posts: 24
Joined: Wed Dec 08, 2004 8:27 am

Postby dgu » Thu Jun 02, 2005 5:38 pm

no, you name this

tomcat

and move it to /etc/init.d/, the you run the follow command

insserv romcat

the you should the tomcat start with

rctomcat start

or with

/etc/init.d/tomcat start


if you use the tomcat version from the scalix package, you must maybe modifie the /etc/sysconfig/j2ee file and set the CATALINA_HOME

CATALINA_HOME="/opt/jakarta-tomcat-5.0.28" or wherever your tomcat home is

dgu
Posts: 24
Joined: Wed Dec 08, 2004 8:27 am

Postby dgu » Thu Jun 02, 2005 5:41 pm

insserv romcat



sorry,

insserv tomcat

DColeman
Posts: 19
Joined: Thu May 26, 2005 3:44 pm

Postby DColeman » Thu Jun 02, 2005 5:50 pm

>> Do I name this rctomcat and then run "rctomcat start"?
Never mind. I realized that it's supposed to be /etc/init.d/tomcat and I did chmod 755 on it.

Unfortunately, the tomcat script is crapping out, looking for /etc/sysconfig/j2ee which does not exist.

dgu
Posts: 24
Joined: Wed Dec 08, 2004 8:27 am

Postby dgu » Thu Jun 02, 2005 6:04 pm

hi,

Unfortunately, the tomcat script is crapping out, looking for /etc/sysconfig/j2ee which does not exist.


ok, the file /etc/sysconfig/j2ee would create from Yast, if you install the tomcat from the SLES 9 CDs

2 options

- you install tomcat version from the CDs, that should create the file /etc/sysconfig/j2ee and naturally also the init script for the tomcat

- or you make the file manuelly

Code: Select all

## Path:        Network/WWW/J2EE/Tomcat
## Type:        string
## Default:     "/usr/share/tomcat"
#
#  This varible defines the CATALINA_HOME to start the service tomcat.
#  See /usr/share/doc/packages/tomcat/README.SuSE for more information.
#
CATALINA_HOME="/opt/jakarta-tomcat-5.0.28"

## Path:        Network/WWW/J2EE/Tomcat
## Type:        string
## Default:     ""
#
#  This varible defines the CATALINA_BASE to start the service tomcat.
#  If the value is empty, it is set to $CATALINA_HOME
#  See /usr/share/doc/packages/tomcat/README.SuSE for more information.
#
CATALINA_BASE=""


you must eventuelly change the CATALINA_HOME


ps: the installation of the Java package with Yast, create naturally not the init script for tomcat

dgu <= idiot ;)

dgu
Posts: 24
Joined: Wed Dec 08, 2004 8:27 am

Postby dgu » Thu Jun 02, 2005 6:25 pm

i dont know, why I came on the idea, that the installation of java produces the tomcat startscript :roll: :lol:

maybe it's to late :wink:

Cheers
dgu

DColeman
Posts: 19
Joined: Thu May 26, 2005 3:44 pm

Postby DColeman » Tue Jun 07, 2005 1:58 pm

Hello. Ok, I was out of the office for a few days and am coming back to this. Thanks again, dgu for your assistance.

I created /etc/sysconfig/j2ee and pasted in the contents that you gave above. The CATALINE_HOME path does match what I have. Tried running ./tomcat start and got the following:

./tomcat: line 114: syntax error near unexpected token `"$CATALINA_BASE/logs"'
./tomcat: line 114: ` "$CATALINA_BASE/logs" \ '

I do have a logs subdirectory:
mgmail:/opt/jakarta-tomcat-5.0.28 # ls
. LICENSE RELEASE-NOTES bin conf server temp work
.. NOTICE RUNNING.txt common logs shared webapps

Any thoughts? Anyone from Scalix care to participate?

Thanks!

florian
Scalix
Scalix
Posts: 3852
Joined: Fri Dec 24, 2004 8:16 am
Location: Frankfurt, Germany
Contact:

Postby florian » Tue Jun 07, 2005 3:03 pm

I actually did a SLES9 based install myself today.

You cannot use the Tomcat shipped with SuSE for at least two reasons:
- It is downrev - we require at least 5.0.28
- It runs as user tomcat while running tomcat for Scalix, at least SAC, requires running as root.

The steps I followed and tested in beautiful Stockholm today were as follows and that's what I recommend:

1. Install SuSE tomcat RPM to get the startup script. Don't run it.
2. Install Java JDK 1.4.2_08 from Sun download in addition to SuSE-supplied JDK
3. run Scalix Installer, do not use tomcat as found, but install fresh copy in /opt/jakarta-tomcat-5.0.28; make sure both JAVA and CATALINA in Installer point to the self-installed versions.
4. shutdown tomcat manually using shutdown.sh
5. in /etc/sysconfig/j2ee, change CATALINA_HOME to point to new Tomcat directory
6. in /etc/init.d/tomcat, comment out all lines that change directory and file ownership of any tomcat files to user "tomcat"
7. in the actual startup and shutdown lines, remove the "su - tomcat -c" part, the line should now read /bin/bash .....
8. in /opt/jakarta-tomcat-5.0.28/bin/setclasspath.sh, after the JAVA_HOME, etc., lines added by Scalix Installer (very top of file), add a line reading PATH=$PATH:/opt/scalix/bin:/opt/scalix/diag
9. execute chkconfig --add tomcat
10. execute rctomcat start

Hope I remember my fast finger's typing correctly, but this results in a working, workable and reboot-safe confirmation.

We know that this is still a major pain and are working hard to make life easier for all of you; the next release of Scalix will have an improved installer that automatically and correctly integrates Tomcat startup with system boot on both RedHat and SuSE.

Cheers,
Florian.
Florian von Kurnatowski, Die Harder!


Return to “Installation”



Who is online

Users browsing this forum: No registered users and 4 guests