# Tomcat unter Suse Linux installieren



## inextremo (11. Nov 2004)

hi!
leider bin ich absoluter linux n00b und bekomme es einfach nicht hin, tomcat zu installieren
hab auch schon die anleitungen auf der tomcat seite ausprobiert aber leider geht es nicht.
könnte mir jemand mit einer ausführlichen, deutschen anleitung helfen?
das wäre echt super


----------



## bygones (11. Nov 2004)

mhm - bin mir nicht ganz sicher, aber du meines Wissens kannst du dir die Binaries runterladen, entpacken und dann einfach die Umgebungsvariable CATALINA_HOME auf das Verzeichnis setzen, - sollte reichen ?!


----------



## inextremo (11. Nov 2004)

hm ok das klingt schon mal einfach hehe
und wie setze ich diese variable? ;-)


----------



## bummerland (11. Nov 2004)

export CATALINA_HOME=pfad zu deinem ordner


----------



## bygones (11. Nov 2004)

in deiner .xxrc datei z.b. bei bash konsole per
export CATALINA_HOME=.....


----------



## inextremo (11. Nov 2004)

ok nächste n00b frage ;-)
wo finde ich die datei? ;-)


----------



## bygones (11. Nov 2004)

in deinem Homeverzeichnis  (mach mal "ls -a" dann siehst du auch die versteckten dateien)


----------



## inextremo (11. Nov 2004)

puh nix gefunden... und nun?


----------



## bygones (11. Nov 2004)

inextremo hat gesagt.:
			
		

> puh nix gefunden... und nun?


schreib mal "echo $0" in die Konsole und schau was für eine Konsole du hast... dann muss es eine solche .xxxrc datei vorhanden sein (xxx = z.b. bash)


----------



## inextremo (11. Nov 2004)

achsooo
lol ich hab die ganze zeit nach XX gesucht 
also bei mir heißt die .wmrc

und da nun einfach des eintragen?


----------



## thE_29 (11. Nov 2004)

ähm, ich hab tomcat gestern installiert und da braucht man nix installieren 


einfach java (JDK ja kein JRE installieren)

JAVA_HOME auf dein java verzeichnis setzn, bsp

export JAVA_HOME=/usr/java/j2sdk/

ja, nicht ins bin Verzeichnis

dann lädst du dir die binaries von tomcat runter und extrahierst die ins home Verzeichnis oder sonst wohin mit 

tar -xzvf jakarta-tomcat......


dann gehst du in Verzeichnis (dort wo du es hininstalliert hast) mit 
Bsp.:
cd /home/user/jakarat-tomcat/bin/ 

und sagst ./startup.sh

