Tomcat aus Linux Distributionen
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. Auch wenn Sie mehrere Tomcats auf einem Server betreiben kann es sinnvoll sein, Tomcat manuell zu installieren.
Der Betrieb von Tomcat aus der jew. Linux Distribution hat jedoch den Vorteil, dass man
- benötigte Drittsoftware direkt mitinstallieren kann
- die Apache Integration erfahrungsgemäß einfacher ist
- Regelmäßige Bugfixes automatisch beziehen kann
- Tomcat wird i.d.R.automatisch für systemd als Dienst konfiguriert, mit einer speziellen Kennung für den Systemuser.
Wir empfehlen daher die Distribution.
Tomcat aus der Distribution nehmen
Tomcat aus der Ubuntu-Distribution
Im folgenden wird das Vorgehen für Ubuntu Linux beschrieben. Hier wird das Kernmodul 4.9 mit Tomcat9 unter Ubuntu 20.04 eingerichtet. Zunächst wechseln sie in die root-Shell mit
sudo -i
- Java 1.8 und Tomcat9 installieren:
apt-get install openjdk-8-jdk tomcat9
und direkt stoppen mit
systemctl stop tomcat9.service
Zur Sicherheit alte kompilierte Klassen löschen: rm -r /var/lib/tomcat9/work/*
- Dann die superx-webapp kopieren nach /var/lib/tomcat9/webapps, und den user tomcat zum Eigentümer machen:
chown -R tomcat:tomcat /var/lib/tomcat9/webapps/
![]() |
Flexible Verzeichniswahl |
Sie können das Verzeichnis der Webanwendung/en auch verschieben, indem sie in der Datei /etc/tomcat9/server.xml beim Element host das Attribut appBase" anpassen. Die Auslieferung ist
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="false">
stattdessen könnten Sie z.B. schreiben
<Host name="localhost" appBase="/opt/superx/webapps" unpackWARs="true" autoDeploy="false">
In der Datei /etc/tomcat9/server.xml beim jew. Connector port="...." das Attribut
URIEncoding="UTF-8"
ergänzen, also z.B.
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />
Dann in der /etc/default/tomcat die Zeilen
JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 JAVA_OPTS="-Djava.awt.headless=true -DSuperX-DB-PROPERTIES-SET=true -Xmx3700M"
eintragen (der letzte RAM Parameter ist nur ein Beispiel).
Dann in der Datei
/usr/lib/systemd/system/tomcat9.service
die Zeile
EnvironmentFile=/etc/default/tomcat9
ergänzen Dann führen Sie aus:
systemctl daemon-reload
und starten Tomcat mit:
systemctl start tomcat9.service
Danach können Sie den Zugriff im Browser testen, beim Port 8080 z.B.
Tomcat unter SuSE Linux
Sie installieren Tomcat aus der Distribution mit
zypper -n in -l tomcat
Bei Suse Linux wird der interne Tomcat unter /usr/share/java/tomcat installiert, die Konfiguration liegt in /etc/tomcat Wenn Sie diesen Tomcat nutzen möchten, sollten Sie die komplette SuperX Installation unter dem Tomcat Benutzer welcher von Suse angelegt wurde (tomcat) durchführen. Zuerst muss der Tomcatuser Shell-Rechte bekommen. Dazu editieren Sie als root die /etc/passwd und geben in der Zeile vom Tomcatuser am Ende /bin/bash ein. Danach können Sie ggf. das Verzeichnis /usr/share/tomcat/superx anlegen und dort die Dateien des alten $SUPERX_DIR hinkopieren. Dementsprechend auch in der SQL_ENV das $SUPERX_DIR auf /usr/share/tomcat/superx setzen. Die Dateirechte müssen dem Tomcatuser zugeteilt werden. Es ist auch sinnvoll für den Tomcatuser die Dateien wie .bashrc und .profile und Ordner .ssh anzulegen und rechte auf tomcat:tomcat zu geben. Damit können Sie dann aliases wie ll vergeben und auch bei login automatisch die SQL_ENV laden. Jetzt melden Sie sich mit der TomcatKennung an. Nun müssen wir die SuperX-Webanwendung in den Suse-Tomcat integrieren, d.h. der im Kernmodul mitgelieferte Tomcat wird gar nicht benutzt, aber den webapps-Ordner darin schon. Wenn SuperX nun unter /usr/share/tomcat/superx liegt, und das Kernmodul hier entpackt wird, liegt die Webanwendung in /usr/share/tomcat/superx/webserver/tomcat/webapps. Diesen Pfad tragen Sie in der /etc/tomcat/server.xml ein:
<Host name="localhost" appBase="/usr/share/tomcat/superx/webserver/tomcat/webapps" unpackWARs="true" autoDeploy="true">
Weiter oben setzen Sie bei Betrieb in UTF-8 noch das URIEncoding="UTF-8":
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8" />
und ggf. auch
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />
Damit ist der UbuntuTomcat in SuperX integriert. Beispiel-Befehle für Tomcat: Starten:
rctomcat start
Stoppen:
rctomcat stop
Neustarten:
rctomcat restart
Und die Logdateien liegen hier: /var/log/tomcat/* Damit der Server beim Booten hochfährt, geben Sie ein:
chkconfig --set tomcat on
Variablen wie CATALINA_OPTS setzen Sie hier: /etc/tomcat/tomcat.conf z.B.
CATALINA_OPTS="-DSuperX-DB-PROPERTIES-SET=true -Xmx4700M -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Dorg.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false "
Tomcat manuell installieren
Sie können auch spezielle Versionen von Tomcat herunterladen und installieren. Oder sie laden das SuperX-Kernmodul Paket herunter, da ist ein aktueller Tomcat bereits enthalten. Speicherort wäre z.B. in /home/superx/webserver/tomcat.
Tomcat als Dienst
Damit Tomcat bei Systemstart automatisch hochfährt, und beim Herunterfahren kontrolliert gestoppt wird, muss man einen Dienst anlegen. 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
Den Dienst deaktivieren Sie mit
systemctl disable tomcat_superx
![]() |
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. |