Wie installiere ich Apache Tomcat mit Nginx Reverse Proxy auf AlmaLinux 9

Apache Tomcat oder „Tomcat“ ist ein freier und quelloffener Java-Servlet-Container für Java-Code und -Anwendungen. Ursprünglich wurde er von Sun Microsystem entwickelt, das die Codebasis später der Apache Software Foundation zur Verfügung stellte und sie unter der Apache License v2 verteilte. Apache Tomcat bietet eine „reine Java“-HTTP-Serverumgebung, in der Java-Code ausgeführt werden kann. Außerdem ist er eine Implementierung von JavaServer Pages, Java Expression Language und WebSocket-Technologien.

Apache Tomcat ist eine der beliebtesten Java-Servlet-Implementierungen. Er unterstützt SSL zur Sicherung sensibler Daten, z. B. zur Authentifizierung. Außerdem ist er leichtgewichtig in Bezug auf Server-Ressourcen und plattformübergreifend, d.h. er kann auf Unix-ähnlichen Betriebssystemen, Windows und macOS installiert werden.

In der folgenden Anleitung zeigen wir dir die Installation von Apache Tomcat mit Nginx als Reverse Proxy auf dem AlmaLinux 9 Server. Du installierst Apache Tomcat per Binärpaket, installierst dann Nginx und richtest die Serverblockkonfiguration für den Reverse Proxy ein.

Voraussetzungen

Bevor du beginnst, musst du sicherstellen, dass du Folgendes hast

  • Einen AlmaLinux 9 Server.
  • Einen Nicht-Root-Benutzer mit Administrator-Rechten.

Installation von Java OpenJDK

Bevor du Tomcat installierst, musst du das Java JDK auf deinem AlmaLinux Server installieren. Für Apache Tomcat kannst du Java JDK 11 oder höher verwenden. In diesem Beispiel werden wir Java OpenJDK 17 verwenden, das standardmäßig im AlmaLinux 9 Repository verfügbar ist.

Um OpenJDK 17 zu installieren, führe den folgenden dnf-Befehl aus. Wenn du nach einer Bestätigung gefragt wirst, gib y ein und drücke ENTER.

sudo dnf install java-17-openjdk java-17-openjdk-devel

java installieren

Sobald Java OpenJDK installiert ist, führe den folgenden java-Befehl aus, um deine OpenJDK-Version zu überprüfen.

java --version

Du kannst unten sehen, dass Java OpenJDK 17 installiert ist.

check java

Herunterladen von Apache Tomcat 10

Nach der Installation von Java OpenJDK musst du Apache Tomcat manuell über ein Binärpaket herunterladen und installieren. Bevor du also mit der Installation beginnst, besuche die Apache Tomcat Download-Seite und hole dir den Download-Link.

Um loszulegen, führe den folgenden Befehl aus, um einen neuen Systembenutzer tomcat mit dem Standardverzeichnis /opt/tomcat anzulegen.

sudo groupadd tomcat
sudo adduser -r -s /usr/sbin/nologin -g tomcat -b /opt/tomcat tomcat

Lade nun das Apache Tomcat Binärpaket mit dem unten stehenden wget-Befehl herunter. Zum Zeitpunkt der Erstellung dieses Artikels ist der Apache Tomcat auf dem neuesten Stand: Version 10.1.18. Achte also darauf, die Variable VERSION mit deiner aktuellen Tomcat-Version zu ändern.

export VERSION=10.1.18
wget https://dlcdn.apache.org/tomcat/tomcat-10/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz

Sobald der Downloadvorgang abgeschlossen ist, erstelle ein neues Home-Verzeichnis für den Tomcat-Benutzer /opt/tomcat und entpacke dein Apache Tomcat-Binärpaket in dieses Verzeichnis.

mkdir -p /opt/tomcat
sudo tar -xf apache-tomcat-${VERSION}.tar.gz -C /opt/tomcat

Führe abschließend den folgenden Befehl aus, um einen Symlink des Tomcat-Verzeichnisses nach /opt/tomcat/latest zu erstellen. Anschließend änderst du den Eigentümer des Verzeichnisses /opt/tomcat auf den Benutzer„tomcat„.

sudo ln -s /opt/tomcat/apache-tomcat-${VERSION} /opt/tomcat/latest
sudo chown -R tomcat:tomcat /opt/tomcat

download install tomcat

Apache Tomcat als Dienst einrichten

Nachdem der Apache Tomcat installiert ist, musst du im nächsten Schritt einen neuen systemd-Dienst für den Apache Tomcat einrichten. Auf diese Weise kannst du Apache Tomcat ganz einfach über das Dienstprogramm systemctl verwalten. Außerdem stellst du so sicher, dass du das Skript für Tomcat an einer einzigen Stelle startest.

