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
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.
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
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
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
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:
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.
Wenn du den richtigen Admin-Benutzer und das richtige Passwort hast, solltest du das Apache Tomcat Manager Dashboard wie folgt sehen:
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:
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
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
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.
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.
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.
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:
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:
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.