Debian 8 Jessie: PHP 7.0 und nginx auf dem Raspberry Pi installieren und einrichten

16
714

Das aktuelle Raspbian basiert auf Debian 8 Jessie und wird zurzeit mit PHP 5.6 ausgeliefert. Zwischenzeitlich wird mit PHP 7.0+ eine bessere PHP-Version angeboten die erhebliche Verbesserungen mit sich bringt. Besonders in den Bereichen Geschwindigkeit, Leistung und Sprache. PHP 7.0+ nutzt deutlich weniger Speicher, was wirklich optimal für den Raspberry Pi ist.

Damit PHP 7.0+ auf dem Raspberry Pi installiert werden kann, wird Zugriff auf die Entwicklerversion von Raspbian (stretch) benötigt. In Zukunft wird es allerdings auch möglich sein über ein Dist-Upgrade PHP 7.0+ zu installieren – sobald die Entwickler diese Pakete als stable freigegeben haben. Soweit ist eine Installation von PHP 7.0+ allerdings nur über ein paar kleine Umwege möglich die ich erkläre. Zusätzlich wird noch die Installation und Einrichtung des Webservers nginx in Verbindung mit PHP 7.0+ erklärt. Für beide Installationen (PHP und nginx) wird eine Installation des aktuellen Raspbian – Debian 8 Jessie vorausgesetzt.

Allgemeines:

Sources:

Zum Hinzufügen weiterer Sources wird die sources.list Datei editiert:

sudo nano /etc/apt/sources.list

Direkt unter der ersten Zeile folgendes hinzufügen:

deb http://mirrordirector.raspbian.org/raspbian/ stretch main contrib non-free rpi

Zum Speichern Strg-X, dann J und Enter drücken.

Stable Release:

Instabile Entwickler-Pakete (Stretch) vermeiden und stabile Jessie-Pakete bevorzugen.

Zum Hinzufügen der Regel wird die preferences Datei editiert:

sudo nano /etc/apt/preferences

Folgendes hinzufügen:

Package: *
Pin: release n=jessie
Pin-Priority: 600

Zum Speichern Strg-X, dann J und Enter drücken.

Raspbian Update / Upgrade:

Paketlisten aktualisieren:

sudo apt-get update

Dist-Upgrade:

sudo apt-get dist-upgrade

Upgrade:

sudo apt-get upgrade

Kernel- und Firmware-Update (optional):

RPI-Update:

sudo rpi-update

Reboot:

sudo reboot

PHP 7.0 installieren:

Pakete installieren:

sudo apt-get install -t stretch php7.0 php7.0-cli php7.0-cgi php7.0-common php7.0-dev php7.0-fpm php7.0-curl php7.0-gd php7.0-bz2 php7.0-mcrypt php7.0-json php7.0-tidy php7.0-mbstring php7.0-xml php7.0-zip php7.0-opcache php-memcached php-redis php-pear

PHP Version:

Version abfragen:

php -v

Beispielausgabe:

pi@raspberrypi:~ $ php -v
PHP 7.0.15-1 (cli) (built: Jan 25 2017 10:17:41) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.0.15-1, Copyright (c) 1999-2017, by Zend Technologies

nginx Webserver Installation:

nginx installieren:

Pakete installieren:

sudo apt-get install -t stretch nginx-full

nginx Version:

Version abfragen:

nginx -v

Beispielausgabe:

pi@raspberrypi:~ $ nginx -v
nginx version: nginx/1.10.2

nginx starten:

Webserver starten:

sudo /etc/init.d/nginx start

nginx testen:

Über den lokalen Webbrowser auf dem Raspberry Pi:

http://localhost/

Über einen Computer im Netzwerk:

Vorher die IP des Raspberry Pis feststellen

hostname -I

Beispielausgabe:

pi@raspberrypi:~ $ hostname -I
192.168.178.24 2002:25c9:924a:0:e99b:5ec7:c248:8798

Über den Webbrowser des Netzwerkrechners:

http://192.168.178.24

Wenn nginx erfolgreich installiert wurde und läuft sollte folgendes angezeigt werden:

nginx Webserver Konfiguration:

Konfigurationsdatei:

In das Verzeichnis wechseln und eine Sicherungskopie erstellen:

cd /etc/nginx/sites-available
sudo cp default default-backup

Konfigurationsdatei editieren und PHP für nginx aktivieren:

sudo nano /etc/nginx/sites-available/default

Folgende Änderungen und Ergänzungen durchführen:

Diese Zeile finden:

index index.html index.htm index.nginx-debian.html;

Ändern nach:

index index.php index.html index.htm index.nginx-debian.html;

Diesen Abschnitt finden:

# pass PHP scripts to FastCGI server
#
#location ~ \.php$ {
#	include snippets/fastcgi-php.conf;
#
#	# With php-fpm (or other unix sockets):
#	fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
#	# With php-cgi (or other tcp sockets):
#	fastcgi_pass 127.0.0.1:9000;
#}

Ändern nach:

# pass PHP scripts to FastCGI server
#
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
#	include snippets/fastcgi-php.conf;
#
#	# With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
include fastcgi.conf;
#	# With php-cgi (or other tcp sockets):
#	fastcgi_pass 127.0.0.1:9000;
}

Zum Speichern Strg-X, dann J und Enter drücken.

Konfigurationsdatei neu laden:

sudo /etc/init.d/nginx restart
sudo /etc/init.d/php7.0-fpm restart

PHP auf dem nginx Webserver testen:

Verzeichnis wechseln und index.php Datei erstellen:

cd /var/www/html
sudo nano index.php

Folgenden Inhalt in die leere Datei einfügen:

<?php echo phpinfo(); ?>

Zum Speichern Strg-X, dann J und Enter drücken.

Dann den Webserver testen ob PHP korrekt ausgeführt wird. Webbrowser lokal mit localhost oder im Netzwerk via IP des RasPis aufrufen. Siehe oben: nginx testen.

Wenn nginx erfolgreich konfiguriert wurde sollte die PHP-Info angezeigt werden.

Fertig! Jetzt läuft unter Raspbian ein nginx Webserver zusammen mit PHP 7.0

16 KOMMENTARE

  1. Hi, super Anleitung. Bekomme aber einen Fehler: 502 Bad Gateway nginx/1.10.2
    Hat jemand eine Idee woran das liegen könnte? Würde gerne meine Projekte PHP7 ready machen.

  2. Der Fehler 502 Bad Gateway nginx/1.10.2 könnte auf ein Socketproblem hinweisen.

    Bitte in der Datei /etc/nginx/sites-available/default den Eintrag auf Korrektheit überprüfen:

    fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;

  3. Mein Fehler. Da habe ich wohl ein php vergessen und hatte folgenden Eintrag:
    fastcgi_pass unix:/var/run/php7.0-fpm.sock;

    Habe den Eintrag dann korrigiert:
    fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;

    Jetzt läuft alles super und ich kann mich auf meinem Raspberry Pi 2 B endlich mit PHP7 beschäftigen.

    Danke nochmals für die schnelle Unterstützung und die gute Anleitung. Das rockt!

  4. Hallo Andreas,
    ich bin Anfänger und hatte testweise schonmal Apache mit php und MySQL getestet … lange her.
    Nun möchte ich hier wieder einsteigen.
    Frage: Wird nicht für PHP eine Datenbak benötigt? Vieleicht am besten MariaDB?

    Vielen Dank!

    • Hallo WolleP,

      Du kannst PHP auch ohne Datenbank-System verwenden. Sicherlich macht es Sinn auch eine Datenbank (z.B. MariaDB, MySQL, PostgreSQL oder das Leichtgewicht SQLite) zu installieren. Allerdings benötigen die Datenbanksysteme einiges an Ressourcen auf dem Raspberry Pi. Für kleinere Anwendungen würde ich SQLite empfehlen da sich die gesamte Datenbank in einer Datei befindet.

  5. Super, vielen Dank, das hilft einem Anfänger schonmal im Grundverständnis der Dinge.
    Vielleich hast du ja Lust noch die Installation von SQLite oder MariaDB an deine Anleitung dranzuhängen?
    Dann hätte man schonmal ein Grundgerüßt, auf das man aufsetzen kann. Denn du weißt ja: Aller ANFANG ist schwer.

    Aber toll, dass es deine nginx / php Installationsanleitung einschließlich kompetenter Antworten gibt!

  6. Hallo Andreas,
    Verstehe ich es richtig, dass …
    1) Für einfache Webseiten ausschließlich nginx oder Apache benötigt wird; Ohne php und ohne Datenbank?
    2) php für dynamische Webseiten gebraucht wird (Wie du sagtest: Auch ohne Datenbank)?
    3) Eine Datenbank – MariaDB, MySQL, … – Für komplexere dynamische Webseiten benötigt wird?

    Webseiten werden mit HTML gemacht, das ist soweit klar (SelfHTML). Aber kannst du einen Einstieg in php empfehlen?

    Herzlichen Dank für deine Gedult!

    • Hallo WolleP,

      Zu 1) Ja, für einfache Webseiten wird nur ein Webserver (z.B. nginx) benötigt.
      Zu 2) Ja, für kleinere Projekte kann man auch PHP ohne Datenbank nutzen. Zum Beispiel für Rechen- und Stringoperationen die einfaches HTML nicht hergeben.
      Zu 3) Ja, für größere Projekte benötigt man u.U. eine Datenbank.

      Ich kann einen Einstieg in PHP empfehlen, da PHP und HTML sehr gut zusammenarbeiten. PHP ist sehr mächtig und bringt viele Möglichkeiten mit ein Projekt zu realisieren.

  7. Ach misst … immer fällt mir hinterher noch was ein…
    4) Du sagtest: Debian 9 „kommt mit“ PHP7 und MariaDB. Ist es richtig, dass diese (bei Bedarf) trotzdem erst installiert werden müssen?

HINTERLASSEN SIE EINE ANTWORT

Bitte geben Sie Ihren Kommentar ein!
Please enter your name here