Raspberry Pi  -  Tomcat installieren

Auf dieser Seite zeige ich, wie Du den Tomcat, genauer gesagt den Tomcat 8.5, auf Deinem Raspberry installieren kannst. Ich orientierte mich selbst an diesem Beispiel: linuxize.com.

Wir richten einen separaten User "Tomcat" ein und lassen den Tomcat im Anschluss als Dienst auf dem Raspberry unter diesem Benutzer laufen.

Der Tomcat wird in das /opt/tomcat/ Verzeichnis installiert. Dort legen wir später einen symbolischen Link an, damit wir den Tomcat einfach aktualisieren können, ohne die Grundkonfiguration jedesmal dafür ändern zu müssen. Zudem können wir den Link einfach auf eine andere Tomcat-Version zeigen lassen, wenn Bedarf besteht eine andere Tomcat-Version zu nutzen/testen.

Benutzer "tomcat" anlegen

Wir legen mit folgendem Befehl einen neuen Systembenutzer und eine Gruppe "tomcat" an, dessen Home-Verzeichnis "/opt/tomcat" ist:

sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat

Tomcat runterladen und entpacken

Wir wechseln in das Temp-Verzeichnis:

cd /tmp

Und laden uns die Zip-Datei des aktuellen Tomcat (Core) herunter (Stand 21.03.2020 = 8.5.53):

wget https://downloads.apache.org/tomcat/tomcat-8/v8.5.53/bin/apache-tomcat-8.5.53.zip

Wir entpacken die Zip-Datei:

unzip apache-tomcat-*.zip

Wir stellen sicher, dass innerhalb dem "/opt" das Verzeichnis "tomcat" existiert:

sudo mkdir -p /opt/tomcat

Wir verschieben den entpackten Tomcat in das neu erstellte Verzeichnis:

sudo mv apache-tomcat-8.5.53 /opt/tomcat/

Und löschen im Anschluss das Zip-File im /tmp:

sudo rm apache-tomcat-8.5.53.zip

Nun legen wir noch einen symbolischen Link "/opt/tomcat/home" an:

sudo ln -s /opt/tomcat/apache-tomcat-8.5.53 /opt/tomcat/home

Benutzer "tomcat" berechtigen

Wir legen tomcat als Besitzer des Verzeichnisses "/opt/tomcat" fest:

sudo chown -R tomcat: /opt/tomcat

Die Skripte innerhalb dem "bin"-Verzeichnis müssen ausführbar sein, deshalb:

sudo sh -c 'chmod +x /opt/tomcat/home/bin/*.sh'

Den Tomcat als Dienst laufen lassen:

Um den Tomcat auf dem Raspberry als Dienst laufen zu lassen, legen wir innerhalb "systemd" eine Unit-Datei mit dem Namen "tomcat.service" mit folgendem Inhalt an:

sudo nano /etc/systemd/system/tomcat.service
[Unit]
Description=Tomcat 8.5 Webserver
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"

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

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

[Install]
WantedBy=multi-user.target

Achtung: "JAVA_HOME=" ist hier gesetzt, wie zuvor unter Raspberry Pi - Java installieren beschrieben (Stichwort "symbolischer Link").

Mit "Strg + O" und dann "Enter" können wir die Änderung speichern. Mit "Strg + X" verlassen wir danach den Editor.

Wir prüfen jetzt, ob der Tomcat auch sauber startet und geben der Reihenfolge nach folgende Befehle ein:

sudo systemctl daemon-reload
sudo systemctl start tomcat
sudo systemctl status tomcat

Wenn alles ok ist, sehen wir folgendes Ergebnis:

Im Ok-Fall wollen wir, dass der Dienst bei jedem Start des Raspberry automatisch startet. Das erledigen wir mit folgendem Befehl:

sudo systemctl enable tomcat

Umgebunsvariable "Produktion" setzen

Da unser Webserver als (private) Produktionsumgebung dient, auf der unsere Programme nach Fertigstellung laufen, erhält dieser eine entsprechende Umgebungsvariable. Wer diese in seinem Programm ausgibt, sieht in welcher Umgebung er sich gerade befindet.

Dazu bearbeiten wir die "server.xml" des Tomcats mit diesem Befehl und fügen das folgende unter den "GlobalNamingResources" ein:

sudo nano /opt/tomcat/home/conf/server.xml
<Environment description="Umgebung" name="UMGEBUNG" type="java.lang.String" value="Produktion"/>

Das sieht dann wie folgt aus:

Mit "Strg + O" und dann "Enter" können wir die Änderung speichern. Mit "Strg + X" verlassen wir danach den Editor.

Tomcat Manager App von außen zugänglich machen

Aus Sicherheitsgründen ist die Tomcat-Manager-App sowie die Tomcat-Hostmanager-App nur vom lokalen Raspberry aus nutzbar. Wir befinden uns aber im Heimnetz und möchten zumindest Zugriff auf die Manager-App von einem anderen Rechner aus, auf dem auch unser PuTTY (SSH-Client) läuft. Dazu müssen wir lediglich die jeweilge context.xml der App umkonfigurieren.

Wir editieren zunächst die Datei "tomcat-users.xml" und fügen ans Ende (aber vor "</tomcat-users>") das folgende ein:

sudo nano /opt/tomcat/home/conf/tomcat-users.xml
<role rolename="admin"/>
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>

<user username="USER" password="PASSWORD" roles="admin,admin-gui,manager-gui"/>

Achtung: USER und PASSWORD ersetzen! Benutzer ist beliebig wählbar und das Passwort sowieso.

Das sieht dann wie folgt aus:

Mit "Strg + O" und dann "Enter" können wir die Änderung speichern. Mit "Strg + X" verlassen wir danach den Editor.

Wir editieren nun die Datei "context.xml" der Tomcat-Manager-App:

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

Dort tragen wir getrennt durch "|" die IP-Adressen der Rechner ein, die auch Zugriff auf die Manager-App haben sollen. Bei mir ist es eine IP-Adresse. Und zwar die von meinem Entwicklungsrechner, mit dem ich den Rapsberry auch per PuTTY (SSH) fernsteuere.

Mein Entwicklungsrechner hat die statische IP-Adresse 192.168.159.80, welche ich durch die Pipe "|" (im Nano ALT GR + Pipe drücken) getrennt am Ende von "allow=" ergänze.

Das sieht dann wie folgt aus:

Mit "Strg + O" und dann "Enter" können wir die Änderung speichern. Mit "Strg + X" verlassen wir danach den Editor.

Wir starten nun den Tomcat neu, damit die Änderungen wirksam werden:

sudo systemctl restart tomcat

Tomcat Manager App aufrufen

Prinzipiell erreichen wir unseren Tomcat nun unter folgender URL, die wir im Browser nutzen können:

http://DEINE-IP-ADRESSE:8080

Hierrüber erreichen wir nun auch unsere Manager-App und werden dabei nach dem User und dem Passwort gefragt, welchen wir zuvor in der Datei "tomcat-users.xml" konfiguriert haben:

In der Manager-App können wir deployten Anwendungen sauber undeployen, Sitzungen entfernen usw.:

Tomcat ist nun installiert und es geht weiter mit: wie installiere ich die Datenbank MariaDB auf dem Raspberry.