Website-Icon RandomBrick.de

Raspberry Pi: Nginx und PHP installieren und einrichten

Einige Projekte für den Raspberry Pi benötigen einen Webserver auf dem beispielsweise Software wie Owncloud oder WordPress installiert werden kann. Als Webserver für den Raspberry Pi kommen Apache oder Nginx in Frage. Nginx wird die bessere Performance für leistungsschwache Hardware nachgesagt, weshalb ich mich für diesen Server entschieden habe.

Die Diskussion welcher Server besser für den Raspberry Pi geeignet ist, kann hier und hier nachgelesen werden. Da meine Projekte weder viele Nutzer noch eine große Anzahl an Anfragen produzieren werden, dürfte es letztendlich egal sein. Diese Anleitung erklärt die Installation von Nginx und PHP auf dem Raspberry Pi.

Nginx und PHP auf dem Raspberry Pi installieren (Bild: Benjamin Blessing).

Raspberry Pi: Nginx und PHP installieren und einrichten

Wie bei allen Anleitungen gilt auch hier, ihr müsst keine Profis sein, nur den Willen zu haben und etwas zu recherchieren, falls es bei euch klemmt. Ansonsten genügt das Befolgen der hier genannten Schritte. Zur Durchführung wir eine lauffähige Distribution wie Raspbian erwartet. Anleitungen dazu finden sich hier:

Zudem kann auf Wunsch die Installation von Nginx ganz bequem via SSH per Kommandozeile vorgenommen werden. Wie man mit dem Raspberry Pi eine SSH-Verbindung aufbauen kann, erklärt der Beitrag.

Raspbian upgraden

Vor der Installation von Nginx auf dem Raspberry Pi werden alle Pakete des Betriebssystems auf den aktuellen Stand gebracht. Das erfolgt mit folgendem Befehl über den Terminal:

sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get upgrade

PHP 7.0 auf dem Raspberry Pi installieren

Raspbian basiert auf Debian Jessie und wird mit PHP 5.6 ausgeliefert. Das ist soweit auch gut aber zwischenzeitlich ist mit PHP 7.0 eine bessere Option auf dem Markt. PHP 7.0 wurde im Dezember 2015 vorgestellt und bringt erhebliche Verbesserungen in den Bereichen Leistung, Sprache und nutzt dabei deutlich weniger Speicher. Optimal für den Raspberry Pi.

Damit PHP 7.0 auf dem Raspberry Pi installiert werden kann, wird Zugriff auf die Entwicklerversion von Raspbian benötigt. Diese trägt den Codename stretch. Dazu ist die Datei sources.list abzuändern welche von Aptitude (apt-get) genutzt wird.

sudo nano /etc/apt/sources.list

Unter der ersten Zeile die das Wort jessie enthält, ist folgende Zeile einzufügen:

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

Gespeichert wird mit Strg + X, Y und dann Enter drücken.

Damit würden alle Installationen und Updates automatisch die neusten verfügbaren Dateien aus dem stretch Release ziehen. Diese sind jedoch nicht immer 100 Prozent stabil. Damit zukünftig keine instabilen Pakete installiert werden, werden automatisch alle Pakete gezwungen, das jessie Release mit einer höheren Priorität zu wählen.

sudo nano /etc/apt/preferences

Hier ist folgendes einzufügen:

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

Gespeichert wird mit Strg + X, Y und dann Enter drücken.

Anschließend werden die Updates noch einmal ausgeführt mit:

sudo apt-get update

Jetzt erfolgt die Installation von PHP 7.0 auf dem Raspberry Pi aus dem stretch Release inklusive aller PHP-Pakete.

sudo apt-get install -t stretch php7.0 php7.0-curl php7.0-gd php7.0-fpm php7.0-cli php7.0-opcache php7.0-mbstring php7.0-xml php7.0-zip

Mit nachfolgendem Befehl lässt sich die Funktion von PHP testen:

php -v

Anschließend sollte folgende oder ähnliche Ausgabe erscheinen:

PHP 7.0.7-4 (cli) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

Fertig. PHP 7.0 wurde erfolgreich auf dem Raspberry Pi installiert.

Nginx auf dem Raspberry Pi installieren

Wie bei PHP 7.0 gibt es im stretch Release eine neue und verbesserte Version mit der Nummer 1.9. Diese wird wie folgt installiert:

sudo apt-get install -t stretch nginx

Nginx auf dem Raspberry Pi starten

Mit folgende Befehl wird Nginx gestartet:

sudo /etc/init.d/nginx start

