Apache Webserver, PHP, SQL Datenbank und FTP Zugang auf dem Raspberry Pi einrichten
In diesem Beitrag zeige ich dir, wie du auf deinen Raspberry Pi einen Apache Webserver, die Skriptsprache PHP und eine SQL Datenbank installierst und entsprechende Dateiberechtigung vergibst.
Beitragsaktualisierung 29.07.2023
Für die Beitragsaktualisierung habe ich das Raspberry Pi OS with desktop mit Veröffentlichungsdatum 03.05.2023 auf einem Raspberry Pi 4 Modell B verwendet. Die alte Reihenfolge des Beitrages habe ich etwas verändert und inhaltlich entsprechend angepasst.
Veraltetes Beitragsvideo auf YouTube
Die Installation und Einrichtung im Video erfolgt in folgender Reihenfolge unter Verwendung der aufgelisteten Befehle.
Anmerkung: Im Gegensatz zur Videobeschreibung habe ich die folgende Aufstellung um die Installation von PHP 7 erweitert. Somit kannst du wählen, welche PHP Version du nutzen möchtest.
Warum braucht man einen Webserver?
Ein Webserver ist ein Programm, das Anfragen von Webbrowsern entgegennimmt und ihnen Webseiten oder andere Daten zurücksendet. Diese Daten bzw. Seiten können zum Beispiel Sensordaten, die du mit deinem Raspberry Pi erfasst hast, sein. Viele meiner Beiträge zum Raspberry Pi benötigen zur Ausgabe einen Webserver um die in der Datenbank gespeicherten Daten oder einfach auch die Steuerung des Einplatinenrechners über den Webserver zu ermöglichen. Schau dir hierzu zum Beispiel mal meinen Beitrag “Schrittmotor am Raspberry Pi über Webinterface steuern” oder “Mobile WebApp für die Temperaturmessung am Raspberry Pi” an.
Warum PHP?
PHP ist eine beliebte Programmiersprache, die vor allem für die Entwicklung von Webanwendungen verwendet wird. PHP steht für “Hypertext Preprocessor” und ist eine serverseitige Sprache, die in HTML eingebettet werden kann. Zu den Vorteilen von PHP zählt u.a. die:
– Einfachheit: PHP ist leicht zu erlernen und zu schreiben, da es eine klare und einfache Syntax hat.
– Flexibilität: PHP ist kompatibel mit vielen Betriebssystemen, Webservern und Datenbanken und kann mit anderen Sprachen wie JavaScript oder HTML kombiniert werden.
– Leistungsfähigkeit: PHP kann komplexe und dynamische Webseiten erstellen, die mit Datenbanken interagieren, Dateien verwalten, E-Mails versenden und vieles mehr.
Natürlich kann man auch mit Python, welches ich in vielen Projekten auf dem Raspberry Pi verwende, für Webanwendungen verwenden. Allerdings mag ich persönlich die Flexibilität von PHP in Verbindung mit JavaScript und HTML zur Ausgabe von Webseiten lieber. Einen, wie ich finde schönen Mix bieten zum Beispiel meine “Mobile WebApp für die Temperaturmessung am Raspberry Pi” oder “uart2web” Projekte.
Wozu benötigt man eine SQL-Datenbank, reicht nicht auch eine Textdatei?
Eine Textdatei kann für einfache Anwendungen ausreichen, wenn nur wenige Daten gespeichert und bearbeitet werden. Möchtest du allerdings größere Mengen an Daten verarbeiten und abfragen, ist eine SQL-Datenbank jedoch die bessere Wahl.
Vorbereitung
Wie vor jeder Veränderung an einem lauffähigen System, empfiehlt sich eine Sicherung des bestehenden Systems. Die meiner Meinung nach einfachste Möglichkeit unter Raspberry Pi OS ist die Sicherung bzw. das Klonen der SD-Karte mit dem Boardmittel SD Card Copier.
Folgende Slideshow zeigt dir die notwendigen Schritte.
Die erstellte SD-Karte ist bootfähig und eine 1:1 Abbildung der sich im Raspberry Pi befindlichen System-Karte.
Solltest du noch keinen SD-Kartenleser haben, empfiehlt sich ein SD/Micro SD-Kartenleser mit Dual-USB-Stecker. Als SD-Karte verwende ich seit Jahren in meinen RasPi’s SanDisk microSDHC Class 10 Speicherkarten.
Folgende Schritte führst du durch Befehlseingaben aus. Hierzu öffnest du das Terminal oder verbindest dich per SSH mit deinem Raspberry Pi.
HINWEIS: Du kannst alle hier verwendeten Terminaleingaben auch über Copy & Paste durchführen. Hierzu kopierst du den entsprechenden Befehl und im Terminal des Raspberry Pi verwendest du die Tastenkombination Strg+Umschalt+V – dies funktioniert auch über eine VNC Verbindung.
Wie du einen VNC-Server unter Raspberry Pi OS einrichtest, habe ich unter anderem in meinem Beitrag “VNC Server unter Raspbian Jessie with Pixel aktivieren” beschrieben.
Anlegen des Benutzer
Unter diesem Benutzer läuft der Webserver-Dienst im System.
1 2 |
sudo groupadd www-data sudo usermod –a –G www-data www-data |
Raspberry Pi updaten
Bevor wir neue Software bzw. Pakete installieren, empfiehlt sich die Aktualisierung des Systems. Hierzu gibst folgenden Befehl ein.
1 |
sudo apt update && sudo apt upgrade |
Eine Übersicht über weitere wichtige und häufig verwendete Befehle stelle ich dir auf einem kleinen Spickzettel für Raspberry Pi OS Befehle zur Verfügung.
Apache Webserver installieren
In diesem Beitrag installieren wir den Apache Webserver, dieser ist Open Source und wird unter der GNU Public License (GPL) frei zum Download angeboten. Die Installation des Apache Webserver erfolgt durch folgende Eingabe.
1 |
sudo apt-get install apache2 |
Die Abfrage “Möchten Sie fortfahren? [J/n] bestätigst du mit J.
Nach der Installation läuft der Webserver schon. Dies kannst du überprüfen indem du den Webbrowser auf dem Raspberry Pi öffnest und in die Adresszeile localhost eingibst. Alternativ kannst du hier oder in einem Webbrowser auf einem anderen Rechner im gleichen Netzwerk wie der Raspberry Pi die IP-Adresse eingaben.
Der Webbrowser sollte nun folgende Seite ausgeben.
Weitere Informationen und die Dokumentation zum Apache Webserver findest du auf der Apache HTTP Server Project Homepage.
Dateiberechtigung
Die Berechtigung für Lesen, Schreiben und Ausführen der Dateien im Server-Ordner für ALLE setzt du mit folgenden Befehlen. Das Schreiben und Ausführen ist notwendig, wenn du eine Datei in dem Ordner (z.B. SQL-Datei mit Python erstellst und mit PHP ändern möchtest).
1 2 3 |
sudo chmod g+s /var/www/html sudo chmod 777 /var/www/html sudo chown -R www-data:www-data /var/www/html |
PHP installieren
Update am 18.10.2023, mit der neuesten Version des Raspberry Pi OS – Bookworm steht jetzt die Version 8.2 zur Verfügung. Die folgenden Schritte sind daher nur interessant, wenn du mit einer älteren Version des OS arbeiten möchtest oder eine spezielle Version von PHP installieren möchtest.
Um die aktuelle Version von PHP zu installieren, gib einfach folgenden Befehl in das Terminal ein
1 |
sudo apt install php libapache2-mod-php -y |
Im ursprünglichen Beitrag war noch PHP in der Version 5 im Standard-Raspbian-Repository vorhanden. Im aktuellen Raspberry Pi OS (Stand 03.05.2023), welches aktuell auf Debian Version 11 (Bullseye) aufsetzt, ist PHP in der Version 7.4.33 enthalten. Allerdings ist auch diese Version schon nicht mehr die aktuellste Version und befindet sich schon im End of Live Stadium. Daher solltest du dir vielleicht gleich die bei Beitragsaktualisierung aktuelle Version 8.2 installieren. Wenn du die Installation mit einer neueren Raspberry Pi OS Version machst, wird wahrscheinlich die Installation von PHP 8 genauso möglich sein, wie jetzt die der Version 7.4.
Solltest du trotzdem die Version 7.4 installieren wollen, weil dein Skript oder Programm noch keine höhere Version unterstützt, gibst du im Terminal folgenden Befehl ein.
1 |
sudo apt-get install php7.4 |
Hier nochmal ein Hinweis: PHP 7.4 ist im End of Live Stadium, dies bedeutet ein erhöhtes Sicherheitsrisiko da die Version keine Sicherheits-Updates mehr erhält. Sollte dein Raspberry Pi nicht im öffentlichen Netz sein, ist dies bestimmt auch etwas verschmerzbares.
Um PHP 8.2 zu installieren, müssen wir ein Paket aus einem externen Repository unserem System hinzufügen.
Daher fügst du als erstes den GPG-Schlüssel des Repositorys mit folgenden Befehl hinzu.
1 |
sudo wget -qO /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg |
Danach fügst du das externe Repository dem System mit folgenden Befehl hinzu.
1 |
sudo echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list |
Nun installierst du das Paket des externen Repository mit den “bekannten” Befehlen zur Systemaktualisierung.
1 |
sudo apt update && sudo apt upgrade |
Danach führst du nun die Installation von PHP 8.2 aus.
1 |
sudo apt-get install php8.2 |
Weitere Informationen und die Dokumentation findest du auf der PHP Homepage.
Um zu sehen, ob die Installation geklappt hat oder um die aktuelle PHP Version, die auf deinem System installiert ist, abzurufen, gibst du im Terminal folgenden Befehl ein.
1 |
php -v |
Oder du machst es über den Webserver mit der PHP Funktion phpinfo(), die dir gleich auch noch weitere Informationen zum System liefert.
Hierzu erstellst du dir eine php-Datei mit einem Texteditor im Verzeichnis deines Webservers für die Seitenausgaben, dies ist standardmäßig \var\www\html.
Der Befehl für die Erstellung der Datei phpinfo.php mit Nano lautet:
1 |
sudo nano /var/www/html/phpinfo.php |
Der PHP-Code lautet:
1 2 3 |
<?php phpinfo(); ?> |
Wenn du die Datei gespeichert hast und die Seite in deinem Webbrowser aufrufst, müsste der Webserver folgende Seite ausgeben. in meinem Foto sieht man auch die identische Meldung zur PHP Version über das Terminal.
SQL Datenbank installieren
Für meine Projekte auf dem Raspberry Pi habe ich mich für die SQL Datenbank SQLite3 entschieden, da SQLite ist eine leichtgewichtige und eigenständige Datenbank, die keine Installation oder Konfiguration erfordert. Im Vergleich zu MySQL oder dem bei Debian und somit Raspberry Pi OS im Repository vorhandenen und moderneren MariaDB, ist SQLite kein serverbasiertes Datenbankmanagementsystem und bietet daher einige Vorteile für bestimmte Anwendungsfälle. Somit ist SQLite schneller, einfacher und flexibler als MySQL, da es keine Netzwerkverbindung oder einen separaten Serverprozess benötigt. SQLite ist ideal für eingebettete Anwendungen, mobile Anwendungen, Prototyping oder kleine bis mittlere Projekte, die keine komplexen Datenbankfunktionen benötigen. Also eigentlich genau für Anwendung auf dem Raspberry Pi.
Hinweis: Um die erfassten Daten auch über das Internet zur Verfügung zu haben, schreibe ich in meinen Projekten meine Daten neben der auf dem Raspberry Pi vorhandenen SQLite Datenbank noch in eine auf meinem Webspace angelegte SQL-Datenbank. Somit muss ich mich weniger um die Absicherung der Zugriffe von Außen auf mein Heimnetzwerk kümmern.
Installation der SQLite Datenbank in Version 3
Die SQLite3 Datenbank installierst du mit folgendem Befehl.
1 |
sudo apt-get install sqlite3 |
Das entsprechende PHP Modul für die SQLite3 Datenbank installierst du unter Nennung der verwendeten PHP-Version mit folgenden Befehl.
1 |
sudo apt-get install php7.4-sqlite3 |
oder
1 |
sudo apt-get install php8.2-sqlite3 |
Weitere Informationen und die Dokumentation findest du auf der SQLite Homepage.
Installation des SQL Datenbankmanagementsystems
Unterschied zwischen MySQL und MariaDB
MySQL und MariaDB sind zwei auf der SQL-Sprache basierende Datenbankmanagementsysteme. Sie haben viele Gemeinsamkeiten, aber auch einige Unterschiede. MySQL wurde 1995 von der schwedischen Firma MySQL AB entwickelt und ist heute im Besitz von Oracle. MariaDB wurde 2009 von einigen der ursprünglichen Entwickler von MySQL als Abspaltung (fork) gestartet, um eine freie und offene Alternative zu MySQL zu bieten. Beide Systeme sind weit verbreitet und unterstützen viele Betriebssysteme, Programmiersprachen und Anwendungen. Im aktuellen Raspbian-Repository ist MySQL nicht mehr vorhanden, es steht nur noch MariaDB zur Verfügung.
Um den MariaDB Server zu installieren, verwendest du folgenden Befehl im Terminal.
1 |
sudo apt install mariadb-server |
Die Abfrage “Möchten Sie fortfahren? [J/n] bestätigst du mit J.
Nach der Server-Installation führen wir noch die Grundkonfiguration durch. Gib dazu im Terminal den folgenden Befehl ein:
1 |
sudo mysql_secure_installation |
Folgende Angaben werden im Setup abgefragt:
Konfigurationsabfrage | empfohlene Eingabe |
“Enter current password for root (enter for none)” | eine Eingabe ist nicht notwendig, gehe weiter mit der <Enter bzw. Return bzw. Eingabe> – Taste |
“Switch to unix_socket authentication [Y/n]” | zur Nutzung des Authentifizierungs-Plugin gibst du Y ein |
“Change the root password? [Y/n]” | Vergabe des Passwortes des Benutzer “root”, zuerst gibst du Y ein, danach vergibst du das Passwort und bestätigst dieses durch Wiederholung. |
“Remove anonymus users? [Y/n]” | einen anonymen Benutzer benötigen wir nicht, daher gibst du n ein |
“Disallow root login remotely? [Y/n]” | der Benutzer “root” soll sich nur lokal anmelden können, daher gibst du hier Y ein |
“Remove test database and access to it? [Y/n]” | eine Testdatenbank wird nicht benötigt, daher kannst du sie auch mit Eingabe von Y entfernen |
“Reload privilege tables now? [Y/n]” | zum Abschluss müssen die Tabellen neu geladen werden, daher gibst du Y ein |
Solltest du, warum auch immer, noch ein Raspbian (vorherige Bezeichnung des Raspberry Pi Betriebssystems) verwenden, kannst du mit den folgenden Befehlen aus dem ursprünglichen Beitrag die MySQL Datenbank installieren. Oder du musst dir MySQL über ein Paket aus einem externen Repository zu deinem System hinzufügen.
Die Installierung von MySQL erfolgt mit folgenden Befehlen.
1 2 |
sudo apt-get install mysql-server mysql-client sudo apt-get install php5-mysql |
Bei der Verwendnung von PHP7 statt 5, führst du folgenden Befehl aus:
1 |
sudo apt-get install php7.0-mysql |
FTP Programm
Solltest du noch kein FTP Programm benutzen, so kann ich dir aus persönlicher Erfahrung das Programm FileZilla empfehlen.
Für die SFTP Verbindung zum Raspberry Pi benötigst du die IP-Adresse des RasPi in deinem Netzwerk, den Benutzernamen “pi”, das Passwort “raspberry”, wenn du es nicht geändert hast. Der Port für die Verbindung ist 22.
Hallo Wolfgang,
ich habe begonnen, aber
Um mit apt-get die Paketquelle verwenden zu können, müssen wir als nächstes die notwendigen Zertifikate hinzufügen. Führe hierzu folgende zwei Befehle aus:
sudo gpg –keyserver pgpkeys.mit.edu –recv-key CCD91D6111A06851
sudo gpg –keyserver pgpkeys.mit.edu –recv-key CCD91D6111A06851
hat nicht funktioniert.
Meldung:
KEY CCD9106111A06861 not found on keyserver
gpg: Keine gültige OpenPGP-Daten gefunden
Hallo Jürgen,
der Artikel ist leider nicht mehr auf dem aktuellsten Stand. Eine Überarbeitung steht auf meiner ToDo-Liste. Anmerken möchte ich, für die Schrittmotorsteuerung benötigst du kein PHP. Wenn du es trotzdem neben oder anstatt der Version 5 installieren willst, kannst du dies nun direkt mit “sudo apt-get install php7.0”.
Viele Grüße
Wolfgang
Hallo Wolfgang,
ich finde, Deine Videos sind nicht schlecht, nur kann ich es nicht verstehen, warum Du das, was Du zeigen und erklären willst, nicht “heran zoomst”, damit man es mitverfolgen kann. Es ist ja schön, wenn man Deinen Desktop-Hintergund sieht, aber für den Beitrag nicht relevant. Und das, was interessant ist, ist für mich jedenfalls viel zu klein, um es noch augenschonend mitlesen zu können.
Gruß
Waldemar
Hallo Waldemar,
vielen Dank für Deinen Kommentar.
Die ersten Videos habe ich noch mit den Boardmitteln von MacOS, dem QuickTime Player erstellt. Eine Zoom-Funktion stand mir nicht zur Verfügung. Da es sich um die ersten “Versuche” handelte, sind diese leider noch ohne Bearbeitung und daher auch nicht besser geworden.
Viele Grüße
Wolfgang
Hallo Wolfgang,
ich finde deine Tuts sehr gut. Es wäre allerdings noch besser, wenn man deine Eingaben auch visuell verfolgen könnte.. Im Video über die Apache- Einrichtung finden deine Eingaben auf einem briefmarkengroßem Terminalfenster statt. Vielleicht kannst du das noch besser hinkriegen.
Viele Grüße
Jürgen
Hallo Jürgen,
vielen Dank für Deinen Kommentar und den Hinweis. Werde bei Gelegenheit versuchen das Video entsprechend zu bearbeiten.
Viele Grüße
Wolfgang
Servus Wolfgang,
das wäre eine tolle Sache. Mit welchem Programm erstellst Du die Videos?
Liebe Grüße
Alfred
Hallo Alfred,
auch Dir ein Dankeschön für Deinen Kommentar. Die ersten Bildschirmvideos habe ich noch mit dem Programm Quicktime aufgenommen. Dies ist allerdings nur unter OS möglich, nicht mit der Windows Version. Für die neueren Videos verwende ich das Programm Camtasia für Mac.
Viele Grüße
Wolfgang
Hallo Wolfgang,
kann mich meinen Vorredner nur asnchließen sehr gute Anleitung
aber leider bisschen zu klein.
Die Installierung von MySQL erfolgt mit folgenden Befehlen.
1.sudo apt-get install mysql-server mysql-client
2.sudo apt-get php5-mysql
hier bei Punkt 2.fehlt noch ein install 🙂 weiter so .
Hallo,
vielen Dank für Deinen Kommentar. Das mit der Videogröße bekomme ich ohne komplette Neuaufnahme leider nicht besser hin. Den “install” Befehl habe ich an der entsprechenden Stelle eingefügt. Viele Grüße
Wolfgang
Heute habe ich es geschafft und das überarbeitete Video auf YouTube hochgeladen.
Kleiner Hinweis, alle Kommentare werden moderiert.
Dies bedeutet, der Kommentar wird vor der Veröffentlichung durchgelesen und von mir geprüft. Auch behalte ich mir vor, jeden Kommentar zu löschen, der nicht direkt auf das Thema abzielt oder nur den Zweck hat, Leser oder Autoren herabzuwürdigen.
Neuste Beiträge
Kleinen Spickzettel für Raspbian OS Befehle
Entdecke die Welt von Webnist.de
Erfahre mehr über die Hintergründe meines Blogs und wie ich dich bei deinen digitalen Projekten unterstützen kann.Kategorien
KATEGORIEN
Aktuelles Video auf YouTube
Beschreibung der Verwendung eines TTP223B Touch Sensors am GPIO Port des Raspberry Pi mit Python.
Die aktuell 6 derzeit meistbesuchten Beiträge
Beiträge mit den meisten Kommentaren
Funktional Immer aktiv
Vorlieben
Statistiken
Marketing