Fernzugriff auf den Raspberry Pi – Teil 4 (HTTP – Der eigene Webserver)

0
0

Werbung:

Der eigene Webserver

Auch das Anbieten von Webseiten ist eine Möglichkeit den Raspberry Pi mit der Aussenwelt kommunizieren zu lassen. Komisch? Ganz und gar nicht! Auf einer eigenen Webseite kann man durchaus Systemdaten anzeigen lassen, Dateien ablegen und abrufen und sogar Abläufe steuern.

Den Webserver und „Zubehör“ auf den Pi bringen

Zunächst einmal ist eine Internetseite nichts anderes als ein Dokument, das in einem Browser dargestellt wird. Genauer: Gibt man eine Internetadresse ein wie www.xyz.de, dann verbindet sich der Browser mit einem sogannten „Nameserver“. Dieser sagt dem Browser dann, zu welcher IP Adresse die Anfrage gehen soll. Zum Beispiel antwortet er, dass xyz zu der IP-Adresse 127.0.0.1 gehört. (Okay.. das ist nur ein Beispiel, es wird nicht funktionieren). Daraufhin fragt der Browser dann die IP-Adresse 127.0.0.1 auf Port 80 an (Port 80 ist nämlich der Standardport für das HTTP Protokoll über das Webseiten ausgeliefert werden. Auf 127.0.0.1 sollte nun ein Server diese Anfrage verbeiten können. Was viele nicht wissen: Die Angabe von „www.“ vor dem xyz, sagt im Prinzip nur aus, dass der Webserver in dem Verzeichnis www nach den darzustellenden Daten suchen soll. Dieser Blog liegt zum Beispiel im „Internetordner“ flying-bordercollies.de im Unterverzeichnis „thomas“.

Werbung:

Für Raspian auf dem RaspberryPi würde sich jetzt Apache in Version 2 oder die leichtgewichtige Webserverinstallation ngix empfehlen. Da die meisten Benutzer „schon mal was von Apache gehört haben“ werde ich diesen verwenden, vor allem, weil er sehr viele Möglichkeiten bietet, die ich auch in weiteren Projekten noch vorstellen werde.

Weil „moderne“ Webseiten dynamisch und nicht mehr statisch sind, werden wir auch gleich noch PHP und MySQL installieren. Das ist so zu sagen DAS Gespann, welches alle grossen CMS-Systeme verwenden. Verwirrt? Wir fangen mal von vorne an:

Was ist der Unterschied zwischen statischen und dynamischen Webseiten? Was ist PHP, MySQL und all das?

In den Anfängen des Internets gab es nichts anderes als statische Webseiten. Sie wurden oft genutz um Informationen einfach nur Darzustellen. Sei es eine Firmenpräsenz als Visitenkarte oder um Photos zu veröffentlichen. Egal wer am Browser saß, immer wurde der gleiche Inhalt mehr oder weniger schön präsentiert. „Programmiert“ wurde in einer „Sprache“, die sich HTML (Hyper Text Markup Language (Übertext Auszeichnungssprache… selbst im deutschen, kann man nichts mit der Bezeichnung anfangen). Diese Sprache stellte das Grundgerüst für die Webseite dar. Hier wird genau definiert, welcher Text wo zu stehen hat, ebenso gab es rudimentäre Tabellen usw. . Später wurde dann CSS (Cascading Style Sheets also kaskadierend aufgebaute Stilanweisungen) eingeführt, die es ermöglichten (durch einen Wechsel des Stylesheets) verschiedene Ausgaben zu realisieren. So konnte man zum Beispiel für den Ausdruck ein günstigeres Format anbieten, oder für unterschiedliche Browserversionen (Netscape, Internet Explorer, Opera, Firefox usw. ) angepasste und optimierte Seiten anbieten. Dies war schon der erste Schritt in Richtung Dynamik, weil hier begonnen wurde, die Inhalte an das Ausgabegerät anzupassen. So richtig dynamisch wurde es dann aber durch PHP in Verbindung mit MySQL. PHP bedeutete ursprünglich „Personal Homepage Tools“, wurde dann aber umbenannt in das Acronym „Hypertext Preprozessor“, was die eigentliche Aufgabe auch besser beschreibt. Mittels PHP ist es möglich die Inhalte einer Webseite noch vor dem Anzeigen anzupassen und erst dann ein gerade eben vom Server angefertigtes HTML Dokument auszuliefern. Die Rechenlast liegt also auf dem Server (Eine Anmerkung, weil der Raspberry Pi nicht unbedingt eine Rennmaschine ist). Unterstützung findet PHP aus Daten, die in einer Datenbank liegen, die mittels SQL abgefragt wird. SQL ist wiederum eine „Sprache“ um mit einer Datenbank zu kommunizieren. SQL steht für „Structured Query Language“ also „Strukturierte Abfrage Sprache“. Hierdurch konnte etwas realisiert werden, was das Internet komplett umgekrempelt hat: Die Trennung von Inhalt und Darstellung! Hierdurch war es erstmals möglich Benutzern eine eigen für sie angefertigte Seite ohne viel Aufwand zu präsentieren. Mehrsprachigkeit kann man einfach durch zwei Datenbankeinträge erreichen, die einmal eine deutsche und zum andern eine bspw. englische Version beinhalten. Das Design kann je nach Benutzer umgeschaltet werden. Moderne CMS (Content Managment Systeme = Inhaltsverwaltungssysteme) basieren auf dieser Technik. Deswegen benötigt man hier auch sogenannte Themes, also Dateien, in denen steht, wie der Inhalt darzustellen ist. Das Thema ist nur angerissen, aber es ist zu komplex und nur zum grundlegenden Verständnis hier erwähnt.

Installation des Servers und der Hilfsmittel

Wir öffnen wieder ein Terminal, bzw. die Konsole und geben der Reihe nach folgende Befehle ein:
Hier wird je nach Paket immer wieder mal eine Nutzereingabe erwartet. Sei es ein Benutzer, der angelegt werden muss, eine Entscheidung oder ein Passwort. Da das alles im Prinzip selbsterklärend ist, verzichte ich auf Details. Wichtig ist nur: Wähle möglichst unterschiedliche und lange Passwörter, die du dir gut merken oder zumindest sehr sicher aufbewahren solltest. Ich benutze zur Verwaltung meiner vielen Passwörter die Freeware Keepass2android. (Auf meinem Mobiltelefon).

sudo aptitude update
(Aktualisieren der Paketquellen)
sudo aptitude upgrade
(Frische Updates installieren)
sudo aptitude install apache2
(Den Webserver apache2 installieren)
sudo aptitude install php5 libapache2-mod-perl2 php5-curl php5-dev php5-gd php5-imap php5-ldap php5-mysql php5-odbc php-pear php-apc
(Installation von PHP Version 5 mit einigen wichtigen Modulen)
sudo aptitude install mysql-server mysql-client
(Installation von MySQL, einem für private Nutzung kostenfreien Datenbank und Datenbankabfragesystems)
sudo aptitude install libapache2-mod-auth-mysql phpmyadmin
(Graphische Webseitenoberfläche, die die Benutzung von MySQL enorm erleichtert)
sudo nano /etc/php5/apache2/php.ini
Hier den Eintrag:
extension=mysql.so

einfügen. Damit wird PHP mitgeteilt, dass MySQL als Datenbanksystem verfügbar ist. Wie man den Webserver und alles drumherum absichert erkläre ich in einem eigenen Artikel in dieser Serie.

Der Webserver ist jetzt bereit und kann unter Eingabe der IP-Adresse im eigenen Heimnetz angesurft werden. Hier sind noch keine Inhalte hinterlegt, deswegen wird erstmal nur „It works!“ auf dem Bildschirm erscheinen. PHPMyAdmin ist mit „[ipadresse]/phpmyadmin“ erreichbar.  Um diesen Server von „Aussen“ also dem Internet zu erreichen, muss auch hier eine Portweiterleitung im Router erfolgen. Vorschläge zur Realisierung habe ich bereits in diesem Artikel (gegen Ende) gegeben.

 

0
0

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.