Raspberry Pi Step 6 – Tomcat installieren

Die Idee

Es gibt verschiedene Sachen, die ich auf dem Raspberry machen möchte. Einige Sachen möchte ich mit dem Handy steuern, andere Sachen kann der Raspberry eigenständig tun, aber ich möchte die Ergebnisse auf dem Smartphone sehen.

Zum Beispiel möchte ich Wetterdaten erfassen und diese dann anzeigen.

Wenn man das plattformunabhängig halten möchte, eignet sich hierzu wahrscheinlich am besten eine Weboberfläche, die man dann zunächst mal im Heimnetzwerk anzeigen kann.

Programmiertechnisch kenne ich mich am besten in Java aus, weshalb ich mir vorstelle, eine Java-Webapplikation (Servlet) zu programmieren, die ich dann auf einem Tomcat auf dem Raspberry deploye.

Schritt 1 – Apache Webserver installieren.

Der Apache soll die HTTP-Requests entgegennehmen und dann – je nach Applikation – auf den gewünschten Applicationserver weiterleiten. Wie man den Apache installiert, habe ich bereits in einem Beitrag beschrieben.

Schritt 2 – Tomcat installieren.

Wir checken zunächst die Java-Version mit dem Kommando java -version

pi@raspberrypi:~ $ java -version
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) Client VM (build 25.65-b01, mixed mode)
pi@raspberrypi:~ $

Dann laden wir uns die Installationsdateien für dem Tomcat herunter. Dazu suchen wir uns auf der Apache-Seite die aktuelle Version raus und laden diese mittels wget auf den Pi. In meinem Fall ist das

wget http://www-us.apache.org/dist/tomcat/tomcat-8/v8.5.28/bin/apache-tomcat-8.5.28.tar.gz

Dann wird die tar-Datei entpackt

pi@raspberrypi:~/Tools/apache $ tar xvf apache-tomcat-8.5.28.tar.gz

Ich persönlich mag es lieber, wenn ich den Tomcat dann in einem Applikationsverzeichnis habe. Deshalb verschiebe ich ihn nochmal.

pi@raspberrypi:~/Tools/apache $ cd 
pi@raspberrypi:~ $ mkdir Applications
pi@raspberrypi:~ $ cd Applications/
pi@raspberrypi:~/Applications $ mkdir Tomcat
pi@raspberrypi:~/Applications $ cd Tomcat/
pi@raspberrypi:~/Applications/Tomcat $ mv /home/pi/Tools/apache/apache-tomcat-8.5.28 .

Ausserdem erstelle ich mir einen symbolischen versionsunabhängigen Link, den ich recent nenne. Dieser zeigt immer auf die aktuelle Version. Sollte ich später mal den Tomcat hochleveln wollen, muss ich nicht in allen möglichen Skripten alle Pfade anpassen, sondern ändere einfach den Link auf das Verzeichnis.

pi@raspberrypi:~/Applications/Tomcat $ ln -s apache-tomcat-8.5.28/ recent
pi@raspberrypi:~/Applications/Tomcat $ ls -l 
insgesamt 4
drwxr-xr-x 9 pi pi 4096 Mär 2 22:11 apache-tomcat-8.5.28
lrwxrwxrwx 1 pi pi 21 Mär 2 22:15 recent -> apache-tomcat-8.5.28/
pi@raspberrypi:~/Applications/Tomcat $

Dann müssen wir noch einen User im Tomcat anlegen, mit dem wir die Manager-Gui nutzen können. Dazu editieren wir die Datei conf/tomcat-users.xml und fügen die folgende Zeile hinzu:

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

Der Tomcat ist nun grundsätzlich startbar. Um ihn später aber auch ohne User-Interaktion direkt beim Hochfahren des Servers zu starten, benötigen wir noch ein Startskript, welches „in das System integriert werden muss“

Dazu erstellen wir mit sudo /etc/init.d/tomcat ein Startskript, wie dieses hier

#!/bin/sh
# /etc/init.d/tomcat
# starts the Apache Tomcat service
### BEGIN INIT INFO
# Provides:          tomcat
# Required-Start:
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# X-Interactive:     true
# Short-Description: Start/stop tomcat application server
### END INIT INFO
 
export CATALINA_HOME="/home/pi/Applications/Tomcat/recent"
case "$1" in
start)
  if [ -f $CATALINA_HOME/bin/startup.sh ];
  then
    echo $"Starting Tomcat"
    /bin/su pi $CATALINA_HOME/bin/startup.sh
  fi
  ;;
stop)
  if [ -f $CATALINA_HOME/bin/shutdown.sh ];
  then
    echo $"Stopping Tomcat"
    /bin/su pi $CATALINA_HOME/bin/shutdown.sh
  fi
  ;;
*)
  echo $"Usage: $0 {start|stop}"
  exit 1
  ;;
esac

Ist das Skript gespeichert, werden noch die Ausführungsrechte angepasst und wir versuchen den ersten Start.

pi@raspberrypi:/etc/init.d $ sudo chmod 755 tomcat 
pi@raspberrypi:/etc/init.d $ sudo update-rc.d tomcat defaults
pi@raspberrypi:/etc/init.d $ sudo /etc/init.d/tomcat start
$Starting Tomcat
Using CATALINA_BASE: /home/pi/Applications/Tomcat/recent/
Using CATALINA_HOME: /home/pi/Applications/Tomcat/recent/
Using CATALINA_TMPDIR: /home/pi/Applications/Tomcat/recent//temp
Using JRE_HOME: /usr
Using CLASSPATH: /home/pi/Applications/Tomcat/recent//bin/bootstrap.jar:/home/pi/Applications/Tomcat/recent//bin/tomcat-juli.jar
Tomcat started.
pi@raspberrypi:/etc/init.d $ sudo update-rc.d tomcat defaults

Fertig, der Tomcat ist nun gestartet und nutzbar.