RASPBIAN: Apache2, PHP7 (FPM/FastCGI), MariaDB & phpMyAdmin installieren

Hier gibt's Anleitungen und Themen dazu.
Antworten

Themenstarter
Outi
Administrator
Administrator
Beiträge: 190
Registriert: 13.02.2015, 22:24
RasPis: 10+
Kontaktdaten:

RASPBIAN: Apache2, PHP7 (FPM/FastCGI), MariaDB & phpMyAdmin installieren

Beitrag von Outi » 08.09.2015, 13:49

History:
14.10.2018 - V01.10 - Anpassung an aktuelles Raspbian Stretch
08.09.2015 - V01.00 - Erste Fertigstellung



Hinweis:
Diese Anleitung/Information erhebt keinen Anspruch auf Vollständigkeit und kann Fehler enthalten und die Benutzung erfolgt auf eigene Gefahr.
Es wird keinerlei Haftung für Schäden und/oder Datenverluste übernommen.

Info:
Diese Anleitung setzt ein fertig konfiguriertes RASPBIAN voraus.

Info:
In eigener Sache:
Ich habe lange Zeit auf dem Raspberry Pi als Webserver nginx eingesetzt und setze ihn nach wie vor immer noch ein.
Da aber der Raspberry Pi seit der Version 2B und erst recht seit Version 3B und 3B+ durch seine Quadcore Architektur erheblich an Geschwindigkeit hinzugewonnen hat, spricht eigentlich nichts mehr gegen den ebenfalls sehr verbreiteten Apache 2.
Leider ist die Nutzung bei mir nun einige Jahre her aber ich habe in dieser Anleitung einen Weg beschrieben, wie die aktuelle Version unter Raspbian Stretch zum Laufen zu bekommen ist. Hier ist der Apache in der Version 2.4 integriert.

Man bedenke jedoch: Der Raspberry Pi ist nach wie vor keine Rakete und erhöhte Zugriffszahlen dürften nach wie vor zu zäher Darstellung führen.
Jedoch ist der Pi im heimischen Umfeld und/oder für eigene Zugriffe (abgesichert) aus dem Internet doch sehr brauchbar.

Ich bitte jedoch folgende Dinge zu beachten:

1. Aktuell ist in der Anleitung noch keine SSL Verschlüsselung vorhanden, dies will ich später nachholen. Daher bitte vorerst selbst nach einer solchen Lösung schauen und diese Anleitung als Start im lokalen Umfeld verstehen und erst einmal unverschlüsselte Verbindungen ins Internet unbedingt vermeiden.

2. Da ich eben länger nicht mehr mit dem Apachen gearbeitet habe, bitte ich um Nachsicht, falls Dinge inzwischen anders und/oder besser gelöst wurden/werden. Ich würde mich über Hinweise diesbezüglich freuen, auch generell zu diesem Thema.


Inhaltsverzeichnis:
(1) Apache 2 installieren
(2) PHP 7.0 mit FPM/FastCGI installieren
(3) MariaDB installieren (ersetzt MySQL unter Debian Stretch)
(4) phpMyAdmin installieren


(1) Apache 2 installieren

Um zu Starten, wird wie immer zuerst das Paketmanagement aktualisiert:

Code: Alles auswählen

sudo apt-get update && sudo apt-get upgrade
Es folgt nun die Installation des Apachen:

Code: Alles auswählen

sudo apt-get install apache2 -y
Das -y am Ende des Befehls weist die Installation darauf hin, dass alle Abfragen automatisch mit yes bestätigt werden.

Bevor wir fortfahren, erfolgt ein erster Test, ob der Apache läuft und korrekt gestartet wurde. Das hat den Vorteil, dass bei späteren Fehlersuchen zumindest bis hier her sichergestellt war, dass der Apache korrekt installiert wurde.

