Wie installiere ich Apache Tomcat mit Nginx Reverse Proxy unter Ubuntu 22.04
Apache Tomcat ist ein Open-Source-Java-Webserver und Servlet-Container, der zum Hosten von in Java geschriebenen Webanwendungen verwendet wird. Er ist die erste Wahl für Webentwickler, wenn es darum geht, dynamische Websites und Anwendungen zu erstellen und zu pflegen, die auf der Java-Softwareplattform basieren. Er ist ein Open-Source-Projekt, das von der Apache Software Foundation entwickelt wird. Tomcat ermöglicht es einem Webserver, dynamische Java-basierte Webinhalte zu verarbeiten.
Diese Anleitung zeigt dir, wie du Apache Tomcat unter Ubuntu 22.04 installierst.
Voraussetzungen
- Ein Server, auf dem Ubuntu 22.04 läuft.
- Ein gültiger Domainname, der auf die IP deines Servers zeigt.
- Ein Root-Passwort ist auf dem Server konfiguriert.
Java JDK installieren
Apache Tomcat ist eine Java-basierte Anwendung, daher muss Java auf deinem Server installiert sein. Wenn Java nicht installiert ist, kannst du es mit dem folgenden Befehl installieren:
apt install default-jdk -y
Sobald Java installiert ist, kannst du die Java-Version mit dem folgenden Befehl überprüfen:
java -version
Du erhältst die folgende Ausgabe:
openjdk version "11.0.15" 2022-04-19 OpenJDK Runtime Environment (build 11.0.15+10-Ubuntu-0ubuntu0.22.04.1) OpenJDK 64-Bit Server VM (build 11.0.15+10-Ubuntu-0ubuntu0.22.04.1, mixed mode, sharing)
Apache Tomcat auf Ubuntu 22.04 installieren
Zunächst ist es eine gute Idee, Tomcat als separaten Benutzer zu starten. Du kannst einen Tomcat-Benutzer mit dem folgenden Befehl erstellen:
useradd -m -d /opt/tomcat -U -s /bin/false tomcat
Als Nächstes lädst du die neueste Version von Apache Tomcat mit dem folgenden Befehl herunter:
wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.0.20/bin/apache-tomcat-10.0.20.tar.gz
Sobald der Apache Tomcat heruntergeladen ist, entpackst du die heruntergeladene Datei in das Verzeichnis /opt:
tar xzvf apache-tomcat-10*tar.gz -C /opt/tomcat --strip-components=1
Als Nächstes musst du die richtigen Rechte für das Tomcat-Verzeichnis festlegen:
chown -R tomcat:tomcat /opt/tomcat/ chmod -R u+x /opt/tomcat/bin
Wenn du damit fertig bist, kannst du mit dem nächsten Schritt fortfahren.
Tomcat-Verwaltungsbenutzer anlegen
In der Standardeinstellung kann auf Tomcat ohne Authentifizierung zugegriffen werden. Es wird daher empfohlen, die Authentifizierung zu aktivieren und einen administrativen Benutzer für Tomcat anzulegen. Du kannst ihn hinzufügen, indem du die Tomcat-Benutzerkonfigurationsdatei bearbeitest:
nano /opt/tomcat/conf/tomcat-users.xml
Füge die folgenden Zeilen oberhalb der Zeile </tomcat-users> ein:
<role rolename="admin-gui" /> <user username="admin" password="yourpassword" roles="manager-gui,admin-gui" />
Speichere und schließe die Datei, wenn du fertig bist.
Tomcat-Fernzugriff aktivieren
Standardmäßig ist Tomcat so konfiguriert, dass er nur vom lokalen Host aus zugreifen kann. Es wird daher empfohlen, den Tomcat-Fernzugriff zu aktivieren, um Tomcat von einem entfernten Host aus zu verwalten.
Um die Manager-App von einem Remote-Host aus zu aktivieren, bearbeite die folgende Datei:
nano /opt/tomcat/webapps/manager/META-INF/context.xml
Entferne die folgende Zeile:
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
Um die Hostmanager-App von einem entfernten Host aus zu aktivieren, bearbeite die folgende Datei:
nano /opt/tomcat/webapps/host-manager/META-INF/context.xml
Entferne die folgende Zeile:
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
Speichere und schließe die Datei, wenn du fertig bist.
Erstellen einer Servicedatei für Apache Tomcat
Als Nächstes musst du eine Servicedatei erstellen, um den Tomcat-Dienst über systemd zu verwalten. Du kannst sie mit dem folgenden Befehl erstellen:
nano /etc/systemd/system/tomcat.service
Füge die folgenden Zeilen ein:
[Unit] Description=Tomcat After=network.target [Service] Type=forking User=tomcat Group=tomcat Environment="JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64" Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom" Environment="CATALINA_BASE=/opt/tomcat" Environment="CATALINA_HOME=/opt/tomcat" Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid" Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC" ExecStart=/opt/tomcat/bin/startup.sh ExecStop=/opt/tomcat/bin/shutdown.sh [Install] WantedBy=multi-user.target
Speichere und schließe die Datei und lade den systemd-Daemon neu, damit die Änderungen übernommen werden:
systemctl daemon-reload
Als Nächstes startest du den Tomcat-Dienst und aktivierst ihn mit folgendem Befehl, damit er beim Neustart des Systems gestartet wird:
systemctl start tomcat systemctl enable tomcat
Du kannst den Status des Apache Tomcat mit folgendem Befehl überprüfen:
systemctl status tomcat
Du erhältst die folgende Ausgabe:
? tomcat.service - Tomcat Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: enabled) Active: active (running) since Fri 2022-04-29 08:11:54 UTC; 6s ago Process: 18959 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS) Main PID: 18966 (java) Tasks: 29 (limit: 4630) Memory: 116.4M CPU: 5.312s CGroup: /system.slice/tomcat.service ??18966 /usr/lib/jvm/java-1.11.0-openjdk-amd64/bin/java -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties -Dja> Apr 29 08:11:54 ubuntu systemd[1]: Starting Tomcat... Apr 29 08:11:54 ubuntu startup.sh[18959]: Tomcat started. Apr 29 08:11:54 ubuntu systemd[1]: Started Tomcat.
Zu diesem Zeitpunkt ist Tomcat gestartet und lauscht auf Port 8080. Du kannst ihn mit dem folgenden Befehl überprüfen:
ss -antpl | grep java
Du erhältst die folgende Ausgabe:
LISTEN 0 1 [::ffff:127.0.0.1]:8005 *:* users:(("java",pid=18966,fd=53)) LISTEN 0 100 *:8080 *:* users:(("java",pid=18966,fd=43))
Sobald du fertig bist, kannst du mit dem nächsten Schritt fortfahren.
Nginx als Reverse Proxy für Tomcat konfigurieren
Als Nächstes musst du Nginx als Reverse Proxy für den Apache Tomcat einrichten. Installiere zunächst den Nginx-Webserver mit dem folgenden Befehl:
apt-get install nginx -y
Sobald der Nginx-Webserver installiert ist, erstellst du mit dem folgenden Befehl eine Konfigurationsdatei für den virtuellen Nginx-Host:
nano /etc/nginx/conf.d/tomcat.conf
Füge die folgenden Zeilen ein:
server { listen 80; server_name tomcat.example.com; 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 und schließe die Datei und überprüfe Nginx mit dem folgenden Befehl auf Syntaxfehler:
nginx -t
Du erhältst die folgende Ausgabe:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Starte anschließend den Nginx-Dienst neu, um die Änderungen zu übernehmen:
systemctl restart nginx
Du kannst den Nginx-Status auch mit dem folgenden Befehl überprüfen:
systemctl status nginx
Du solltest die folgende Ausgabe sehen:
? nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2022-04-29 08:15:28 UTC; 8s ago Docs: man:nginx(8) Process: 19070 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 19071 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 19072 (nginx) Tasks: 3 (limit: 4630) Memory: 3.3M CPU: 63ms CGroup: /system.slice/nginx.service ??19072 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;" ??19073 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ??19074 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" Apr 29 08:15:28 ubuntu systemd[1]: Starting A high performance web server and a reverse proxy server... Apr 29 08:15:28 ubuntu systemd[1]: Started A high performance web server and a reverse proxy server.
Zugriff auf Apache Tomcat
Öffne nun deinen Webbrowser und rufe die Apache Tomcat-Weboberfläche über die URL http://tomcat.example.com auf. Auf dem folgenden Bildschirm solltest du das Tomcat Dashboard sehen:
Klicke auf die Manager App. Du wirst aufgefordert, dich wie unten dargestellt zu authentifizieren:
Gib deinen Admin-Benutzernamen und dein Passwort ein und klicke auf die Schaltfläche “ Anmelden „. Auf dem folgenden Bildschirm siehst du das Dashboard der Manager App:
Um auf die Host Manager App zuzugreifen, klicke auf den Host Manager. Du solltest den folgenden Bildschirm sehen:
Klicke auf den Serverstatus. Auf dem folgenden Bildschirm sollte der Apache Tomcat-Status angezeigt werden:
Fazit
Herzlichen Glückwunsch! Du hast den Apache Tomcat mit Nginx als Reverse Proxy auf Ubuntu 22.04 erfolgreich installiert. Jetzt kannst du deine erste Java-Anwendung mit dem Apache Tomcat erstellen und hosten. Wenn du noch Fragen hast, kannst du dich gerne an mich wenden.