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:

Apache Tomcat

Klicke auf die Manager App. Du wirst aufgefordert, dich wie unten dargestellt zu authentifizieren:

Tomcat-Anmeldung

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:

Apache Tomcat Dashboard

Um auf die Host Manager App zuzugreifen, klicke auf den Host Manager. Du solltest den folgenden Bildschirm sehen:

Tomcat Virtual Host Manager

Klicke auf den Serverstatus. Auf dem folgenden Bildschirm sollte der Apache Tomcat-Status angezeigt werden:

Tomcat Server Status

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.

Das könnte dich auch interessieren …