Im Browser wird dazu die Webseite des Apachen aufgerufen.
Wer hier die Standardanleitung aus diesem Forum für die Raspbian Installation benutzt (Raspberry Pi installieren: RASPBIAN Stretch (+Lite)) und den Hostnamen (raspberrypi) (noch) nicht geändert hat, kann den Apachen nun so aufrufen:

Externer Linkhttp://raspberrypi

oder die entsprechende IP Adresse (bei mir 192.168.178.37):

Externer Linkhttp://192.168.178.37

Ist alles korrekt, sollte sich eine Webseite in der Art zeigen (Auszug):

Bild


(2) PHP 7.0 mit FPM/FastCGI installieren

Nun geht es mit PHP 7 weiter (in Raspbian Stretch ist PHP 7.0 enthalten):

Code: Alles auswählen

sudo apt-get install php7.0 php7.0-curl php7.0-gd php7.0-fpm php7.0-cli php7.0-opcache php7.0-json php7.0-mbstring php7.0-xml php7.0-zip php7.0-mysql -y
Gegen Ende der PHP Installation werden wir darauf hingewiesen, dass PHP 7.0 FPM nicht automatisch aktiviert wurde, dieser Hinweis aber angezeigt wird, da Apache von PHP erkannt wurde:
NOTICE: Not enabling PHP 7.0 FPM by default.
NOTICE: To enable PHP 7.0 FPM in Apache2 do:
NOTICE: a2enmod proxy_fcgi setenvif
NOTICE: a2enconf php7.0-fpm
NOTICE: You are seeing this message because you have apache2 package installed.
Das holen wir nun nach:

Code: Alles auswählen

sudo a2enmod proxy_fcgi setenvif

Code: Alles auswählen

sudo a2enconf php7.0-fpm
Damit diese Änderung wirksam wird, muss der Apache diese neu einlesen:

Code: Alles auswählen

sudo systemctl reload apache2
Zum Schluss der PHP Installation wird nun noch das Apache Modul für PHP installiert:

Code: Alles auswählen

sudo apt-get install libapache2-mod-php7.0 -y
Und es erfolgt nochmals ein Reload:

Code: Alles auswählen

sudo systemctl reload apache2
Um zu prüfen, ob PHP läuft und gleichzeitig die Konfig anzuschauen, wird nun eine PHP Datei im Webserververzeichnis erstellt:

Code: Alles auswählen

sudo nano /var/www/html/info.php
Diese neue Datei füllen wir mit folgendem Inhalt:

Code: Alles auswählen

<?php
  phpinfo();
?>
Und speichern sie per <STRG><X> und der Bestätigung mit "j" oder "y" und <Return>.

Jetzt wird wieder diese Datei im Browser aufgerufen:

Externer Linkhttp://raspberrypi/info.php

Oder eben Alternativ per IP Adresse, ich beschränke mich aber ab hier nur noch auf den Hostnamen, da die Unterschiede inzwischen klar sein dürften und man in den seltensten Fällen auf die IP direkt zugegriffen wird.

Bei korrekter Funktion sollte eine Ausgabe in der Art wie hier erfolgen (Auszug):

Bild

Jetzt wird das Modul mod_actions aktiviert, um die PHP Anfragen nach FastCGI umzuleiten:

Code: Alles auswählen

sudo a2enmod actions
Auch hier wieder den Apachen Reloaden, damit diese Änderung berücksichtigt wird:

Code: Alles auswählen

sudo systemctl reload apache2
Damit die Webseite nun FPM/FastCGI berücksichtigt, wird der Standard VirtualHost entsprechend angepasst.
Hierzu laden wir diesen in den Editor:

Code: Alles auswählen

sudo nano /etc/apache2/sites-available/000-default.conf
Es erscheint nun einiges an Konfiguration, die wir um folgende Zeilen ergänzen:

Code: Alles auswählen

<VirtualHost *:80>
….
        ServerName raspberrypi
