PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kann tomcat nicht als service hinzufügen



tomi
03.10.07, 13:49
Hallo,

habe eben den Tomcat Server zum Laufen bekommen und wollte ihn jetzt anhand einiger Anleitungen aus dem Internet als service mit einem bestimmten Runlevel installieren, damit er automatisch beim Booten startet.

Ich benutze Suse 10.2 und habe eine Datei namen 'tomcat' in /etc/init.d/ abgelegt.

In der Datei 'tomcat' steht folgendes:

#!/bin/sh
# Tomcat startup script

RUN_AS_USER=tomcat
START_TOMCAT="$CATALINA_HOME/bin/catalina.sh start"
STOP_TOMCAT="$CATALINA_HOME/bin/catalina.sh stop"

#. /etc/environment
chown ${RUN_AS_USER}. /opt/tomcat/logs/*

start() {
echo "Starting tomcat: "
if [ $USER != $RUN_AS_USER ]; then
su -p $RUN_AS_USER ${START_TOMCAT}
else
$START_TOMCAT
fi
echo "done."
}
stop() {
echo "Shutting down tomcat: "
if [ $USER != $RUN_AS_USER ]; then
su -p $RUN_AS_USER ${STOP_TOMCAT}
else
$STOP_TOMCAT
fi
echo "done."
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 8
start
;;
*)
echo "Usage: $0 {start|stop|restart}"
esac

exit 0

Dann habe ich mit

chkconfig --add tomcat
und

chkconfig --level 5 tomcat on

dem System hinzugefügt.

Wenn ich in den Runlevel-Editor schaue, dann steht auch der Service tomcat drin.

Möchte ich jetzt aber mit

service tomcat start

Den tomcat starten, dann erhalte ich immer folgende Fehlermeldung:

env: /etc/init.d/tomcat: No such file or directory

Derweile liegt die Datei 'tomcat' aber definitiv im Verzeichnis /etc/init.d/

Was hab ich falsch gemacht? Danke schonmal für Antworten!

b3ll3roph0n
03.10.07, 14:01
Was hab ich falsch gemacht? Danke schonmal für Antworten!Dir bzw. deinem Init-Script fehlt der passende Header.
Siehe: http://linuxforen.de/forums/showpost.php?p=1501695&postcount=21

tomi
03.10.07, 14:52
So ich hab die /etc/init.d/tomcat nun so geändert:


#!/bin/sh
#
# /etc/init.d/tomcat
#
### BEGIN INIT INFO
# Provides: tomcat
# Required-Start: $syslog $remote_fs
# Should-Start: $time ypbind sendmail
# Required-Stop: $syslog $remote_fs
# Should-Stop: $time ypbind sendmail
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Short-Description: Tomcat Server
# Description: Script to start and stop the Tomcat Server
### END INIT INFO

RUN_AS_USER=tomcat
START_TOMCAT="$CATALINA_HOME/bin/catalina.sh start"
STOP_TOMCAT="$CATALINA_HOME/bin/catalina.sh stop"

#. /etc/environment
chown ${RUN_AS_USER}. /opt/tomcat/logs/*

start() {
echo "Starting tomcat: "
if [ $USER != $RUN_AS_USER ]; then
su -p $RUN_AS_USER ${START_TOMCAT}
else
$START_TOMCAT
fi
echo "done."
}
stop() {
echo "Shutting down tomcat: "
if [ $USER != $RUN_AS_USER ]; then
su -p $RUN_AS_USER ${STOP_TOMCAT}
else
$STOP_TOMCAT
fi
echo "done."
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 8
start
;;
*)
echo "Usage: $0 {start|stop|restart}"
esac

exit 0

dann habe ich nochmal


chkconfig --add tomcat
chkconfig --level 5 tomcat on

ausgeführt. Jedoch bekomme ich mit service tomcat start immernoch dieselbe Fehlermeldung.

b3ll3roph0n
03.10.07, 15:59
Ist das Script ausführbar?
ls -las /etc/init.d/tomcat
Was sagt überhaupt
chkconfig -l tomcat

tomi
03.10.07, 16:49
ls -las /etc/init.d/tomcat
sagt folgendes:

4 -rwxrwxrwx 1 root users 1240 Oct 3 14:45 /etc/init.d/tomcat

und
chkconfig -l tomcat
sagt:

tomcat 0:off 1:off 2:off 3:off 4:off 5:on 6:off

b3ll3roph0n
03.10.07, 17:13
Du solltest vielleicht auch die Variable CATALINA_HOME in dem Script setzen.

tomi
03.10.07, 17:19
Du solltest vielleicht auch die Variable CATALINA_HOME in dem Script setzen.

Ich hab jetzt mal den absoluten Pfad zu dem Start- und Stopskript angegeben (Ohne Variablen).
Funktioniert aber immernoch nicht

b3ll3roph0n
03.10.07, 19:16
Versuchs mal so:
(Wichtig ist das su -c und das Quoten des Befehls.)

[...]
RUN_AS_USER="tomcat";
TOMCAT_BIN="/foo/bar/bin/catalina.sh";

[...]

start() {
echo "Starting tomcat: "
if [ "${USER}" != "${RUN_AS_USER}" ]; then
su -m ${RUN_AS_USER} -c "${TOMCAT_BIN} start";
else
${TOMCAT_BIN} start;
fi;
echo "done.";
};
[...]
catalina.sh ist auch ausführbar?

Der User tomcat besitzt auch genügend Rechte um das Script auszuführen?


Btw: für das Init-Script reichen die Berechtigungen 0755 und als Eigentümer root:root.
0777 ist komplett unnötig!

tomi
04.10.07, 09:59
Versuchs mal so:
(Wichtig ist das su -c und das Quoten des Befehls.)

[...]
RUN_AS_USER="tomcat";
TOMCAT_BIN="/foo/bar/bin/catalina.sh";

[...]

start() {
echo "Starting tomcat: "
if [ "${USER}" != "${RUN_AS_USER}" ]; then
su -m ${RUN_AS_USER} -c "${TOMCAT_BIN} start";
else
${TOMCAT_BIN} start;
fi;
echo "done.";
};
[...]
catalina.sh ist auch ausführbar?

Der User tomcat besitzt auch genügend Rechte um das Script auszuführen?


Btw: für das Init-Script reichen die Berechtigungen 0755 und als Eigentümer root:root.
0777 ist komplett unnötig!

Hallo,

danke erstmal für deine bisherigen Mühen. Nachdem ich deine letzten Hinweise alle umgesetzt hatte, dachte ich, dass Problem sei nun behoben. Denn catalina.sh war z.B. nur für root ausführbar.
Hab aber nun den gesamten Tomcat-Ordner für den user tomcat ausführbar gemacht. Zudem hab ich catalina.sh die Rechte 755 gegeben.

Ich hab die Änderungen am Startscript vorgenommen. An der Fehlermeldung hat sich allerdings nichts geändert!

Meine /etc/init.d/tomcat sieht jetzt so aus:

#!/bin/sh
#
# /etc/init.d/tomcat
#
### BEGIN INIT INFO
# Provides: tomcat
# Required-Start: $syslog $remote_fs
# Should-Start: $time ypbind sendmail
# Required-Stop: $syslog $remote_fs
# Should-Stop: $time ypbind sendmail
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Short-Description: Tomcat Server
# Description: Script to start and stop the Tomcat Server
### END INIT INFO

RUN_AS_USER=tomcat
#START_TOMCAT="/etc/apache-tomcat-5.5.25/bin/startup.sh"
#STOP_TOMCAT="/etc/apache-tomcat-5.5.25/bin/shutdown.sh"
TOMCAT_BIN="/etc/apache-tomcat-5.5.25/bin/catalina.sh"

#. /etc/environment
chown ${RUN_AS_USER}. /opt/tomcat/logs/*

start() {
echo "Starting tomcat: "
if [ "${USER} != "${RUN_AS_USER}" ]; then
su -m ${RUN_AS_USER} -c "${TOMCAT_BIN} start";
else
${TOMCAT_BIN} start;
fi
echo "done."
}
stop() {
echo "Shutting down tomcat: "
if [ "${USER} != "${RUN_AS_USER} ]; then
su -m "${RUN_AS_USER} -c "${TOMCAT_BIN} start";
else
${TOMCAT_BIN} stop;
fi
echo "done."
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 8
start
;;
*)
echo "Usage: $0 {start|stop|restart}"
esac

exit 0


Grüße

b3ll3roph0n
04.10.07, 12:02
Setz bitte mal
set -x an den Anfang (natürlich nach #!/bin/sh) des Scriptes und starte dieses dann mal.

tomi
04.10.07, 12:08
Hab ich erledigt, aber leider auch kein Erfolg.

b3ll3roph0n
04.10.07, 12:13
Hab ich erledigt, aber leider auch kein Erfolg.Das soll auch keinen "Erfolg" bringen, sondern eine detailiertere Fehlermeldung/Ausgabe des Scriptes.

Luzi P
04.10.07, 18:03
Hallo,

braucht der Tomcat nicht noch eine Variable wie JAVA_HOME mit dem Pfad zu Java?

Grüße, LP

tomi
04.10.07, 19:36
Das soll auch keinen "Erfolg" bringen, sondern eine detailiertere Fehlermeldung/Ausgabe des Scriptes.

welche Logfile muss ich mir denn da anzeigen lassen?

temir
04.10.07, 22:34
@tomi: wenn es nicht so dringend mit dem Tomcat ist, kann ich am Mo. in der Arbeit nachschauen: hatte mal mir ein init-Script von RH genommen und angepasst; den könnte ich hochladen.

tomi
04.10.07, 22:35
jup, so dringend ist das nicht.

Wäre nett, wenn du mal nach dem Script schaust. Danke schonmal

b3ll3roph0n
05.10.07, 11:19
welche Logfile muss ich mir denn da anzeigen lassen?Gar keines.

set -x einfügen, das Script starten
/etc/init.d/tomcat start und Ausgaben posten.

Und den Kommentar von Luzi P beachten ...
Werden die entsprechende JAVA-Umgebungsvariablen gesetzt?
Startet das die catalina.sh überhaupt (ohne das Startscript)?

temir
08.10.07, 09:25
Nun ist es soweit... Die Suche letzte Woche in den Beiträgen hat irgendwie nichts ergeben, obwohl ich genau wusste: das Script ist doch schon mal uploaded worden. Heute beim Uploadversuch weist mich die Forum-SW daraf hin (http://www.linuxforen.de/forums/showpost.php?p=1108800&postcount=5).

tomi
19.10.07, 12:50
Hallo,

sorry erstmal, dass ich mich erst zwei Wochen später wieder melde. Erstmal vielen Dank an temir für dein Script.

Hab das Script eingefügt, und den Pfad zum TOMCAT_HOME gesetzt. Die Umgebungsvariablen wie $JAVA_HOME stimmt auch. Den Nutzer 'tomcat' (in Gruppe 'tomcat') gibt es ebenso.

Den alten Dienst hab ich entfernt und dann nochmal mit chkconfig --add tomcat neu in den Runlevel eingetragen.

Nur leider ist das Ergebnis immernoch dasselbe. Erhalte immernoch diese Fehlermeldung und der Dienst startet nicht.

Wenn ich catalina.sh ausführe, dann kann ich den Tomcat starten und stoppen. Also daran sollte es nicht liegen.

Das
set -x hab ich mal aktiviert und dann
/etc/init.d/tomcat start ausgeführt.
Dann erhalte ich folgende Fehlermeldung:

-bash: /etc/init.d/tomcat: /bin/sh^M: bad interpreter: No such file or directory

Leider kann ich diese Fehlermeldung nicht interpretieren, aber vielleicht kann es mir einer sagen und evtl. haben wir dann auch den Fehler.

Danke schonmal

marce
19.10.07, 13:10
mach mal ein dos2unix über die Datei - vermutlich hast Du die Datei auf einem Windows-System erstellt und dann mit ftp oder scp hochgeladen?

tomi
19.10.07, 16:06
mach mal ein dos2unix über die Datei - vermutlich hast Du die Datei auf einem Windows-System erstellt und dann mit ftp oder scp hochgeladen?

Jap, hab es in Windows erstellt und genau das war dann auch der Fehler ;-)

Wusste nicht, dass es dadurch zu Problemen kommen kann. Aber vielen Dank jedenfalls, jetzt läufts ;)