Aus diesem Grund setzen wir auf den schnellen Webserver Nginx und PHP in Verbindung mit dem Bytecode Cache APC, welcher den kompilierten PHP Code zwischenspeichert.
Installation
Zunächst muss ein passendes Betriebssystem auf dem Raspberry Pi installiert werden. Hierzu verwenden wir am besten Raspbian.
Nach einem Update des Systems mittels
sudo apt-get update
sudo apt-get upgrade
können wir die benötigten Module installieren.
sudo apt-get install nginx php5 php5-cgi php5-fpm php5-gd php-apc
Memory Split
Standardmäßig teilt sich die GPU und die CPU auf dem Raspberry Pi den Arbeitsspeicher von 512 MB auf. Da wir auf einem Webserver in der Regel keine grafische Oberfläche benötigten, kann der der maximale Speicher für die CPU und damit für den Webserver reserviert werden.
Die Anpassung erfolgt über die Datei /boot/config.txt. Diese lässt sich am einfachsten mit dem Editor nano bearbeiten.
sudo nano /boot/config.txt
In der Datei die nachfolgende Zeile anfügen. Hiermit geben wir der GPU das Minimum von 16 MB.
Nginx einrichten
Nun wird der Webserver Nginx konfiguriert. Dies erfolgt über die Konfigurationsdatei /etc/nginx/sites-enabled/default.
Die vHosts werden in den server{} Blöcken definiert. Im ersten größeren Block befindet sich bereits eine typische Konfiguration. In dieser setzen wir nun die Index Dateien und aktivieren den Handler für PHP.
index index.html index.htm index.php;
location ~ ^(.+?\.php)(/.*)?$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#
# # 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_params;
fastcgi_param SCRIPT_FILENAME $document_root$1;
}
Worker Prozesse
In der Standardkonfiguration startet Nginx 4 Workerprozesse zur Bearbeitung von Anfragen. Auf Mehrkernsystemen bietet das einen Performancevorteil. Da das Raspberry Pi nur einen CPU Kern besitzt erzeugt diese Funktion nur unnötige Last.
Daher editieren wir die Konfigurationsdatei /etc/nginx/nginx.conf wie folgt.
worker_processes 1
APC einrichten
Bevor der PHP Bytecode Cache von APC verwendet werden kann, muss dieser aktiviert und konfiguriert werden. Dies wird über die Datei /etc/php5/conf.d/20-apc.ini vorgenommen.
extension=apc.so
apc.enabled=1
apc.file_update_protection=2
apc.shm_size=32M
apc.include_once_override=0
apc.shm_segments=1
apc.gc_ttl=7200
apc.ttl=7200
apc.num_files_hint=1024
apc.enable_cli=0
Um die Konfiguration zu übernehmen wird der Webserver und PHP-FPM Dienst neugestartet.
sudo service nginx restart
sudo service php5-fpm restart
Weboberfläche
cp /usr/share/doc/php-apc/apc.php /usr/share/nginx/www/
Im Anschluss kann man das Interface unter der IP des Webservers aufrufen.
http://192.168.1.121/apc.php
Dienste konfigurieren
Abschließend stellen wir noch sicher, dass alle Dienste auch beim Systemstart gestartet werden.
sudo update-rc.d php5-fpm defaults
sudo update-rc.d nginx defaults
Verzeichnis / Document Root
Der Pfad in dem nun die HTML / PHP Dateien abgelegt werden lautet wie folgt.
/usr/share/nginx/www/
Dieser kann natürlich über die Nginx Konfigurationsdatei jederzeit über die Option root angepasst werden.
Htaccess / ModRewrite
Nginx unterstützt keine Htaccess Dateien über welche normalerweise auch Rewrite Regeln angelegt werden. Diese sind unter anderem vom Apache Webserver bekannt.
Mit Nginx werden diese Parameter in abgewandelter Form direkt in der Konfigurationsdatei /etc/nginx/sites-enabled/default hinterlegt.
Hierzu kann der Nginx Online Konverter für Htaccess Dateien verwendet werden.
Fazit
Im Test erreichten wir mit Nginx und 200 gleichzeitigen Sessions eine Transaktionsrate von 352.43 Transaktionen pro Sekunde. Der Apache2 erreichte auf dem Raspberry Pi 221.01 Transaktionen pro Sekunde.
Dies entspricht einer Steigerung um knapp 60%. Damit lohnt sich der dennoch überschaubare Konfigurationsaufwand definitiv.
Quellen: Nginx Logo, Raspberry Pi Logo
Similar articles
- Raspberry Pi Mini-Computer im Test
- Raspberry Pi mit XBMC als Mediacenter
- Raspberry Pi Multi Boot einrichten
- Piwik Webanalytik im Test
- Feeds auf Facebook und Twitter verteilen
- Social Buttons mit ShareThis
- Raspcontrol Webinterface auf dem Raspberry Pi
- Nginx als Reverse Proxy - Installation und Einrichtung
- SEO URLs mit ModRewrite
- Die eigene Cloud mit ownCloud + Ubuntu
- Apache mit PHP und APC auf dem Raspberry Pi
- (PHP) Zufällige Zeichenkette
- (PHP) Sicherheit
- (PHP) RSS Feed erstellen
- APC Back-UPS Pro 900 USV im Test
- USV Management mit APCUPSd auf Debian / Ubuntu
Michael Kostka
04.04.2014 14:26
der location Abschnitt muss innerhalb des server{} Blocks stehen.
Zusätzlich muss die index Direktive mit einem Strichpunkt (;) beendet werden. Habe das oben nochmal korrigiert.
Viele Grüße
Michael
Jonesman
01.04.2014 14:18
~ $ sudo service nginx restart
Restarting nginx: nginx: [emerg] "location" directive is not allowed here in /etc/nginx/sites-enabled/default:124
nginx: configuration file /etc/nginx/nginx.conf test failed
Kennt jemand die Lösung?
Danke!