Webserver mit Raspberry Pi im Jahr 2023

Ein Artikel von Ramón Lang, veröffentlicht am 12. Mai 2020.
Die Lesedauer beträgt ungefähr 11 Minuten.

Dieser Artikel ist bereits über 2 Jahre alt.
Über die Zeit verändern sich Meinungen. Die Technik, Produkte, Dienstleistungen, etc. entwickeln sich weiter. Bitte berücksichtige dies beim Lesen dieses Artikels.

Ich bin Schweizer und wohne in Bayern.
Ein Schweizer Franken eben. Viele Texte habe ich nach schweizerischer Schreibweise ohne Scharf-S (ß) verfasst. Dieser Artikel könnte davon betroffen sein.

Wer das erste Mal versucht mit einem Raspberry Pi umzugehen wird wahrscheinlich schnell an manche Grenzen kommen – jedenfalls dann, wenn der Benutzer von Terminals und deren Bedienung keine Ahnung hat. Dieser Artikel soll die wichtigsten Fragen klären, um einen Raspberry Pi als Webserver einzusetzen. Das Suchen und Finden dieser Informationen war extrem schwierig, da diverse Elemente mittlerweile veraltet sind. Dieser Artikel ist Stand 2020.

Die nötige Hardware

Es sind verschiedene Modelle des Raspberry Pi auf dem Markt. Immer das Neuste davon zu besitzen ist nicht notwendig, aber all zu alt sollte es dennoch auch nicht sein. Ich habe mich für ein Modell mit WLAN und HDMI-Port entschieden.

Dazu wird eine Micro SD-Speicherkarte benötigt, die im Lieferumfang nicht enthalten ist. Wichtig dabei ist, dass die akzeptierte Kapazität ein Limit hat. Ich habe mich für eine Speicherkarte mit 32GB entschieden. Das tatsächliche Limit kenne ich leider nicht – ggf. ist es auch vom Modell abhängig.

Als Drittes folgt ein adäquater USB-Adapter. Der Raspberry Pi benötigt viel Strom. Daher ist ein Adapter mit mindestens 2A zu empfehlen. Mehr als 2.4A kann der Raspberry Pi jedoch nicht verwenden (ggf. Modellabhängig). Je nach Modell kann es gar sein, dass die Spannung auf dem Weg von Adapter über Platine zu den USB-Ports um mehrere zehntel Volt abfallen kann. Dadurch haben angeschlossene Geräte, die viel Strom benötigen, Schwierigkeiten. Wer eine externe Festplatte anschliessen will, kann sich einen USB-Adapter mit mehreren Ports kaufen, da dadurch neben dem Port für die Stromversorgung des Raspberry Pi’s noch einer für die externe Festplatte frei bleibt. Hierzu müsste man sich noch ein Splitter-USB-Kabel zulegen, das es ermöglicht, Daten und Strom getrennt voneinander anzuschliessen.

Meines Erachtens reicht ein solcher USB-Adapter völlig aus. Auf manchen Websites wird empfohlen, ein Raspberry Pi-USB-Adapter zu bestellen, da dieser die verlorene Spannung wieder ausgleicht. Nötig war das bisher für mich aber noch nicht.

Optional ist ein passendes Gehäuse, da der Raspberry Pi nichts weiter als eine Platine darstellt. Hierbei sind ebenfalls Modell-Unterschiede zu beachten. Je nach Verwendungszweck gibt es auch Gehäuse mit integriertem Touch-Display.

Die nötige Software

Nun zur Software: Der Raspberry läuft grundsätzlich mit jeder Form von Linux-Systemen. Am einfachsten ist jedoch das auf den Raspberry Pi zugeschnittene Raspbian (ebenfalls eine Linux Variation), mit dem der Raspberry auch über eine grafische Desktop-Oberfläche konfiguriert werden kann.

Dazu muss eine ISO-Datei des Systems auf die Speicherkarte übertragen werden. Da es sich um ein Betriebssystem handelt, muss aus der Speicherkarte eine boot-fähige Speicherkarte gemacht werden. Das ist oft nicht ganz einfach; die Suche nach geeigneter Software ist hierbei wichtig. Wohlmöglich sind sich dessen auch die Macher des Raspberry Pi bewusst, denn mittlerweile wird eine Software angeboten, die zu diesem Zweck enorm praktisch ist:

Der Raspberry Pi Imager (siehe Bild) ist ein kleines Tool für Windows- und Mac-Benutzer, das das Raspberry-System herunterlädt und direkt auf die Speicherkarte schreibt. Es ist dadurch also möglich, mit nur zwei Klicks eine fix-fertige Speicherkarte zu bekommen. Ausserdem kann das Tool neben Raspbian auch andere Systeme und Konfigurationen auf die Speicherkarte schreiben. Es ist also möglich, sich darin etwas auszuprobieren.

