Debian WebServer – NGINX mit php5-fpm und MySQL

Da ich mich von Apache2 aufgrund der Performance verabschieden musste, habe ich den Weg zu nginx mit php5-fpm gefunden.

Ich habe mich früher immer gesträubt, nginx zu benutzen. Mit statischen Dateien ist nginx um vieles schneller als Apache. Allerdings bei php dreht sich der Spieß um. Hierbei ist nginx ziemlich ähnlich schnell wie Apache, aber schon ab 10 Seitenaufrufen/Sekunde wars das mit nginx. Nginx wurde durch die Extraverarbeitung mit php extrem langsam und verbrauchte Unmengen an Ressourcen. Apache hingen steigerte sich nur um ca. 2MB pro 5 Aufrufen/Sekunde.

Eines Tages fand ich aber php5-fpm. Dies unterstützt neben Unix Socket einige interessante Funktionen und verbraucht unter hoher Belastung (100 Aufrufe/Sekunde) genauso viel wie Apache mit 1 Aufruf/Sekunde. Bei 10000 Aufrufen/Sekunde kommt es Apache2 mit etwa 77Aufrufen/Sekunde gleich.

Dabei ist mir nur noch das hier eingefallen:
Tschüss Apache2. Willkommen nginx.

Werbung

nginx

Wie nginx installiert werden kann, erkläre ich unter Nginx auf Debian/Ubuntu. Ich gehe mal davon aus, dass NGINX mit dieser Einführung bereits installiert wurde.
Aber nur ein Webserver für statischen Inhalt (HTML, Grafiken, etc.)  ist doch langweilig 😉
Wir brauchen PHP und MySQL!

php5-fpm

Wieso php5-fpm?

Weil php5-fpm Zusatzfunktionen besitzt, die ich im normalen php Paket vermisse.
Mehr dazu findest du auf der php-fpm Webseite.

Zuerst laden wir den Serverkey, installieren diesen und löschen den Serverkey wieder. Hierfür wird als Bezugsquelle dotdeb.org benutzt.

wget http://www.dotdeb.org/dotdeb.gpg
cat dotdeb.gpg | apt-key add -
rm dotdeb.gpg

Nun fehlen nur noch 2 Einträge in der source.list (/etc/apt/sources.list)

deb http://packages.dotdeb.org squeeze all
deb-src http://packages.dotdeb.org squeeze all

Nun muss die Paketliste neu eingelesen werden, da wir neue Bezugsquellen hinzugefügt haben.

apt-get update

Endlich! Nun kann php5-fpm installiert werden. Natürlich mit ein paar Extras 😉

apt-get install php5 php5-fpm php-pear php5-common php5-mcrypt php5-mysql php5-cli php5-gd php5-suhosin

MySQL

Die Installation von MySQL ist hingegen ziemlich einfach:

apt-get install mysql-server mysql-client

Hierbei wird 2x ein Passwort für den Benutzer root hinterfragt.

Konfiguration von nginx zur Nutzung von php5-fpm

Damit alles so läuft wie wir es wollen, deaktivieren wir die alte nginx Hostdatei.
Hierzu erstellen wir von dieser Datei eine Sicherheitskopie die wir auch als Nachschlagewerk benutzen können.

mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.old

Nun erstellen wir eine neue nginx Hostdatei. Diese befindet sich im Ordner „/etc/nginx/conf.d/“ und nennt sich „default.conf“ (/etc/nginx/conf.d/default.conf).

nano /etc/nginx/conf.d/default.conf
server {
	listen 80;	# Der zu lauschende Port
	server_name default;	# Der Name für den virtuellen Host
	root /var/www;	# Der zu verwendende Ordner

	location / {
		index index.php index.html;	# Zuerst versuchen, bei einem / Aufruf die index.php zu laden, alternativ die index.html
	}

	location ~* \.php$ {	# Ermöglicht die Verarbeitung von php Dateien
		try_files $uri /index.php;
		fastcgi_index index.php;
		fastcgi_pass 127.0.0.1:9000;
		include fastcgi_params;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		fastcgi_param SCRIPT_NAME $fastcgi_script_name;
	}

	access_log /var/log/nginx/www.access.log main;	# Pfad und Datei, wo die AccessLog gespeichert werden soll.
	autoindex on;	# Funktion, ob der Verzeichnisinhalt angezeigt werden soll, wenn keine index.php oder index.html existiert
}

Mit den oben stehenden vHostangaben wird der default Host definiert. Das ist der Host der aufgerufen wird, wenn keine andere Hostangabe mit den vhosts übereinstimmt.
Hierbei wird der Ordner /var/www für die Website-Dateien verwendet. Dieser muss gegebenfalls noch angelegt werden:

mkdir /var/www

Um alle Änderungen zu übernehmen, muss der Dienst „nginx“ neu gestartet werden.

service nginx restart

Ich hoffe, dass die Installation geklappt hat. Wie ist es euch bei der Installation ergangen?
Wie immer der rechtliche Teil des Artikels: Ich hafte für keinerlei Beschädigungen am System oder Gerät, die im Zuge der Verwendung dieser Erklärung auftreten können.

Debian WebServer – NGINX mit php5-fpm und MySQL
Rate this post

One thought on “Debian WebServer – NGINX mit php5-fpm und MySQL

  1. Servus,
    wer sich wundert, warum Änderungen in der PHP.ini nicht nach einem nginx-restart übernommen werden, der sollte dies mal in der Konsole eingeben:

    /etc/init.d/php5-fpm

Leave a Reply

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.