….

    <Directory /var/www/html>
        Options -Indexes +FollowSymLinks +MultiViews
        AllowOverride All
        Require all granted
    </Directory>
    
    <FilesMatch \.php$>
        # 2.4.10+ can proxy to unix socket
        SetHandler "proxy:unix:/var/run/php/php7.0-fpm.sock|fcgi://localhost/"
    </FilesMatch>

….
Die …. deuten darauf hin, dass noch weitere Einträge vorhanden sind und das oben Gezeigte zusätzlich mit eingefügt werden muss.

Wurde die obige Datei ergänzt und gespeichert, starten wir den Apachen und PHP Teil neu:

Code: Alles auswählen

sudo service apache2 restart && sudo service php7.0-fpm restart
Wenn kein Fehler auftritt, erscheint einfach nur wieder der Eingabeprompt.

Nun gilt es zu prüfen, dass der Apache auch wirklich im FPM/FastCGI Modus läuft.
Dafür rufen wir unsere zuvor angelegte Info Datei wieder auf:

Externer Linkhttp://raspberrypi/info.php

Dabei sollte am Anfang der Konfigurationsausgabe von PHP der rot eingekreiste Wert angezeigt werden:

Bild

Dieser Check sollte bei allen VirtualHosts durchgeführt werden, damit man nicht versehentlich die unsicherere Variante (ohne FPM/FastCGI) aktiviert.


(3) MariaDB installieren (ersetzt MySQL unter Debian Stretch)

Während oben die Grundlagen für einen Webserver und der Skriptsprache PHP geschaffen wurde, folgt hier die Beschreibung der in Debian/Raspbian Stretch als Standard eingeführten Datenbankschnittstelle WikipediaMariaDB.

Um MariaDB zu installieren, wird folgender Befehl eingegeben:

Code: Alles auswählen

sudo apt-get install mariadb-client mariadb-server -y
Diese Installation nimmt einiges an Zeit in Anspruch, daher bitte Geduld haben.

Danach folgt die Absicherung der Datenbank mit folgendem Befehl:

Code: Alles auswählen

sudo mysql_secure_installation
Hier ist zuerst das aktuelle Passwort des Datenbankadministrators (root) eingegeben. Wurde die Datenbank erst gerade installiert und noch kein Passwort eingegeben, ist einfach die Entertaste für kein Passwort einzugeben.

Es folgt daraufhin die Frage, ob man ein Passwort setzen möchte. Dies sollte unbedingt mit Y für Yes bestätigt werden.

Nun ist das neue Administratorpasswort einzugeben, danach ein zweites Mal zur Bestätigung (und um Tippfehler zu vermeiden).

Auf die Frage, ob anonyme Benutzer gelöscht werden sollen, ist ebenfalls mit Y für Yes zu bestätigen.

Ebenso ist die nachfolgende Frage nach dem Verbot für das entfernte Einloggen des Benutzers "Root" mit Y zu bestätigen. Somit kann sich der Benutzer "Root" nur lokal in die Datenbank einloggen und niemand sonst aus dem Netzwerk mit diesem Account.

Bei der Frage nach dem Löschen der Datenbank "Test" ist auch wieder eine Bestätigung mit Y einzugeben, da diese für eine produktive Umgebung nicht benötigt wird. Ebenso werden auch die Zugänge darauf gelöscht.

Zum Schluss folgt noch die erneute Bestätigung mit Y für das Neuladen der Datenbankprivilegien, damit die Änderungen sofort übernommen werden.

Die Installation ist hiermit beendet und die zu dem früheren MySQL kompatible Datenbank kann sofort eingesetzt werden.


(4) phpMyAdmin installieren

Zuerst wird das Paket für phpMyAdmin installiert:

Code: Alles auswählen

sudo apt-get install phpmyadmin -y
Es folgt kurz nach Installationsbeginn ein Konfigurationsfenster:

Bild

Hier ist darauf zu achten, dass unbedingt apache2 angekreuzt und unten mit <OK> bestätigt wird.

