Wie man einen Raspberry Pi als Webserver verwendet

Wussten Sie schon, dass die offizielle Website der Raspberry Pi Foundation auf einem Cluster von Raspberry Pi-Boards gehostet wird?

Diese Konfiguration hat am geschäftigsten Tag der Stiftung – der Markteinführung des Raspberry Pi 4 – erfolgreich zig Millionen Besucher bedient.

Warum also nicht das Gleiche tun?

Sie müssen wissen, dass sich dieser Pi-Cluster in einem Rechenzentrum befindet und sich auf Switches der Unternehmensklasse, Load Balancer und einen Dateiserver stützt, um eigene benutzerdefinierte SD-Kartenabbilder auf die Pis zu schreiben.

Sie werden in Ihrem Wohnzimmer mit einem drahtlosen Router und Heim-Internet keine vergleichbaren Ergebnisse erzielen (selbst wenn Ihr Router und Ihr Internet recht gut sind).
Sie müssen sich auch um die Sicherheit kümmern. Wenn Sie Ihren Pi für das öffentliche Internet zur Verfügung stellen und ein Angreifer ihn kompromittiert, könnte er Zugang zu Ihrem lokalen Netzwerk erhalten. Das ist nicht gut.

Wenn Sie einen Raspberry Pi zum Hosten einer Website im öffentlichen Internet verwenden möchten, ist es wahrscheinlich besser, jemanden zu bezahlen, der das Raspberry Pi-Hosting für Sie übernimmt. Das gilt vor allem dann, wenn Sie etwas Kommerzielles damit vorhaben.

Kostenlose Alternativen zu einem Raspberry Pi-Webserver

Wie dem auch sei, es ist gar nicht so schwierig, einen Webserver in der Cloud für 0,00 $ pro Monat zu hosten. Das liegt daran, dass die großen Cloud-Giganten Ihnen gerne nur einen kleinen VPS auf ihrer kostenlosen Ebene zur Verfügung stellen.

Mit einer solchen Infrastruktur können Sie zwar kein neues Start-up-Unternehmen gründen, aber für einen persönlichen Blog oder sogar für ein lokales Unternehmen oder eine freiberufliche Website reicht es aus. Alles, was Sie dafür brauchen, sind dieselben Linux-Kenntnisse, die Sie auch für einen Raspberry Pi benötigen.

Wann wird ein Raspberry Pi als Webserver eingesetzt?

Ein Raspberry Pi eignet sich hervorragend als kostengünstige und energieeffiziente Lösung zum Hosten von Websites und Webanwendungen über ein lokales Netzwerk.
Er ist eine großartige Test- oder Entwicklungsumgebung, in der Sie vollen Zugriff auf das System haben. Sie müssen sich auch keine Gedanken über Bandbreitengebühren oder Nutzungsrichtlinien machen, während Sie das System testen.

Es ist auch eine hervorragende Möglichkeit, um z. B. ein Wiki im lokalen Intranet eines kleinen oder mittleren Unternehmens zu hosten. Achten Sie nur darauf, Backups zu automatisieren.
Vielleicht verwenden Sie Ihren Pi als Prototyp für ein IoT-Gerät, das über eine Art Webschnittstelle oder ein Dashboard verfügt. Die Installation eines Webservers ist die einzige wirkliche Möglichkeit, dies zu tun.

Einer der besten Gründe, einen Webserver auf einem Raspberry Pi zu installieren, besteht darin, sich mit Webservern vertraut zu machen.

Auswahl eines Webservers

Die beiden mit Abstand beliebtesten Webserver sind Apache und Nginx (sprich: Engine-X). Bei beiden handelt es sich um Open-Source-Projekte, die Sie frei installieren und verwenden können.

Der Apache, der erstmals 1995 veröffentlicht wurde, ist fast so alt wie das Internet selbst und ist immer noch der beliebteste Webserver im Internet.

Er verfügt über eigene Module zur Bereitstellung dynamischer Inhalte wie PHP und ist aufgrund seiner weiten Verbreitung unglaublich gut dokumentiert. Er ist ein robuster Allrounder, der es leicht macht, einzelnen Verzeichnissen eine eigene Konfiguration zu geben. Diese Dinge machen es zu einem großartigen Ort für den Einstieg.

