Wie betreibe ich eine Webseite auf dem Raspberry Pi? Was sind statische/dynamische Internetseiten? HTTP-Grundlagen mit Fokus auf den Pi

Als Video ansehen
Bereitgestellt über YouTube

Wie betreibe ich eine Webseite auf dem Raspberry Pi? Was sind statische/dynamische Internetseiten? HTTP-Grundlagen mit Fokus auf den Pi

Um eine Internetseite zu betreiben, muss diese gehostet werden. Das heißt: Die Seite liegt auf einem Server, der entsprechend eingerichtet wurde, um die gewünschte Seite übers Internet bereitzustellen. Hierfür kommt das HTTP-Protokoll zum Einsatz, das seit Jahrzehnten die Grundlage für das Internet wie wir es heute kennen bildet. Informationen und Funktionen lassen sich damit überall auf jedem Endgerät bereitstellen. Ob es sich um einen Computer, Laptop, Tablet, Smartphone handelt, ist dabei irrelevant. Selbst auf spezielle Geräte wie z.B. im Internet der Dinge oder auf Anzeigetafeln kommt diese Technik im Hintergrund zum Einsatz.

Wie funktioniert eine Internetseite per HTTP?

Der Browser eines Clients – beispielsweise auf einem Laptop oder Smartphone – sendet eine Anfrage an den Server, eine bestimmte Seite auszuliefern. Etwa die Suchmaschine Ecosia. Auf dem bzw. den Servern von Ecosia läuft ein Webserver, der speziell für das HTTP-Protokoll ausgelegt ist und diese Anfrage bearbeiten kann. Als Antwort sendet er HTML an den Client. HTML ist eine Auszeichnungssprache. Das HTML-Dokument umfasst alle Informationen einer Internetseite: Metadaten wie etwa den Titel und natürlich den Inhalt. Der Inhalt wird dabei strukturiert, beispielsweise ob es sich um eine Überschrift oder einen Absatz handelt und in welcher Ebene. Auch das Darstellen von fettem oder kursivem Text und andere Formatierungen lässt sich in HTML festlegen. Der Browser stellt die Inhalte entsprechend dar.

Ergänzt wird HTML von CSS, womit sich das Aussehen der Seite ändern lässt: Wie groß soll etwa die Überschrift sein? Welche Schriftart? Soll eine Box mit einem Rahmen versehen werden, wenn ja welcher Art und Farbe? Wie viel Abstand zwischen Überschrift und Text? Solche und viele weitere Dinge lassen sich mit CSS steuern.

Möchte man Logik im Client abbilden, benötigt man JavaScript. Ein bekanntes Beispiel dafür ist das Nachladen von Inhalten: Eine Nachrichtenseite möchte etwa neue Nachrichten dem Nutzer direkt präsentieren. Das kann HTML nicht abbilden. Sobald der Webserver die Antwort gesendet hat, lässt sich diese nicht mehr verändern – bis der Nutzer einem Link folgt oder per Hand neu lädt.

Der Browser interpretiert das HTML, lädt CSS sowie JavaScript und stellt die komplette Seite mithilfe dieser Bausteine dar. Zusätzlich kann der Webserver aber auch andere Dateien per HTTP ausliefern, wie z.B. Bilder oder Videos. Diese kann man mit HTML ebenfalls einbetten, sodass ein Bild vom Webserver geladen und an einer bestimmten Stelle dargestellt wird.

Statische und dynamische Webseiten: Was ist das? Worin unterscheiden sie sich?

Die ersten Internetseiten waren statisch. Das bedeutet: Jeder Besucher bekam die gleiche HTML-Seite. Heutige Ansprüche erfüllt das oft nicht mehr. Mehr Möglichkeiten bieten dynamisch generierte Inhalte: Für jeden Seitenaufruf wird auf dem Server Programmcode ausgeführt, der unterschiedliches HTML erzeugen kann und damit sowohl Inhalte als auch Aussehen der Seite anhand verschiedener Bedingungen anpasst – beispielsweise bestimmte Dinge ein- oder ausblenden, wenn ein Nutzer angemeldet ist. Dies kann mit verschiedenen Programmiersprachen durchgeführt werden, eine der bekanntesten ist PHP. Die grundsätzliche Funktionsweise ist dabei immer gleich: Der Webserver liefert z.B. eine PHP-Datei nicht direkt aus, sondern führt den Programmcode aus. Dieser Programmcode enthält eine Logik, die HTML erzeugt. Dieses HTML kann jedoch bei jedem Aufruf anders aussehen. Ein Beispiel wäre, wenn der Programmcode das aktuelle Datum mit der Uhrzeit ausgibt. Dies würde sich sekündlich ändern, dadurch sieht der generierte HTML-Inhalt jedes mal anders aus.

Welche Vorteile bringt uns das? Eine ganze Reihe:

  • Wir können Daten aus verschiedenen Datenbanken beziehen oder speichern. Dies könnten z.B. Beiträge eines Blogs sein oder andere Inhalte
  • Das Aussehen lässt sich mit Vorlagen einheitlich gestalten und einfach verändern: Layout und Inhalt werden getrennt
  • Auf dem Raspberry Pi besonders interessant: Es lassen sich Daten ausgeben oder darstellen, die von Sensoren oder anderen angeschlossenen Geräten bezogen wurden. Ist beispielsweise ein Temperatursensor angeschlossen, kann man sich dessen Messwerte anzeigen lassen. Und zwar auch auf anderen Geräten, da sich eine Webseite nahezu überall öffnen lässt – egal ob Computer, Laptop, Tablet oder Smartphone
  • Funktionen wie z.B. Benutzeranmeldung/Registrierung mit entsprechenden Berechtigungen (angemeldete Benutzer können etwa Blogbeiträge erstellen) lassen sich realisieren, die sich mit rein statischen HTML-Seiten nicht umsetzen lassen

