hier Jetty 9.1.0 mit Ubuntu 13.10
- Hinweis: alle Arbeitsschritte als root user ausführen, ggf. mit sudo.
Voraussetzung JDK 1.7.* ist bereits installiert! JAVA_HOME sollte gesetzt sein.
Beispiel: export JAVA_HOME=/usr/local/java/jdk1.7.0_25
(am besten in /etc/environment
eintragen).
Aktuelles Jetty-Installationspaket von
http://eclipse.org/jetty/downloads.php
herunterladen und nach /opt
kopieren.
- Hinweis: auf eine separate Jetty-Base wird verzichtet.
cd /opt tar -xvzf jetty-distribution-9.1.0.v20131115.tar.gz mv jetty-distribution-9.1.0.v20131115/ jetty cd /opt/jetty mkdir temp
- bitte sicherstellen, daß java aus der korrekten Runtime bzw. dem entsprechenden JDK verwendet wird.
java -jar start.jar --add-to-startd=http,deploy java -jar start.jar --add-to-startd=https
- im regulären Betrieb führt nicht root, sondern der Benutzer jetty den Service aus.
useradd --user-group --shell /bin/false --home-dir /opt/jetty/temp jetty chown --recursive jetty /opt/jetty
das im Jetty-Installationspaket enthaltene Service-Start-Script nach /etc/init.d
kopieren:
cp /opt/jetty/bin/jetty.sh /etc/init.d/jettyneue Datei:
vi /etc/default/jetty
-------------------------------------------------------- JAVA=/usr/local/java/jdk1.7.0_25/bin/java # Path to Java NO_START=0 # Start on boot JETTY_HOME=/opt/jetty JETTY_BASE=/opt/jetty TMPDIR=/opt/jetty/temp JETTY_HOST=0.0.0.0 # Listen to all hosts JETTY_ARGS=jetty.port=10080 JETTY_USER=jetty # Run as this user --------------------------------------------------------
- Tip: zum Testen den Text-Browser Lynx installieren: apt-get install lynx
service jetty start Starting Jetty: OK Di 21. Jan 10:33:31 CET 2014 Jetty running pid=3291Test mit Browser:
lynx http://localhost:10080
service jetty status service jetty checkbeide Ausgaben enthalten eine Zeile wie
"Jetty running pid=3291"
.
service jetty stop
Sopping Jetty: OK
Port 80 ist der Standard-Port für Webserver. Daher ist dies ein Privileg von root. Da der Service von Benutzer jetty ausgeführt werden soll, muß der konfigurierte Port 10080 auf Port 80 umgeleitet werden. Dies erfolgt mit Hilfe des Service-Programms Xinetd.
Xinetd installieren: apt-get install xinetd
vi /etc/xinetd.d/redirect80
-------------------------------------------------------- service redirect_80 { disable = no socket_type = stream protocol = tcp user = root wait = no port = 80 redirect = localhost 10080 type = UNLISTED } -------------------------------------------------------- /etc/init.d/xinetd restarttesten:
service jetty start
lynx http://localhost
service jetty stop
update-rc.d jetty defaults(
update-rc.d -f jetty remove
zum Entfernen aus dem Systemstart )
Obwohl der Service manuell startbar ist kommt es oft vor, daß der Service nicht beim Booten
des Systems gestartet wird. Dies scheint in irgendeiner Weise mit der konkreten Linux-Installation,
den Eigenarten und der Konfiguration des lokalen Netzwerks und des installierten Software-Portfolios
zusammenzuhängen. Zu dem Zeitpunkt, zu dem Jetty gestartet werden soll, steht offenbar eine benötigte
System-Ressource noch nicht zur Verfügung, so daß der Start des Services fehlschlägt.
Anders formuliert: der Service-Start wird während des Bootens zu früh ausgelöst. Jetty steht dann
nach dem Booten nicht zur Verfügung. Die genaue Ursache ist hier nicht bekannt, aber folgender
Workaround hat sich als zuverlässig erwiesen:
"at" Scheduler installieren: apt-get install at
Zwei kleine Shellscripte anlegen:
1. vi /opt/jetty/start_jetty.sh
----------------------------- #!/bin/sh service jetty start -----------------------------
vi /opt/jetty/schedule_jetty.sh
---------------------------------------- #!/bin/sh at -f /opt/jetty/start_jetty.sh now+1min ----------------------------------------
/etc/rc.local
den Eintrag
/opt/jetty/schedule_jetty.shhinzufügen.
Dies verzögert den Start von Jetty um eine Minute, wodurch sichergestellt wird, daß zum Startzeitpunkt von Jetty der Bootvorgang vollständig abgeschlossen ist und alle erforderlichen System- und Netzwerkressourcen verfügbar sind.