Erstelle eine neue systemd-Dienstdatei /etc/systemd/system/tomcat10.service mit dem folgenden nano-Editor-Befehl.

sudo nano /etc/systemd/system/tomcat10.service

Füge die folgende Konfiguration als systemd-Skript für den Apache Tomcat ein. Achte darauf, dass du im Parameter CATALINA_OPTS den maximalen Heap-Speicher für Apache Tomcat anpasst.

[Unit]
Description=Tomcat 10 servlet container
After=network.target
[Service]
Type=forking

User=tomcat
Group=tomcat

Environment="JAVA_HOME=/usr/lib/jvm/java"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom -Djava.awt.headless=true"

Environment="CATALINA_BASE=/opt/tomcat/latest"
Environment="CATALINA_HOME=/opt/tomcat/latest"
Environment="CATALINA_PID=/opt/tomcat/latest/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx2048M -server -XX:+UseParallelGC"

ExecStart=/opt/tomcat/latest/bin/startup.sh
ExecStop=/opt/tomcat/latest/bin/shutdown.sh

[Install]
WantedBy=multi-user.target

Speichere die Datei und beende den Editor, nachdem du fertig bist.

Führe nun den folgenden Befehl aus, um den systemd manager neu zu laden und deinen neuen tomcat10-Dienst anzuwenden.

sudo systemctl daemon-reload

Jetzt kannst du den Apache Tomcat-Dienst tomat10 mit dem folgenden Befehl starten und aktivieren.

sudo systemctl enable tomcat10
sudo systemctl start tomcat10

start enable tomcat10

Sobald er gestartet ist, führe den folgenden Befehl aus, um den tomcat10-Dienst zu überprüfen. Wenn alles gut läuft, solltest du sehen, dass der tomcat10-Dienst läuft.

sudo systemctl status tomcat10

Tomcat10 überprüfen

Wenn der Apache Tomcat läuft, führe den folgenden Firewall-Befehl aus, um den Port 8080 zu öffnen, der von Apache Tomcat verwendet wird.

sudo firewall-cmd --add-port=8080/tcp

Starte deinen Webbrowser und rufe die IP-Adresse des Servers auf, gefolgt von Port 8080(http://192.168.5.50:8080). Wenn deine Apache Tomcat-Installation erfolgreich war, solltest du die Standard-Indexseite wie die folgende erhalten:

Katerindex

Einrichten der Authentifizierung in Apache Tomcat 10

Jetzt hast du Apache Tomcat installiert und er läuft. In diesem Abschnitt erfährst du, wie du die Passwortauthentifizierung in Apache Tomcat einrichtest und aktivierst.

Öffne zunächst mit dem Editor nano die Datei /opt/tomcat/latest/conf/tomcat-users.xml.

sudo nano /opt/tomcat/latest/conf/tomcat-users.xml

Füge die folgende Konfiguration in den Abschnitt„<tomcat-users> … </tomcat-users>“ ein. Achte darauf, dass du den Standardbenutzernamen admin und das Passwort tomcatadmin durch neue Anmeldedaten ersetzt.

<tomcat-users>
<!--
user: admin pass: tomcatadmin
-->
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<user username="admin" password="tomcatadmin" roles="manager-gui, manager-script, manager-jmx, manager-status, admin-gui, admin-script"/>

</tomcat-users>

Speichere und beende die Datei, wenn du fertig bist.

Öffne nun die Konfiguration für den Apache Tomcat Manager und den Host Manager mit dem unten stehenden nano-Editor-Befehl.

sudo nano /opt/tomcat/latest/webapps/host-manager/META-INF/context.xml
sudo nano /opt/tomcat/latest/webapps/manager/META-INF/context.xml

Füge einen Kommentar ‚<!– … –>‘ bei ‚className=“org.apache.catalina.valves.RemoteAddrValve“‚ ein, um den Zugriff auf den Apache Tomcat Manager und den Host Manager von überall zu ermöglichen. Siehe die Konfiguration unten.

<!--
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->

(Optional) Du kannst auch IP-Adressen angeben, die dir den Zugriff auf den Tomcat Manager und den Host Manager ermöglichen, indem du deine IP-Adresse wie folgt hinzufügst:

<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|CLIENT-IP-ADDRESS" />

Speichere die Datei und beende den Editor, wenn du fertig bist.

Wenn alles fertig ist, kannst du den tomcat10-Dienst mit dem folgenden Befehl neu starten, damit er wirksam wird. Sobald er ausgeführt wurde, laufen der Apache Tomcat Manager und der Host Manager mit Passwortauthentifizierung.

sudo systemctl restart tomcat10

Gehe zurück zu deinem Browser und besuche die Apache Tomcat Manager URL unter http://192.168.5.50:8080/manager/. Wenn du zur Passwort-Authentifizierung aufgefordert wirst, gibst du deinen Apache Tomcat-Admin-Benutzer und dein Passwort ein und klickst dann auf Anmelden.

Anmeldung Tomcat Manager

Wenn du den richtigen Admin-Benutzer und das richtige Passwort hast, solltest du das Apache Tomcat Manager Dashboard wie folgt sehen:

Anmeldung Tomcat Manager Dashboard

Rufe schließlich die Apache Tomcat Host Manager URL über http://192.168.5.50:8080/host-manager/ auf und melde dich mit dem Tomcat-Admin-Benutzer und -Passwort an, wenn du zur Authentifizierung aufgefordert wirst. Das Host Manager-Dashboard sieht dann wie folgt aus:

Tomcat Host Manager

Nginx als Reverse Proxy einrichten

Damit hast du die Installation des Apache Tomcat abgeschlossen. Im nächsten Schritt installierst und konfigurierst du Nginx als Reverse Proxy für Apache Tomcat.

Um Nginx auf deinem AlmaLinux-Server zu installieren, führst du den folgenden dnf-Befehl aus. Bestätige mit Y und fahre mit der Installation fort.

sudo dnf install nginx

nginx installieren

Nach der Installation von Nginx erstellst du mit dem Editor nano eine neue Serverblock-Konfiguration /etc/nginx/conf.d/tomcat.conf.

sudo nano /etc/nginx/conf.d/tomcat.conf

Füge den folgenden Serverblock hinzu, um Nginx als Reverse Proxy für Apache Tomcat einzurichten, der auf Port 8080 läuft.

server {
listen 80;
server_name tomcat.hwdomain.io;
access_log /var/log/nginx/tomcat-access.log;
error_log /var/log/nginx/tomcat-error.log;

location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080/;
}
}

