Einrichtung eines Raspberry-Pi Servers für Schul- und Unterrichtszwecke

Motivation: Warum ist der Raspberry-Pi für Schulen interessant?

Die GUI-Versionen "Raspbian Stretch with desktop" von Raspbian herunterladen (wir sollten später aber noch erforschen, ob die Version ohne GUI unseren Ansprüchen eher genügt): https://www.raspberrypi.org/downloads/raspbian/

Den Anweisungen auf folgender Internet-Seite folgen und das Raspbian-Image auf eine passende SD-Card übertragen:: https://www.raspberrypi.org/documentation/installation/installing-images/README.md

Netzwerkkabel(!), HDMI-Bildschirm, Tastatur und Maus an den Raspi anschliessen. SD-Card einlegen. Dann Stromkabel anschliessen. Der Raspi fährt hoch (einen An-/Ausschalter gibt es nicht).

Terminal auf dem Raspi öffnen und folgende Befehle abarbeiten (zuvor muss evtl. das Tastatur-Layout eingestellt werden): sudo apt-get update sudo apt-get dist-upgrade sudo apt-get upgrade sudo apt-get update sudo apt-get install xrdp

Nun ist der Raspi Remote z.B. über den bekannten Windows Remotedesktop-Client erreichbar (Rechnername raspberrypi, User ist pi, Kennwort ist raspberry) Es kann nicht schaden, nach erster erfolgreicher Remote-Sitzung den Raspi einmal neu zu starten und zu schauen, ob die Einstellungen erhalten bleiben. Tastatur, Maus und Bildschirm können nun wieder abgeklemmt werden. Alles Weitere kann Remote erledigt werden.

SSH-Server einrichten, dazu wieder Terminal auf dem Raspi öffnen und folgende Befehle abarbeiten: sudo apt-get install ssh sudo /etc/init.d/ssh start sudo update-rc.d ssh defaults sudo update-rc.d ssh enable

Nun kann über Terminals auf den Raspi zugegriffen werden.

In einem Mac-OS-Terminal oder in einem Linux-Terminal: ssh pi@raspberrypi
Unter Windows: PuTTY via SSH

SFTP geht natürlich auch.

Java (sogar das JDK von Oracle) ist bereits in passender Version 1.8.x vorinstalliert. Hier ist also nichts zu tun 😉

Apache installieren sudo apt-get install apache2

Damit ist der Apache installiert und sollte direkt laufen (http://raspberrypi im Browser eines Rechners eingeben, der sich im selben Netz befindet). Bei Neustart des Raspi wird der Apache automatisch wieder gestartet.

PHP installieren sudo apt-get install php7.0 Die Datei /etc/php/7.0/apache2/php.ini bearbeiten und "short_open_tag = On" setzen. /etc/init.d/apache2 restart

php7.0-xml unter PHP installieren (sonst sind einige Funktionen wie encode_url nicht verfügbar) sudo apt-get install php7.0-xml

mod_rewrite unter PHP installieren
cd /etc/apache2/mods-enabled sudo ln -s ../mods-available/rewrite.load rewrite.load In der Datei /etc/apache2/apache2.conf überall "AllowOverride None" ersetzen durch "AllowOverride all" /etc/init.d/apache2 restart

Damit sollten PHP und mod-rewrite passend installiert sein. Zur Kontrolle eine kleine phpinfo-Datei erzeugen und im Browser mal kurz schauen, ob PHP läuft, ob mod_rewrite installiert ist und ob short_open_tag auf on steht.

MySQL installieren sudo apt-get install mysql-server php-mysql sudo apt-get install mysql-client Nun in allen .cnf Dateien, die man unter /etc/mysql findet (rekrusiv alle Unterverzeichnisse durchgehen), überall "max_allowed_packet = 16M" ersetzen durch "max_allowed_packet = 512M". Hinweis: Der Eintrag "max_allowed_packet = 16M" steht für gewöhnlich in genau 2 Dateien. Der Befehl grep -r max_allowed_packet liefert alle Dateien, in denen der Eintrag steckt.

Damit ist der MySQL installiert und sollte direkt laufen. Bei Neustart des Raspi wird MySQL automatisch wieder gestartet. Zur Kontrolle mal den MySQL-Client starten: sudo mysql -u root -p Passwort für root gibt es standardmäßig nicht, also einfach ENTER drücken.

Tomcat (neueste Version) herunterladen, z.B. apache-tomcat-9.0.6.tar.gz
Einen Ordner tomcat im Home-Verzeichnis anlegen (man kann Tomcat natürlich an einem anderen Ort installieren)
Im Ordner tomcat die heruntergeladene Installationsdatei entpacken: tar xvf apache-tomcat-9.0.6.tar.gz Die heruntergeladene Tomcat-Installationsdatei kann nun gelöscht werden.
Die Datei tomcat-users.xml im Ordner conf editieren und dort z.B. Folgendes einfügen: <user username="pi" password="raspberry" roles="manager-gui"/> Startup-Skript für Tomcat mit erzeugen, dazu mithilfe des Editors nano diesen Skript anlegen und befüllen: sudo nano /etc/init.d/tomcat Den Inhalt aus dem folgenden Kasten in die Datei einfügen.


#!/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/tomcat/apache-tomcat-9.0.6"
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

Weiter geht es mit der restlichen Tomcat Installation sudo chmod 755 /etc/init.d/tomcat sudo update-rc.d tomcat defaults sudo /etc/init.d/tomcat start

Der Tomcat ist nun gestartet und startet sich bei jedem Neustart des Raspi automatisch mit (so haben wir ihn konfiguriert). Testen, ob Tomcat wirklich läuft, ist über http://raspberrypi:8080 möglich.

Tipp: Unter Linux und Mac OS X ist es recht einfach, mittels dd ein Image einer SD-Card zu erstellen. sudo dd if=/dev/sdx of=/path/imagefile.img Dabei muss man /dev/sdx durch den Pfad zur SD-Card ersetzen (Bei Mac OS X für gewöhnlich /dev/diskx, dabei ist das x hinter disk eine Ziffer) und /path/imagefile.img durch den Pfad samt Dateinamen der Datei, in die das Image gespeichert werden soll.
Hinweis: diskutil list zeigt den Pfad zur SD-Card. Wenn man das Tool vor Einlegen der SD-Card aufruft und dann noch einmal nach Einlegen der SD-Card, erkennt man an der unterschiedlichen Ausgabe, welche disk die richtige ist!

Tipp: Der Raspi hat keinen An-/Ausschalter, läßt sich aber Remote über die Benutzeroberfläche nicht herunterfahren. Abhilfe schafft hier, in der Konsole Folgendes einzugeben: sudo shutdown now Soll der Raspi direkt wieder hochfahren (Reboot), dann geht das in der Konsole wie folgt: sudo -r shutdown now