Zeile 74: | Zeile 74: | ||
Alle Dienste anzeigen können Sie mit | Alle Dienste anzeigen können Sie mit | ||
service --status-all | service --status-all | ||
{{Achtung|Ein Fallstrick: ein Dienst kann Probleme machen, wenn die SQL_ENV zu komplexe Bash-Kommandos enthält. In diesem Falle müssen Sie eine abgespeckte TOMCAT_ENV erstellen, die nur die Variablen zuweist.}} |
Version vom 11. September 2021, 08:00 Uhr
Tomcat als Dienst
Damit Tomcat bei Systemstart automatisch hochfährt, und beim Herunterfahren kontrolliert gestoppt wird, muss man einen Dienst anlegen.
Tomcat als Dienst mit systemd
Wenn Sie den Tomcat der Ubuntu Distribution nutzen, wird dieser automatisch für systemd als Dienst konfiguriert. Die Paramater für den Dienst stehen in der Datei
/etc/default/tomcat
Da die Versionsnummern des Tomcat nicht immer zu SuperX passen, ist es ggf. sinnvoll einen eigenen Tomcat bzw. den im SuperX Kernmodul mitgelieferten Tomcat zu nutzen. In modernen Linuxen geht das mit dem Tool "systemd", was wiederum kontrolliert wird durch den Kommandozeilen Befehl "systemctl".
Damit dieser als Dienst läuft, muss man Linux wie folgt konfigurieren: Nehmen wir als Beispiel, dass das Kernmodul unter /home/superx liegt und Tomcat vom User superx gestartet wird.
Service-Scripte
Zunächst legen wir als User superx im Verzeichnis tomcat/bin zwei Dateien an:
startup_service.x
# # Startup script for Apache Tomcat with systemd # set -e # Load the service settings . /home/superx/db/bin/SQL_ENV CATALINA_BASE=/home/superx/webserver/tomcat CATALINA_HOME=/home/superx/webserver/tomcat CATALINA_TMPDIR=/home/superx/webserver/tomcat/temp # Start Tomcat cd $CATALINA_BASE && exec $CATALINA_HOME/bin/catalina.sh run
und shutdown_service.x:
# Shutdown script for Apache Tomcat with systemd # set -e # Load the service settings . /home/superx/db/bin/SQL_ENV CATALINA_BASE=/home/superx/webserver/tomcat CATALINA_HOME=/home/superx/webserver/tomcat CATALINA_TMPDIR=/home/superx/webserver/tomcat/temp # Stop Tomcat cd $CATALINA_BASE && exec $CATALINA_HOME/bin/catalina.sh stop
In der Datei SQL_ENV muss dann noch der Ordner /usr/bin in den PATH aufgenommen werden. Daher am besten am Anfang die Zeilen
PATH=$PATH:/usr/bin export PATH
setzen. Außerdem muss im Kopf der SQL_ENV
#!/bin/bash
stehen, damit die Bash genommen wird.
Dienst einrichten
Legen Sie als User root die Datei /etc/systemd/system/tomcat_superx.service an, mit dem Inhalt:
[Unit] Description=Tomcat SuperX After=syslog.target After=network.target After=postgresql.service [Service] RestartSec=2s Type=simple User=superx Group=users WorkingDirectory=/home/superx/webserver/tomcat/bin ExecStart=/bin/bash /home/superx/webserver/tomcat/bin/startup_service.x ExecStop=/bin/bash /home/superx/webserver/tomcat/bin/shutdown_service.x EnvironmentFile=/home/superx/db/bin/SQL_ENV [Install] WantedBy=multi-user.target
Den Dienst aktivieren Sie dann mit
systemctl enable tomcat_superx
und starten ihn dann mit
systemctl start tomcat_superx
Bei Problemen kann man die Fehlerausgabe anzeigen:
journalctl -xe
Wenn man die .service-Datei ändert, muss man die Dienste neu laden:
systemctl daemon-reload
Alle Dienste anzeigen können Sie mit
service --status-all
![]() |
Ein Fallstrick: ein Dienst kann Probleme machen, wenn die SQL_ENV zu komplexe Bash-Kommandos enthält. In diesem Falle müssen Sie eine abgespeckte TOMCAT_ENV erstellen, die nur die Variablen zuweist. |