Nginx wurde geschrieben, um die Grenzen von Apache bei der Handhabung vieler gleichzeitiger Benutzer zu überwinden. Er eignet sich hervorragend für die Bereitstellung statischer Inhalte, benötigt aber einen externen Prozessor für dynamische Inhalte.

In dieser Anleitung werden wir Apache installieren. Die Vorteile von Nginx sind real, aber für die typischen Anwendungsfälle eines Raspberry Pi nicht so wichtig. Wenn Sie Ihren Pi jedoch als Prototyp für etwas verwenden, das skalierbar sein könnte, sollten Sie darüber nachdenken, auch Nginx zu lernen.

Es ist in der Tat nicht ungewöhnlich, dass beide zusammen verwendet werden, wobei Nginx am vorderen Ende statische Ressourcen bereitstellt und Apache am hinteren Ende dynamische Inhalte rendert.

Auch andere Webserver sind von Interesse:

  • Node.js ist bereits auf Ihrem Raspberry Pi installiert. Dabei handelt es sich nicht um einen herkömmlichen Webserver, sondern um eine Laufzeitumgebung für Javascript. Er kann viele Verbindungen auf einmal verarbeiten, was ihn sehr praktisch für große Webanwendungen macht, auch wenn Sie normalerweise etwas wie Apache oder Nginx als Frontend verwenden würden.
  • Auch das http.server-Modul von Python ist bereits auf Ihrem Raspberry Pi installiert. Es eignet sich gut zum Testen und Entwickeln, ist aber für diese Zwecke besonders praktisch. Wenn Sie eine Webanwendung in Python schreiben, können Sie mit ein paar Zeilen Code einen einfachen Webserver einrichten.
  • Lighttpd nutzt die Systemressourcen sehr effizient, was für alle interessant sein dürfte, die eingebettete Systeme und IoT-Geräte entwickeln.

Apache auf dem Raspberry Pi installieren

Diese Anleitung wurde für Raspberry Pi OS Buster geschrieben, aber wenn Sie eine frühere Version von Raspbian verwenden, wird sich das nicht großartig ändern; Apache ist eine sehr ausgereifte Software.

Sie benötigen eine Internetverbindung, um diese Pakete zu installieren.
Rufen Sie das Terminal auf und aktualisieren Sie Ihr Betriebssystem, indem Sie Folgendes eingeben
sudo apt update && sudo apt upgrade -y

Wenn die Aktualisierungen abgeschlossen sind, installieren Sie Apache mit diesem Befehl:
sudo apt install apache2 -y

Sie können nun testen, ob Apache ordnungsgemäß installiert wurde, indem Sie auf Ihren Raspberry Pi zugreifen. Wenn Sie den Webbrowser des Pi verwenden, geben Sie http://localhost.com/ in die Adressleiste ein.

Wenn Sie sich in Ihrem lokalen Netzwerk befinden, müssen Sie die IP-Adresse verwenden. Wenn Sie diese noch nicht kennen, können Sie sie mit diesem Befehl ermitteln:
hostname -I

Ihr Browser lädt dann eine Seite, die wie folgt aussieht.

Glückwunsch, Sie haben einen Webserver

Das war einfach, nicht wahr?

Diese einfache Einrichtung ist alles, was Sie brauchen, um statische Inhalte bereitzustellen: Seiten, die jedes Mal, wenn sie geladen werden, im Browser genau gleich aussehen, bis Sie die Dateien selbst bearbeiten.

Lassen Sie uns also eine dieser Dateien bearbeiten. Geben Sie ein:
sudo nano /var/www/html/index.html

Scrollen Sie in der Datei nach unten, bis Sie die Zeile „Apache2 Debian Default Page“ finden, und ändern Sie sie in eine beliebige neue Überschrift. Speichern Sie die Datei und laden Sie die Seite erneut in Ihrem Browser.

Statische Websites sind blitzschnell und einfach zu pflegen und bieten eine Menge zu entdecken. Für einen einfachen Blog, eine Unternehmenswebsite oder eine Informationswebsite ist dies vielleicht alles, was Sie brauchen. Legen Sie Ihre Website einfach im Verzeichnis /var/www/html/ ab, und Apache wird sie ausliefern.