An dieser Stelle empfiehlt es sich kurz zu testen, ob die Installation von Nginx auf dem Raspberry Pi erfolgreich war. Nginx erstellt eine HTML Datei in Web-Ordner. Diese default Webseite lässt sich wie folgt aufrufen:

Über den Browser des Raspberry Pis:

http://localhost/

Über einen Computer im Netzwerk. Dazu benötigt ihr die IP-Adresse eures Raspberry Pis. Wenn ihr diese nicht kennt, zeigt folgende Befehl euch diese an:

hostname -I

Über einen beliebigen Computer im Netzwerk könnt ihr die Webseite dann unter der IP aufrufen. Beispielsweise:

http://192.168.1.10

Wenn ihr das nachfolgende Bild sieht, wart ihr bis hier erfolgreich. Einige weitere Schritte sind für die abschließende Installation von Nginx auf dem Raspberry Pi notwendig.

Nginx auf dem Raspberry Pi (Bild: Nginx).

Nginx auf dem Raspberry Pi konfigurieren

Die Standardwebseite liegt im Verzeichnis /usr/share/nginx/www unter Raspbian. Die index.html kann von euch beliebig angepasst, gelöscht oder durch eine andere ersetzt werden. Das Standardverzeichnis wird über eine Datei in /etc/nginx/sites-available festgelegt. In dieser Datei befindet sich eine Zeile die mit root beginnt. Hier kann das Verzeichnis beliebig angepasst werden.

Nginx liefert eine default Datei für die Konfiguration mit. Da wir diese modifizieren, empfiehlt es sich davon eine Sicherungskopie zu erstellen. Es wird eine Kopie von default mit dem Namen default-do-not-touch angelegt:

cd /etc/nginx/sites-available

sudo cp default default-do-not-touch

cd

Weitere Informationen zum Kopieren unter Linux erklärt der verlinkte Beitrag.

Im nächsten Schritt ist PHP für Nginx zu aktivieren:

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

Dort ist folgende Zeile zu suchen:

index index.html index.htm;

Bei mir war diese bei Zeile 39. Um zu sehen in welcher Zeile der Cursor sich befindet, einfach Strg + C drücken. In die oben genannte Zeile muss noch ein index.php eingefügt werden, so dass die Zeile anschließend wie folgt aussieht:

index index.php index.html index.htm;

Zusätzlich ist noch etwas weiter unten in der default Datei weitere Zeilen anzupassen. Scrollt etwas runter bis ihr folgenden Abschnitt findet:

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
#       include snippets/fastcgi-php.conf;
#
#       # With php5-cgi alone:
#       fastcgi_pass 127.0.0.1:9000;
#       # With php5-fpm:
#       fastcgi_pass unix:/var/run/php5-fpm.sock;
#}

Durch das Entfernen des # werden diese Zeilen aktiviert. Das ist für drei Zeilen vorzunehmen. Zusätzlich müssen noch einige Zeilen eingefügt werden, diese sind fett markiert.

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
#       include snippets/fastcgi-php.conf;
#
#       # With php5-cgi alone:
#       fastcgi_pass 127.0.0.1:9000;
#       # With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
               fastcgi_index index.php;
               include fastcgi.conf;
}

Ebenso muss der Verweis auf php5 auf die Version php7.0 aus dem stretch-Release abgeändert werden. Siehe fett gedruckte Zeile.

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

Gespeichert wird mit Strg + X, Y und dann Enter drücken. Abschließend muss die Konfigurationsdatei neu geladen werden:

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

Jetzt läuft auf dem Raspberry Pi unter Raspbian ein Nginx Server zusammen mit PHP 7.0. Viel Spaß.

Teste PHP auf dem Nginx Server

Bevor mit weiteren Projekten fortgefahren wird, ist zu testen ob PHP unter Nginx auf dem Raspberry Pi läuft. Dazu wird eine index.php im Webverzeichnis erstellt:

cd /var/www/html

sudo nano index.php

In die neue Datei ist folgende Zeile einzufügen:

<?php echo phpinfo(); ?>

Gespeichert wird mit Strg + X, Y und dann Enter drücken. Jetzt den Browser unter localhost auf dem Raspberry Pi oder der IP auf einem externen Computer neu laden. Jetzt sollten die Versionsinformationen zu PHP erscheinen.

Die PHP Informationen über den Nginx-Server (Bild: Nginx).

Persönliche Meinung

Nach der Installation von Nginx auf dem Raspberry Pi zusammen mit PHP lassen sich zahlreiche Projekte wie beispielsweise Owncloud auf dem Raspberry Pi realisieren. Damit lässt sich mit minimalem Aufwand eine Alternative zu Dropbox für Zuhause und unterwegs aufbauen.

Die mobile Version verlassen