Mit diesen Komponenten ist der Raspberry also nun startklar:

Der erste Start

Grundsätzlich kann der Raspberry Pi ohne jegliche Peripherie gestartet werden, da die meisten ihn wohl über die Netzwerkverbindung konfigurieren. Für den ersten Start jedoch habe ich Bildschirm, Tastatur und Maus dennoch angeschlossen, um die grafische Oberfläche bedienen und sehen zu können.

Nun kann die WLAN-Verbindung hergestellt werden. Über das Startmenü findet man einen Konfigurator für den Raspberry Pi, über den ausserdem die Optionen SSH und VNC aktiviert werden müssen. SSH bedeutet, dass der Raspberry Pi später über das Netzwerk mit einem Terminal eines anderen Computers gesteuert werden kann. Durch eine VNC-Verbindung wird der Raspberry Pi ebenfalls über das Netzwerk gesteuert, nur jedoch mit grafischer Oberfläche (auch bekannt als Remote Desktop). Der VNC-Viewer ist dazu notwendig.

Nachdem diese Einstellungen vorgenommen sind, wird nur noch ohne Peripherie, also über Netzwerk gearbeitet.

Webserver installieren

Damit aus dem Raspberry Pi nun ein lauffähiger Webserver wird, müssen diverse Elemente installiert werden. Hierbei ist wichtig zu wissen, dass zuerst Apache 2, PHP, MySQL und phpMyAdmin jeweils separat installiert werden müssen. Auch wichtig: In vielen Foren wird dringend empfohlen, vor jeder dieser Installationen Updates zu prüfen und zu installieren. Da dies aber bei Einrichten des Raspberry Pi bereits geschehen ist, ist das jetzt nicht mehr notwendig.

Als allererstes wird nun eine Verbindung über das Netzwerk zum Raspberry Pi hergestellt. Dazu wird auf einem anderen Computer, der mit demselben Netzwerk verbunden ist, das Terminal geöffnet. Das gilt für Mac- und Linux-Systeme. Unter Windows wird dazu Software benötigt, beispielsweise PuTTY. Unter Google findet man zu Stichwort „SSH Verbindung Windows“ entsprechende Hinweise.

Nun wird im Terminal folgendes eingegeben, um eine Verbindung herzustellen:

ssh pi@192.168.178.96

ssh ist hierbei der Befehl, der eine Verbindung herstellen soll. pi heisst der Benutzer, mit dem man sich anmelden soll. Hinter dem @-Zeichen wird die IP-Adresse eingegeben. Diese kann über die Seite des Routers oder Modems in Erfahrung gebracht werden. Danach fragt das System nach dem Passwort des Benutzers. Normalerweise ist das beim Raspberry Pi „raspberry“, sofern es bei der Einrichtung nicht geändert wurde. Bei Eintippen erfolgt kein Feedback in Form von Sternen oder anderem, die Eingabe funktioniert aber dennoch. Nach erfolgreicher Eingabe erscheint ein Willkommens-Text und abschliessend die Zeile, in der man weitere Befehle eingeben kann (beispielsweise so: „pi@raspberrypi:~ $“).

Apache 2 installieren

Nun ist das System bereit für weiterführende Befehle, die der Raspberry Pi ausführen wird. Als erstes wird Apache 2 installiert. Dazu wird nun folgender Befehl eingegeben:

sudo apt install apache2

Eine kurze Erläuterung: sudo beschreibt, dass dieser Befehl mit Administrator-Rechten ausgeführt werden soll. apt ist der eigentliche Befehl, der install ausführt und entsprechend apache2 vollautomatisch herunterlädt und installiert.

Jetzt ist bereits der erste Schritt zum Webserver getan! Gibt man im Browser nun die IP-Adresse des Raspberry Pi’s ein, erscheint bereits die Testseite von Apache 2:

Der Beinahe-Webserver ist nun per IP-Adresse im Netzwerk erreichbar und die Datei index.html, die im Bild angezeigt wird, befindet sich im Verzeichnis „/var/www/html“.

PHP installieren

Um nun PHP zu installieren, wird folgender Befehl eingegeben:

sudo apt install php

Damit unterstützt der Webserver nun auch das Ausführen von PHP-Dateien. PHP wurde in dieses Verzeichnis installiert: /etc/php.

MySQL installieren

Um nun auch MySQL-Datenbanken verwenden zu können wird folgender Befehl eingesetzt:

sudo apt install mariadb-server

Hierbei fällt auf, dass nicht mysql-server installiert wird, sondern mariadb. Dabei handelt es sich um ein anderes Paket. Manche Seiten empfehlen mysql-server, was bei mir jedoch nicht funktioniert hat. Ein Vergleich dieser zwei Pakete zeigt, dass es kaum Unterschiede für den Endbenutzer gibt.

phpMyAdmin installieren

Um nun mit der gewohnten grafischen Oberfläche auf die Datenbanken zugreifen zu können, wird phpMyAdmin installiert mit folgendem Befehl:

sudo apt install phpmyadmin

Nun folgt der kniffligste Teil – es ist wichtig, dies aufmerksam zu lesen!

Nach der Installation folgt diese Anzeige (siehe Bild oben). Hier wird der Eintrag apache2 bereits angewählt – er ist jedoch nicht aktiv. Drücke die Leertaste, damit diese Auswahl geschieht – dies ist am Stern (siehe Bild) erkennbar.

Kurz darauf wird gefragt, ob die Konfiguration automatisch vorgenommen werden soll. Üblicherweise wird hier Ja gewählt:

Danach muss noch ein Passwort festgelegt werden.

Wird im Browser hinter die IP-Adresse /phpmyadmin angehängt, wird das Interface von phpMyAdmin geladen, über das man sich jetzt einloggen kann. Damit das geschehen kann, wird nun ein Benutzer angelegt. Dazu werden folgende Befehle eingegeben:

sudo mysql -e "CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';"

sudo mysql -e "GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost' WITH GRANT OPTION;"

sudo mysql -e "FLUSH PRIVILEGES;"

Am besten führt man diese drei Zeilen einzeln aus, wie bisher auch. Anstelle von newuser und password werden entsprechend Benutzername und Passwort eingegeben.

Der Webserver ist nun vollständig eingerichtet.

Webverzeichnis ändern

Der von Apache 2 vorgegebene Pfad, in dem sich die Daten für den Webserver befinden ist nicht immer die beste Idee. Für meine Zwecke habe ich das Stammverzeichnis der Wechselmedien als Hauptverzeichnis des Webservers definiert. Das bedeutet, dass auf alle Wechselmedien über den Webserver zugegriffen werden kann, die am Raspberry Pi angeschlossen werden.

Mit folgendem Befehl wird eine Konfigurationsdatei geöffnet:

sudo nano /etc/apache2/sites-available/000-default.conf

Im oberen Drittel ist unter „DocumentRoot“ nun der bisherige Pfad angegeben, der nun mit dem neuen Pfad ersetzt werden muss. In meinem Fall ist das „/media/pi“, in dessen Verzeichnis sich alle Wechselmedien befinden.

Mit der Tastenkombination control + O wird das Dokument gespeichert und mit control + X geschlossen.

Im zweiten Schritt wird die Datei apache2.conf über folgenden Befehl bearbeitet:

sudo nano /etc/apache2/apache2.conf

Etwas weiter unten im nun geöffneten Dokument befindet sich folgender Bereich:

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

Auch hier wird „/var/www/“ mit dem neuen Pfad ersetzt. Apache oder Raspberry Pi müssen jetzt neu gestartet werden. Sollte die Änderung ständig die Melding „Forbidden“ hervorrufen, kann sie auch zurückgesetzt werden. In diesem Fall kann ein Symlink erstellt werden:

Symlink erstellen

Symlinks sind Verknüpfungen, mit dem Unterschied, dass sie wie richtige Verzeichnisse funktionieren. In meinem Fall versuche ich einen Symlink den Ordner der Wechselmedien in das Stammverzeichnis des Webservers zu erstellen:

sudo ln -s /media /var/www/html

Das bedeutet, dass das Verzeichnis „/media“ nun im Verzeichnis „/var/www/html“ als Symlink verfügbar ist.

exFAT-Unterstützung

Es kann unter bestimmten Voraussetzungen sinnvoll sein, den Raspberry Pi auf die Unterstützung von exFAT-formatierten Datenträgern aufzurüsten.

Dazu werden folgende Befehle im Terminal ausgeführt:

sudo apt install exfat-fuse

sudo apt install exfat-utils

Nach einem Neustart des Raspberry Pi werden nun auch exFAT-formatierte Datenträger automatisch in das System eingebunden.

Einrichtung abschliessen

Nachdem nun alles komplett eingerichtet wurde, kann der Raspberry Pi neugestartet werden. Es wäre auch möglich, die einzelnen Systeme neu zu starten, die nun installiert sind, aber so geht es schneller:

 sudo reboot