Speichere die Datei und beende den Editor.

Führe nun den folgenden Befehl aus, um deine Nginx-Konfiguration zu überprüfen und sicherzustellen, dass du die richtige Syntax verwendest.

sudo nginx -t

nginx verifizieren

Als nächstes führst du den Befehl systemctl aus, um den Nginx-Webserver zu starten und zu aktivieren.

sudo systemctl start nginx
sudo systemctl enable nginx

Sobald Nginx gestartet ist, führe den folgenden Befehl aus, um den Nginx-Dienst zu überprüfen. Wenn er läuft, siehst du eine aktive Ausgabe (running).

sudo systemctl status nginx

Du kannst unten sehen, dass Nginx auf deinem AlmaLinux Server aktiviert ist und läuft.

nginx verifizieren

Firewalld konfigurieren

Wenn Apache Tomcat unter Nginx läuft, musst du den HTTP-Port 0 in deiner Firewalld-Konfiguration öffnen.

Führe den folgenden Befehl aus, um den HTTP-Dienst zu öffnen, und lade firewalld in deinem AlmaLinux-Dienst neu.

sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --reload

Überprüfe nun die Liste der Firewalld-Regeln mit dem folgenden Befehl.

sudo firewall-cmd --list-all

Achte darauf, dass der HTTP-Dienst für den Nginx-Webserver aktiviert ist.

firewalld einrichten

Gehe nun zurück zu deinem Webbrowser und besuche den lokalen Domainnamen deines Nginx-Servers, z.B. http://tomcat.hwdomain.io/. Wenn deine Nginx-Reverse-Proxy-Konfiguration erfolgreich ist, siehst du die Standard-Indexseite von Apache Tomcat.

Tomcat Reverse Proxy

Navigiere nun über http://tomcat.hwdomain.io/manager zur Tomcat Manager URL. Wenn du zur Authentifizierung aufgefordert wirst, gibst du deinen Apache Tomcat-Benutzernamen und dein Passwort ein und klickst dann auf Anmelden.

Wenn du den richtigen Benutzernamen und das richtige Passwort hast, siehst du das Dashboard des Apache Tomcat Managers wie folgt:

Tomcat Manager Reverse Proxy

Navigiere schließlich zu der Apache Tomcat Host Manager URL http://tomcat.hwdomain.io/host-manager/ und du siehst das Apache Tomcat Host Manager Dashboard wie das folgende:

tomcat host manager nginx reverse proxy

Fazit

Herzlichen Glückwunsch! Du hast Apache Tomcat erfolgreich auf einem AlmaLinux 9 Server installiert. Du hast Apache Tomcat 10 manuell über ein Binärpaket auf dem AlmaLinux Server installiert. Außerdem hast du Nginx als Reverse Proxy für deine Apache Tomcat Installation konfiguriert. Außerdem hast du Firewalld konfiguriert, um den HTTP-Port zu öffnen.

Das könnte dich auch interessieren …