Dann wird die Installation automatisch fortgesetzt.
Dies dauert einige Zeit, da hier einige Abhängigkeiten nachinstalliert werden.
Danach erscheint wieder ein neues Fenster, in dem die Einrichtung und Konfiguration der Datenbank für phpMyAdmin durch die Bestätigung mit <JA> erfolgt:

Bild

Darauf folgt eine Passwortkonfiguration, bei der phpMyAdmin ein Passwort für den Zugriff auf MySQL bekommt. Wird hier nichts eingetragen, erzeugt die Installationsroutine ein zufälliges Passwort.

Bild

Hier ein gewünschtes Passwort vergeben, dann ein zweites Mal eingeben und damit bestätigen.
Danach ist die Installation kurz darauf beendet und man befindet sich wieder in der Eingabeaufforderung.

Es folgt am Ende wieder die bereits von weiter oben bekannte Meldung am Ende der phpMyAdmin Installation:
NOTICE: Not enabling PHP 7.0 FPM by default.
NOTICE: To enable PHP 7.0 FPM in Apache2 do:
NOTICE: a2enmod proxy_fcgi setenvif
NOTICE: a2enconf php7.0-fpm
NOTICE: You are seeing this message because you have apache2 package installed.
Dies ignorieren wir diesmal, da wir das ja bereits weiter oben getan haben und ich habe es auch getestet, eine erneute Eingabe bestätigte, dass diese Module bereits laufen.

phpMyAdmin läuft nun unter folgendem Link:

Externer Linkhttp://raspberrypi/phpmyadmin

Nach dem Aufruf im Browser erscheint die Loginmaske von phpMyAdmin:

Bild

Hier ist nun ein Login mit dem Datenbankbenutzer "phpmyadmin" und dem weiter oben definierten Passwort möglich und man erhält die folgende Startseite:

Bild

Greift man von extern auf phpMyAdmin zu, sollte eine Verschlüsselung aktiviert werden, denn sonst gehen die Abfragen im Klartext durchs Internet. Daher entweder verschlüsseln oder den Zugriff von extern blockieren.

Da aber nach der Standardkonfiguration (wie oben ausgeführt) der Benutzer phpmyadmin keine Rechte zum Anlegen und/oder bearbeiten anderer Datenbanken hat, wenn man nicht lokal am Raspberry Pi (sondern über das Netz) zugreift, gibt es zwei Möglichkeiten, dieses einzurichten:

1. dem Benutzer phpmyadmin alle Rechte geben (sollte eigentlich vermieden werden, vor allem Remote)
2. einen neuen Benutzer anlegen und diesem alle Rechte geben (auch hier die Sicherheit bedenken)

Auf jeden Fall sollte man bei einem Fernzugriff über das Internet mindestens die SSL Verschlüsselung aktivieren.

1. Möglichkeit: dem Benutzer phpmyadmin alle Rechte für MariaDB einrichten.
Dies geschieht in der Datenbank selbst, die wie folgt per Root zu starten ist:

Code: Alles auswählen

sudo mysql --user=root mysql
Es erscheint der mysql Prompt, bei dem für die Rechtevergabe des vorhandenen Benutzers phpmyadmin Folgendes einzugeben ist:

Code: Alles auswählen

GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
Damit diese Rechte sofort geändert und übernommen werden, ist folgender Befehl zum Abschluss einzugeben:

Code: Alles auswählen

FLUSH PRIVILEGES;
Danach wird mysql (MariaDB) mit exit verlassen.

Wenn jedoch einen gänzlich anderen Benutzernamen verwenden werden soll, ist die 1. Möglichkeit zu ignorieren und stattdessen die 2. Möglichkeit zu verwenden:

2. Möglichkeit: Einen neuen Benutzer anlegen und alle Rechte vergeben
Hierzu ist (wie bei Möglichkeit 1) die Kommandozeile von mysql zu starten:

Code: Alles auswählen

sudo mysql --user=root mysql
Der neue Benutzer wird wie folgt angelegt:

Code: Alles auswählen

CREATE USER 'benutzername'@'localhost' IDENTIFIED BY 'passwort';
Die Wörter benutzername und passwort sind durch eigene Kreationen auszutauschen.

Die Rechtevergabe sieht dann so aus:

Code: Alles auswählen

GRANT ALL PRIVILEGES ON *.* TO 'benutzer'@'localhost' WITH GRANT OPTION;
Auch hier ist das Wort benutzer wie im oberen Befehl gleich zu setzen.

Und zum Abschluss wieder die sofortige Rechteübernahme:

Code: Alles auswählen

FLUSH PRIVILEGES;
Der Befehl exit beendet die Datenbankkonsole wieder und führt in die Terminaleingabe zurück.

Zur Sicherheit starten wir den Apachen und PHP nochmals neu:

Code: Alles auswählen

sudo service apache2 restart && sudo service php7.0-fpm restart
Ob die erweiterte Rechtevergabe geklappt hat, erkennt man im eingeloggten phpMyAdmin links an der Anzahl der Datenbanken (mehr als 2).
Zum Test sollte eine neue Datenbank angelegt und wieder gelöscht werden.

Generell lässt sich noch empfehlen, dass ggf. für diverse Datenbanken auch unterschiedliche Benutzer mit verschiedenen Rechten konfiguriert werden können. Hierzu ist z.B. die recht ausführliche Anleitung per man mysql aufrufbar oder auch diverse Webseiten zu MySQL und MariaDB geben umfangreiche Infos.


Fortsetzungen, Korrekturen, Änderungen möglich ....

Copyright © 2018 by RasPiFun.de
;)Gruß Outi :D


Themenstarter
Outi
Administrator
Administrator
Beiträge: 190
Registriert: 13.02.2015, 22:24
RasPis: 10+
Kontaktdaten:

Re: RASPBIAN: Apache2 mit PHP7 (FPM/FastCGI), MariaDB & phpMyAdmin installieren

Beitrag von Outi » 14.10.2018, 18:33

Anpassung an aktuelles Raspbian Stretch.
;)Gruß Outi :D


Sinus
Mitglied
Mitglied
Beiträge: 8
Registriert: 02.11.2018, 20:03
Wohnort: Rheine
RasPis: 2

Re: RASPBIAN: Apache2, PHP7 (FPM/FastCGI), MariaDB & phpMyAdmin installieren

Beitrag von Sinus » 08.11.2018, 17:25

Hallo Outi,
ich konnte nach deiner Anleitung alles bis auf den phpMyAdmin installieren. Fehlermeldung: sudo apt-get install phpMyAdmin -y
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
E: Paket phpMyAdmin kann nicht gefunden werden.

Nach der Meldung habe ich phpmyadmin direkt auf dem Pi über Add/Remove Software installiert.

Wieder zurück auf die Konsole und mit dem Befehl sudo apt-get install phpMyAdmin -y die Installation angestoßen, aber der Fehler bleibt

Hast du eine Lösung??

Gruß
Thomas
Newbie der keine Ahnung von Linux hat aber zwei Pi3 besitzt :lol:
Aber er lernt ;) versucht er auf jeden Fall :lol:


Themenstarter
Outi
Administrator
Administrator
Beiträge: 190
Registriert: 13.02.2015, 22:24
RasPis: 10+
Kontaktdaten:

Re: RASPBIAN: Apache2, PHP7 (FPM/FastCGI), MariaDB & phpMyAdmin installieren

Beitrag von Outi » 08.11.2018, 20:51

Hallo Thomas,
Sorry, mein Fehler, Du musst phpMyAdmin klein schreiben, also so: phpmyadmin
Ich vermute, die Autokorrektur hat zugeschlagen ....
;)Gruß Outi :D

Antworten