Erstellen Sie dynamische Websites mit dem Raspberry Pi

Anstatt immer nur das Gleiche anzuzeigen, möchten Sie vielleicht dynamische Inhalte bereitstellen – Seiten, die der Server durch die Ausführung von Code erzeugt.
Dies kann so aussehen, dass Benutzer Seiten bearbeiten oder hinzufügen können, oder dass sie neue, eigene Seiten hinzufügen können – vielleicht für ein Wiki, ein Forum oder einen Kommentarbereich in einem Blog.

Es kann auch darum gehen, dass Ihr Gerät Daten auf einem Dashboard anzeigt, egal ob diese von einem Online-Dienst, einer Datenbank oder von etwas, das an die GPIO-Pins angeschlossen ist, gesammelt wurden.

Es gibt viele Skriptsprachen, mit denen Sie dynamische Websites erstellen können, z. B. Java, Perl, PHP, Python oder Ruby. Sie können sogar kompilierte Binärdateien verwenden, die in Go, C++ oder C geschrieben sind.

PHP ist ein guter Ausgangspunkt, da die beliebtesten Open-Source-CMS-Plattformen wie WordPress, Joomla! und Drupal auf dieser Sprache aufbauen. Zusammen bilden diese Plattformen leicht die Mehrheit aller Websites.

Installation von PHP

Das Hinzufügen von PHP-Funktionen zum Apache erfordert nur einen einzigen Befehl:
sudo apt install php libapache2-mod-php -y

Testen Sie, ob dies funktioniert, indem Sie die Index-Seite durch eine in PHP gerenderte Seite ersetzen. Löschen Sie index.html und öffnen Sie in nano eine neue Datei namens index.php.
sudo rm /var/www/html/index.html
sudo nano /var/www/html/index.php

Geben Sie nun diese Zeile ein und speichern Sie die Datei:

Laden Sie nun die Seite im Browser neu. Sie sollten sehen, dass Ihre PHP-Funktion wie folgt aussieht:

Wie soll es weitergehen?

Nun, das liegt ganz bei Ihnen.

Die Grundbausteine des Webs sind HTML und CSS, also ist es keine schlechte Idee, mit einem von beiden anzufangen.

Sie können einen Großteil der Arbeit mit HTML und CSS vermeiden, indem Sie ein Frontend-Framework wie Bootstrap verwenden, in dem vieles bereits für Sie geschrieben ist.
Wenn Sie Code komplett vermeiden möchten, können Sie mit einem statischen Website-Builder wie Hugo die gesamte Website erstellen.

Sobald Sie diese beherrschen, sollten Sie sich an dynamische Websites wagen.
Sie möchten vielleicht auch eine Datenbank zum Speichern und Abrufen von Daten. Wenn Sie MariaDB (oder MySQL) zu dem Webserver hinzufügen, den wir bereits gebaut haben, haben Sie einen so genannten LAMP-Stack (Linux, Apache, MySQL, PHP).

Ein LAMP-Stack ist die Grundlage für viele Website-Plattformen, darunter auch die beliebteste: WordPress. Es ist auch eine gute Möglichkeit, ein Wiki, ein Forum und vieles mehr zu hosten.
Vielleicht möchten Sie lieber nicht PHP, sondern Python verwenden. Wenn Sie einen Prototyp für ein IoT-Gerät oder ein Hausautomatisierungssystem auf einem Raspberry Pi entwickeln, ist die Wahrscheinlichkeit groß, dass Sie es bereits verwenden.

Es ist etwas aufwändiger, Apache dazu zu bringen, Python auszuführen, da Sie das Common Gateway Interface (CGI) konfigurieren müssen. Wenn Sie nicht weiterkommen, verwenden Sie einfach Pythons eingebautes http.server-Modul für die Entwicklung und zum Testen, bis Sie es herausgefunden haben.

Python bietet auch beliebte Web-Frameworks, darunter Django und Flask. Flask ist das einfachere und leichtere der beiden.

Wir kratzen immer noch kaum an der Oberfläche. Viel Spaß, und sehen Sie, wohin Sie das führt.