Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03149.jsonl.gz/1898

Einleitung
Tomcat ist ein Anwendungsserver zum Ausführen von Java-Anwendungen.
Mit unserem Tomcat Service erhalten Sie eine Tomcat 8 / 9 Installation, die direkt vom Benutzer
www-data verwaltet werden kann. Das bedeutet mehr Flexibilität bei der Konfiguration der Instanzen.
Schritt-für-Schritt Anleitung
Sie können diesen Abschnitt überspringen, wenn Sie von einer Tomcat 6 Lösung migriert haben.
In diesem Abschnitt führen wir Sie durch den Prozess der Einrichtung Ihrer eigenen Tomcat-Instanz mit einem Reverse-Proxy.
Anforderungen
- Ubuntu 16.04 (Xenial) oder 18.04 Bionic (tomcat9)
- Tomcat 8 oder Tomcat 9 + mod_proxy durch uns auf Ihrem Server installiert (<email-pii>)
nine-manage-vhostsauf dem Server installiert
Erstellen einer Tomcat-Instanz
Wir verwenden das Tool
tomcat8-instance-create oder
tomcat9-instance-create (offizielle tomcat8 Dokumentation) oder (offizielle tomcat9 Dokumentation), um Tomcat-Instanzen zu erstellen. Einige Parameter sollten übergeben werden:
- HTTP-Port (standardmässig 8080)
- Control Port (standardmässig 8005)
Mit dem folgenden Befehl wird eine Tomcat-Instanz im Ordner
~/test-server.ch auf dem Port
8081 mit dem Control-Port
8006 erstellt:
tomcat8-instance-create -p 8081 -c 8006 ~/test-server.ch
tomcat9-instance-create -p 8081 -c 8006 ~/test-server.ch
Wenn Sie mehrere Tomcat-Instanzen erstellen, müssen Sie sicherstellen, dass der HTTP-Port und der Control-Port eindeutig sind.
Tomcat-Instanz mit einem Reverse-Proxy für die Aussenwelt zugänglich machen
Tomcat hört standardmässig auf localhost. Es ist üblich, einen Reverse-Proxy vor Tomcat zu platzieren. Wir verwenden
nine-manage-vhosts, um diesen Reverse-Proxy zu erstellen.
Mit dem folgenden Befehl wird ein Virtual Host namens ‘test-server.ch’ erstellt, der den gesamten Traffic an die Tomcat-Instanz auf Port 8081 weiterleitet:
sudo nine-manage-vhosts virtual-host create test-server.ch --template=tomcat --template-variable PROXYPORT=8081
Das
tomcat-Template geht davon aus, dass sich alle Tomcat-Instanzen unter
/home/www-data/<domain-name> befinden.
Starten der Tomcat-Instanz beim Systemstart
Für das Starten/Stoppen der Tomcat-Instanzen stellen wir ein systemd-Template bereit.
Mit dem folgenden Befehl wird die Instanz als Dienst konfiguriert:
systemctl --user enable <email-pii>
Die folgenden Befehle starten/stoppen die Tomcat-Instanz mit dem Namen
test-server.ch:
systemctl --user start <email-pii> systemctl --user stop <email-pii>
Um den aktuellen Status der Tomcat-Instanz zu überprüfen, können Sie den folgenden Befehl verwenden:
systemctl --user status <email-pii>
Der erste Teil des Dienstnamens ist unverändert: “user-tomcat@”. Nach dem
@ wird jeweils der Name der Tomcat-Instanz übergeben.
Weitere Informationen zum Verwalten von Diensten mit systemd finden Sie in diesem Artikel.
Zusammenfassung
Mit den folgenden Kommandos wird eine Tomcat-Installation unter http://test-server.ch eingerichtet:
# Tomcat-Instanz erstellen, erreichbar unter http://localhost:8081 tomcat8-instance-create -p 8081 -c 8006 ~/test-server.ch # VHost mit Reverse-Proxy einrichten, damit die Instanz von aussen zugänglich ist sudo nine-manage-vhosts virtual-host create test-server.ch --template=tomcat --template-variable PROXYPORT=8081 # Applikation bereitstellen (siehe unten). [...] # Service für die Instanz erstellen systemctl --user enable <email-pii> # Tomcat-Instanz starten systemctl --user start <email-pii>
Bereitstellen Ihrer Anwendung
In diesem Abschnitt werden Sie Ihre Java-Anwendung für die Tomcat-Instanz bereitstellen. Im Folgenden finden Sie ein paar Dinge, die Sie über den Deploymentprozess wissen sollten:
Anwendungsformat
Eine Anwendung hat in der Regel die Form einer
.war oder
.jar Datei.
Wo kommt die Anwendung hin?
Die Anwendung muss nach
/home/www-data/ROOT kopiert werden.
Es gibt auch die Möglichkeit, mehrere Applikationen unter einem Virtual Host zu betreiben. Dazu muss jede Applikation in einem separaten Ordner unter
/home/www-data/<Instanzname>/webapps/ abgelegt werden. Die Applikationen sind dann unter “http://servername.com/name_des_ordners_in_webapps/” zugänglich.
Deployment-Beispiel
Nehmen wir an, wir haben die gleiche Tomcat-Instanz wie zuvor:
test-server.ch.
Wir wollen unsere Applikation
test-application deployen, die wir derzeit als WAR-Datei haben:
test-application.war.
cp test-application.war /home/www-data/test-server.ch/webapps/ # Tomcat extrahiert diese dann in den Ordner "test-application": # /home/www-data/test-server.ch/webapps/test-application
Die Anwendung ist nun unter http://test-server.ch/test-application zugänglich. Die Log-Dateien befindet sich unter
/home/www-data/test-server.ch/logs/catalina.out.
Logging
Wenn Ihre Anwendungen nach
stdout loggen, wird nach
/home/www-data/<Instanzname>/logs/catalina.out geschrieben.
Bitte denken Sie daran, dass Ihr
catalina.out mit dieser Methode sehr schnell wächst und dass wir empfehlen, ein Protokollierungsprogramm anstelle der Standardausgabe zu verwenden.
Falls Sie trotzdem STDOUT in Ihrer Anwendung für das Logging verwenden möchten, ist folgendes zu beachten:
- Deaktivieren Sie die Protokollrotation in Tomcat, da es die Protokolle nicht ordnungsgemäß rotiert. Dies kann durch Bearbeiten der Datei
conf/logging.propertieserfolgen, indem folgende Zeilen hinzugefügt werden:
1catalina.org.apache.juli.FileHandler.rotable = false 2localhost.org.apache.juli.FileHandler.rotable = false
- Konfigurieren Sie die Protokollrotation mit logrotate.
Zusätzliche Informationen
Weitere Informationen zum Deployment finden Sie in der offiziellen Dokumentation.
Erweiterte Konfiguration
Da die Tomcat-Instanzen von
www-data verwaltet werden, können Sie die gesamte Konfiguration ohne Verwendung von sudo oder Hilfe von nine.ch vornehmen (siehe offizielle tomcat8 Dokumentation oder offizielle tomcat9 Dokumentation als Referenz).
Wir möchten an dieser Stelle einige Tipps für die Konfiguration mit Umgebungsvariablen zeigen.
Umgebungsvariablen
Einige Teile des Verhaltens von Tomcat können durch das Setzen von Umgebungsvariablen in der Datei
~/<Instanzname>/bin/setenv.sh gesteuert werden.
Im Folgenden finden Sie einige Beispiele dafür, was mit ihnen geändert werden kann:
Andere Java-Version auswählen
Fügen Sie der Datei
setenv.sh folgendes hinzu und starten Sie die Instanz neu, um die Java-Version zu wechseln:
JAVA_HOME=/opt/java/production
Ändern der Protokolldatei
Fügen Sie der Datei
setenv.sh folgendes hinzu und starten Sie die Instanz neu, um sich in einer anderen Datei anzumelden:
CATALINA_OUT=logs/custom.out
Ändern der maximalen Speichermenge
Das Skript
tomcat8-instance-create setzt in
setenv.sh einen Standardwert von 128MB für eine Instanz. Ersetzen Sie einfach die 128MB mit dem Wert Ihrer Wahl (muss ein Vielfaches von 1024 größer als 2 MB).
So könnte beispielsweise die Instanz maximal 512 MB Arbeitsspeicher verwenden:
if [ -z "$JAVA_OPTS" ]; then JAVA_OPTS="-Djava.awt.headless=true -Xmx512M" fi
systemd-Einstellungen
Einige Parameter können nicht von Tomcat eingestellt werden, sondern müssen von systemd gesetzt werden. Diese Einstellungen können durch so genannte systemd drop-ins geändert werden.
Sie können entweder für alle Instanzen eines Benutzers oder für eine spezifische Instanz gesetzt werden.
Um die Konfiguration für alle Instanzen zu ändern, platzieren Sie die Datei in
~/.config/systemd/user/user-tomcat@.service.d
Um nur eine einzelne Instanz zu ändern, platzieren Sie die Datei in
~/.config/systemd/user/user-tomcat@<instance-name>.service.d
Um beispielsweise den Höchstwert Max Open Files festzulegen, legen Sie diese Datei in einen der oben genannten Ordner:
# nofiles.conf [Service] LimitNOFILE=2048
Benutzerdefinierte Startdienste
Wenn Sie Ihre eigenen Startdienste anstelle der von nine.ch bereitgestellten verwenden möchten, finden Sie in diesem Artikel mehr dazu.