Dies kann man selbst programmieren, etwa zu Lernzwecken – muss es aber nicht. Denn es gibt auch viele fertige Systeme, die bestimmte Funktionen erfüllen. Ein Content Management System (CMS) bietet sich etwa für Webseiten oder Blogs an. Eines der bekanntesten ist WordPress. Damit kann man eine komplette Webseite oder auch Blogs ohne Programmierkenntnisse erstellen. WordPress basiert auf PHP und kann daher genutzt werden, wenn ein Webserver mit PHP eingerichtet ist.

Welche Programmiersprachen kann man für dynamische Webseiten nutzen?

PHP ist die mit Abstand am meisten genutzte Skriptsprache für dynamisch generierte Internetseiten und Webanwendungen – sie kam in rund 79% der Top 10 Millionen Seiten zum Einsatz, bei denen sich ermitteln ließ, welche Technologie sie verwenden:

Es gibt aber auch einige Alternativen. Obwohl ASP.NET, Ruby, Java, JavaScript und Python vergleichsweise wenig Verbreitung genießen, kann man mit ihnen grundsätzlich eben so dynamische Webseiten erstellen. Gerade im Bereich von Webanwendungen (die komplexer sind als reine Webseiten) sind diese tendenziell verbreiteter. Grundsätzlich lässt sich theoretisch nahezu jede Sprache nutzen. Sprachen mit einer gewissen Verbreitung haben den Vorteil vieler Ressourcen durch eine große Community bieten – etwa Lernmaterialien und verfügbaren Bibliotheken, um effizienter arbeiten zu können.

Was soll ich benutzen?

Statische Seiten können für eine einfache Internetseite ausreichen, wenn diese sich nicht großartig verändern soll. Beispielsweise zur reinen Bereitstellung von Blogartikeln, ohne Login oder andere Interaktionsmöglichkeiten. Das händische Erstellen von HTML-Seiten ist für Einsteiger ein sinnvoller erster Schritt um zu lernen – in der Praxis ist dies jedoch sehr unflexibel, vor allem in der Pflege. Hier empfiehlt sich ein CMS, welches HTML-Seiten generieren kann.

Beim Arbeiten mit dem Raspberry Pi wird man mit statischen Seiten schnell an Grenzen stoßen. Spätestens wenn man z.B. mit Sensordaten arbeiten möchte. PHP wird aufgrund seines einfachen Einstiegs oft für Anfänger empfohlen, bietet gegenüber ASP.NET/Java beispielsweise eine schwache Typisierung. Jede dieser Technologien hat ihre eigenen Vor- und Nachteile, die den Rahmen dieses Beitrages sprengen würden.

Als Anfänger halte ich dies für sekundär. Wichtig ist, dass man grundlegende Konzepte lernt. Bei einer einzigen Sprache wird man heutzutage ohnehin kaum bleiben, was darüber hinaus den Horizont schärft. Wie soll man auch das beste Werkzeug für eine Aufgabe finden, wenn man nur eine einzige Sprache in der Praxis kennt? Wer z.B. nur PHP-Erfahrung besitzt, kennt starke Typisierung nicht. Ein reiner Java oder C# Entwickler dagegen kann schwache Typisierung nicht einschätzen.

Auch wenn PHP seine Schwächen hat, ist es kein Fehler, sich mit dieser Sprache zu beschäftigen. Solltest du dir – aus welchen Gründen auch immer – zunächst eine andere Sprache anschauen möchten, ist dies ebenfalls in Ordnung. Mit einem gewissen Bereich an Grundlagen wirst du dich in jeder Sprache beschäftigen.

Warum bietet sich der Raspberry Pi für das Betreiben einer Homepage an?

Wie Anfangs erwähnt, benötigt jede Internetseite einen Server, der 24/7 läuft – sonst ist sie nicht erreichbar. Dafür kann man einen kommerziellen Hoster wählen. Kostenfreie Anbieter bieten jedoch oft nicht die beste Leistung. Auch bei kostenpflichtigen Hostern gibt es Einschränkungen, je nach Anwendungszweck und Bedarf. Für eine private Homepage reicht der Pi leistungstechnisch oft völlig aus. Aufgrund seines geringen Strombedarfes ist er eine gute Möglichkeit, um flexibel als Mini-Server zu dienen.

Darüber hinaus bietet er weitreichende Möglichkeiten: Beispielsweise kann er Sensordaten auslesen und auf einer Homepage darstellen. Außerdem lassen sich zusätzliche Anwendungen darauf betreiben. Neben der eigenen Webseite könnte man etwa eine kleine private Cloud hosten. Dies würde in öffentlichen Clouds zusätzliche Kosten verursachen und man besitzt nicht die Datenhoheit. Ausländische Anbieter bieten oft zudem ein deutlich geringeres Datenschutzniveau, vor allem in unsicheren Drittstaaten wie den USA.

Auch wenn der Pi viel kann, ist er kein Allheilmittel. Für besonders umfangreiche Seiten mit vielen Besuchern ist er möglicherweise zu schwach. Ein Internetanschluss mit einer gewissen Uploadbandbreite ist ebenfalls notwendig. Wer in einem sehr schlecht ausgebauten Gebiet wohnt, hat diese Möglichkeit ggf. gar nicht und muss zu einem externen Hoster greifen. Dies ist im Einzelfall zu prüfen und hängt zudem von euren Anforderungen ab. Für eine einfache textbasierte Homepage sind die Anforderungen geringer, wie wenn dort z.B. hochauflösende Bilder bereitgestellt werden.

Leave a Reply