fallst du nicht willst das tomcat auf den Port 8080 läuft (sprich http://localhost:8080) musst du in der server.xml ( TOMCATVERZ/conf/) den 8080 Eintrag mit 80 ersetzen und das script startup.sh aber als SuperUser (root - wirst du mittels "su" eingabe und dann root PW) starten.

Hoffe dir geholfen zu haben 


Edit: Du musst CATALINE_HOME nie setzen, das macht dein startup.sh automatisch, brauchst nur JAVA_HOME

Hier anbei ein kleines Script von mir:


```
export JAVA_HOME=/usr/java/j2sdk1.4.2_06/ <- durch deines ersetzen

case "$1" in
start)
echo "Starte Tomcat"
/home/npos/jakarta-tomcat-5.0.28/bin/startup.sh
;;
stop)
echo "Stoppe Tomcat"
/home/npos/jakarta-tomcat-5.0.28/bin/shutdown.sh
;;
restart)
echo "Restarte Tomcat"
$0 stop
$0 start
;;
*)
echo "Wrong usage"
esac
```


oder dl http://members.aon.at/taschek/tomcat.sh

aufrufen mit 

./tomcat.sh start
stop
restart


----------



## Bleiglanz (11. Nov 2004)

```
restart)
echo "Restarte Tomcat"
$0 stop
$0 start
```
man kann aber nicht garantieren, dass man mit diesen Befehlen wirklich einen sauberen Restart hinlegt!

Gründe (nur als Beispiel) 
- laut Spec kann nicht vorhergesehen werden, wie lange Tomcat auf ein Servlet warten soll
- es gibt kein var/lock/tomcat.PID o.ä.
- tomcat verwendet NIE System.exit(0) 

bei mir bleiben regelmässig ein paar threads hängen, die ich dann manuell beseitigen muss (manchmal funzt dann auch das hochfahren nicht, weil der port noch belegt ist) etc.

also mit vorsicht zu geniessen


----------



## inextremo (11. Nov 2004)

ohmann ich wünscht ich könnte das unter windows machen.... da war das alles sooo einfach 
nuja ich probiers jetzt aus und hoffe es geht...

ich berichte dann! 
auf jeden fall vielen danks chon mal für die µhe


----------



## inextremo (11. Nov 2004)

JHUUUUU wahnsinn!!!
es hat geklappt...
öhm sowas wie autostart gibbets da net oder?


----------



## foobar (11. Nov 2004)

> öhm sowas wie autostart gibbets da net oder?


Klar gibts das. In /etc/rc.d werden die Runlevel konfiguriert. Dort kannst du auch den Tomcat automatisch starten lassen.
Hier ist ein kleines Shell-Script:

```
#!/bin/bash
#
# Startup script for Tomcat
#
# chkconfig: 345 84 16
# description: Tomcat jakarta JSP server



export TOMCAT_HOME=/opt/tomcat
TOMCAT_START=$TOMCAT_HOME/bin/startup.sh
TOMCAT_STOP=$TOMCAT_HOME/bin/shutdown.sh

#Necessary environment variables
export JAVA_HOME="/usr/java/j2sdk1.4.2"
export CATALINA_HOME="/opt/tomcat"
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: "
    $TOMCAT_START
    echo
    #touch /var/lock/subsys/tomcatd
# We may need to sleep here so it will be up for apache
#    sleep 5
#Instead should check to see if apache is up by looking for http.pid
}

stop() {
    echo -n $"Shutting down Tomcat: "
    $TOMCAT_STOP
    #rm -f /var/lock/subsys/tomcatd.pid
    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 < /tmp/tomcat_process_count.txt
if [ $line -gt 0 ]; then
    echo -n "tomcatd ( pid "
    ps ax --width=1000 | grep "[o]rg.apache.catalina.startup.Bootstrap start" | awk '{printf $1 " "}'
    echo -n ") is running..."
else
    echo -n "Tomcat is stopped"
fi
}

case "$1" in
    start)
	start
	;;
     stop)
	stop
	;;
     restart)
	stop
	sleep 3
	start
	;;
     status)
	status
	;;
     *)
	echo "Usage: tomcatd {start|stop|restart|status}"
     exit 1
esac
```
Das Script mußt du in dem Ordner /etc/rc.d abspeichern und dann symbolische Links aus den Ordner rc3.d und rc5.d setzen. Weiter Informationen findest du hier


----------



## inextremo (11. Nov 2004)

lol... das nennt er klein 

ich hätt schlosser werden sollen

ok ich werds kopieren und einfügen hehe

wo wir gleich schon bei der nächsten frage wären...
wie bekomm ich nen usb stick zum laufen?
ich hab ihn reingesteckt aber es wird nix angezeigt bei der festplattenübersicht


----------



## thE_29 (11. Nov 2004)

nunja, auswendig würd ich sagen das müsste so irgendwie gehen (bezogen auf meine Pfade von tomcat, die etc/init.d... sollte bei dir auch so sein)
Mache das jetzt ausn Kopf, also musst du wahrscheinlich vorher su wieder eingeben


```
su
(dann pw)
ln -s /home/npos/jakarta-tomcat-5.0.28/bin/startup.sh /etc/init.d/rc5.d/S99TOMCAT
ln -s /home/jakarta-tomcat-5.0.28/bin/shutdown.sh /etc/init.d/rc5.d/K99TOMCAT
```


----------



## thE_29 (11. Nov 2004)

was ihr alle mit euren Variablen setzen habts......

der setzt alle TOMCAT und CATALINE vars von alleine, das einzige was du brauchst ist JAVA_HOME....


----------



## foobar (11. Nov 2004)

> wie bekomm ich nen usb stick zum laufen?
> ich hab ihn reingesteckt aber es wird nix angezeigt bei der festplattenübersicht


Es gibt ein Kernelmodul mit dem Namen usb-storage, damit kannst auf Usb-Datenträger zugreifen. Mit lsmod kannst du als root überprüfen welche Kernelmodule im Moment geladen wurden. Falls es nicht geladen wurde kannst du es mit insmod usb-storage laden. Wenn das Modul bei dir nicht existiert, mußt du es selber kompilieren und dann laden.


----------



## inextremo (15. Nov 2004)

ok hab den befehl mal eingegeben... 
wo im linux finde ich nun den usb stick?


----------



## inextremo (15. Nov 2004)

achja und gleich noch ne frage...
redhat software läuft unter suse nicht oder?


----------



## thE_29 (15. Nov 2004)

Was verstehst du unter Redhat Software?

rpm Pakete oder was meinst du?


----------



## inextremo (15. Nov 2004)

öhm ich denke 

also programme...
weil ich hab grad n programm runtergeladen das es aber nur für redhat gibt
bekomm ich das auch unter suse zum rennen?


----------



## inextremo (15. Nov 2004)

ok hab den usb stick gefunden! *puh*


----------



## Oni (24. Mrz 2006)

Guten Morgen, 

ich muss das Thema nochmal aufgreifen.


Also ich habe Suse 10 installiert und will da jetzt einen Tomcat 5.5.16 Server laufen lassen. Wenn ich den Server von Hand starte geht alles.

Jetzt wollte ich ihn irgendwie in den Autostart kriegen.
Ich habe den Thread im Forum gefunden und das dann so probiert, 


```
su
(dann pw)
ln -s /home/xxxx/downloads/apache-tomcat-5.5.16/bin/startup.sh /etc/init.d/rc5.d/S30TOMCAT
ln -s /home/xxxx/downloads/apache-tomcat-5.5.16/bin/shutdown.sh /etc/init.d/rc5.d/K30TOMCAT
```

aber es klappt nicht.

Wenn ich in den Ordner "/etc/init.d/rc5.d/ " wechsel und per Hand "sh S30TOMCAT start" eingebe funzt es auch nur beim booten nicht. 
Was mache ich falsch? Der Thread ist ziemlich alt, hat sich da vielleicht irgendwas geändert? 


Gruß


----------



## Caffè Latte (24. Mrz 2006)

Hi,

was steht denn in den Logs? Ist das Skript überhaupt ausführbar? Mach mal als root:

```
chmod +x /home/xxxx/downloads/apache-tomcat-5.5.16/bin/startup.sh
```
Wenn du schon "sh ..." davorschreibst sieht es nämlich nicht danach aus.

Caffè Latte


----------



## Oni (24. Mrz 2006)

Bin auf der Arbeit und das Netzwerk funzt gerade nicht, also kann ich nicht gucken.

Aber ich bin mir ziemlich sicher das die Rechte richtig sind (755)

muss man bei scripts nicht immer sh davor schreiben? wie wäre der aufruf den sonst?


----------



## Caffè Latte (24. Mrz 2006)

Hi,

ich gehe mal davon aus, dass die Verzeichnisse deiner Skripte nicht im Suchpfad (PATH) sind. Dann muss man den gesamten Pfad immer mit angeben. Wenn du schon im Verzeichnis bist musst du das auch machen; der Pfad ist dann "./". Der Aufruf sind dann so aus: ./startup.sh.

Vllt. hilft's ja 

Caffè Latte


----------



## Oni (24. Mrz 2006)

Das netzwerk geht wieder...

Also die Rechte sind überall (755) und wenn ich im Verzeichnis "/etc/init.d/rc5.d" stehe kann ich mit "./S30TOMCAT" den Server starten.

Log-Dateien werden beim Serverstart garnicht erzeugt... beim manuellen Start(siehe oben) aber schon.

Sonst noch eine Idee woran es leigen könnte?


----------



## Caffè Latte (24. Mrz 2006)

Hi,

welches ist denn dein Standard-Runlevel? Ist das überhaupt 5? Wenn du einen grafischen Login bekommst, dann ist der Runlevel IMHO 3 ...

Caffè Latte


----------



## Oni (24. Mrz 2006)

Wenn ich auf der Konsole runlevel eingebe kommt als Ergebnis N 5,
ich habe das jetzt auchmal in rc3.d eingefügt aber es ändert sich nichts.


----------



## Caffè Latte (24. Mrz 2006)

Hi,

schreibe mal ein eigenes Start- und Stopskript, das speicherst du dann unter /etc/init.d. Das könnte so aussehen (ungetestet da kein SuSE ; ggf. Pfade anpassen):


```
#!/bin/sh
### BEGIN INIT INFO
# Provides: tomcat
# Required-Start: $local_fs $network
# Required-Stop: $local_fs $network
# Default-Start: 5
# Default-Stop: 6
# Short-Description: start, stop and restart tomcat
# Description: apache tomcat
### END INIT INFO

mode=$1 # start or stop or restart

case "$mode" in
  'start')
    # Start daemon
    echo "Starting Tomcat-Server!"
    /home/xxxx/downloads/apache-tomcat-5.5.16/bin/startup.sh
    ;;

  'stop')
    # Stop daemon
    echo "Stopping Tomcat-Server!"
    home/xxxx/downloads/apache-tomcat-5.5.16/bin/shutdown.sh
    ;;

  'restart')
    # Stop the service and regardless of whether it was
    # running or not, start it again.
    $0 stop
    $0 start
    ;;

    *)
    # usage
    echo "Usage: $0 start|stop|restart"
    exit 1
    ;;
esac
```

Das Skript machst du dann ausführbar und verlinkst es nach /etc/init.d/rc5.d wie gehabt.

Caffè Latte


----------



## Caffè Latte (24. Mrz 2006)

... gelöscht, da doppelt.


----------



## Caffè Latte (30. Mrz 2006)

... und: gehts so?


----------



## Oni (4. Apr 2006)

Sorry das ich erst so spät antworte...und Danke für die Mühe

ich habe den Fehler mittlerweile gefunden, es lag nicht am Script. Anscheind muss man bei Suse 10, die rcX.d von Suse ordnen lassen.

Man legt das Script unter 

/etc/init.d 

ab und ruf dann den Befehl 

insserv scriptname (z.B. insserv tomcat5)

auf. Danach ordnet Suse die rcX.d. Beim nächsten Starten ging es dann.


----------



## Oni (4. Apr 2006)

Falls es jemanden interessiert, steht das auch nochmal etwas ausführlicher hier. 

www.linux-club.de/


----------

