Webserver · 4 min read · Dec 30, 2025

Nginx Mit PHP5 Und MySQL Unterstützung Auf Debian Lenny Installieren

Nginx Mit PHP5 Und MySQL Unterstützung Auf Debian Lenny Installieren

Version 1.0
Autor: Falko Timme

Nginx (ausgesprochen “engine x”) ist ein kostenloser, Open-Source, leistungsstarker HTTP-Server. Nginx ist bekannt für seine Stabilität, seinen reichen Funktionsumfang, die einfache Konfiguration und den geringen Ressourcenverbrauch. Dieses Tutorial zeigt, wie Sie Nginx auf einem Debian Lenny-Server mit PHP5-Unterstützung (über FastCGI) und MySQL-Unterstützung installieren können.

Ich gebe keine Garantie, dass dies bei Ihnen funktioniert!

1 Vorbemerkung

In diesem Tutorial verwende ich den Hostnamen server1.example.com mit der IP-Adresse 192.168.0.100. Diese Einstellungen können bei Ihnen abweichen, daher müssen Sie sie gegebenenfalls anpassen.

2 MySQL 5.0 Installieren

Um MySQL zu installieren, führen wir

aptitude install mysql-server mysql-client

Sie werden aufgefordert, ein Passwort für den MySQL-Root-Benutzer anzugeben - dieses Passwort gilt sowohl für den Benutzer root@localhost als auch für [email protected], sodass wir später kein MySQL-Root-Passwort manuell angeben müssen:

Neues Passwort für den MySQL “root”-Benutzer: <– yourrootsqlpassword
Wiederholen Sie das Passwort für den MySQL “root”-Benutzer: <– yourrootsqlpassword

3 Nginx Installieren

Nginx ist als Paket für Debian Lenny verfügbar, das wir wie folgt installieren können:

aptitude install nginx

Starten Sie nginx anschließend:

/etc/init.d/nginx start

Geben Sie die IP-Adresse oder den Hostnamen Ihres Webservers in einen Browser ein (z.B. http://192.168.0.100), und Sie sollten die Nginx-Startseite sehen:

4 PHP5 Installieren

Wir können PHP5 in nginx über FastCGI zum Laufen bringen. Glücklicherweise bietet Debian Lenny ein FastCGI-fähiges PHP5-Paket, das wir wie folgt installieren (zusammen mit einigen PHP5-Modulen wie php5-mysql, die Sie benötigen, wenn Sie MySQL aus Ihren PHP-Skripten verwenden möchten):

aptitude install php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Öffnen Sie dann /etc/php5/cgi/php.ini und fügen Sie die Zeile cgi.fix_pathinfo = 1 ganz am Ende der Datei hinzu:

vi /etc/php5/cgi/php.ini

| [...] cgi.fix_pathinfo = 1 |

Es gibt kein eigenständiges FastCGI-Daemon-Paket für Debian Lenny, daher verwenden wir das Programm spawn-fcgi von lighttpd. Wir installieren lighttpd wie folgt:

aptitude install lighttpd

Sie werden eine Fehlermeldung sehen, dass lighttpd nicht starten kann, weil Port 80 bereits verwendet wird:

Starting web server: lighttpd2009-03-19 15:58:09: (network.c.300) can't bind to port: 80 Address already in use  
 failed!

So sollte es sein, denn nginx hört bereits auf Port 80. Führen Sie

update-rc.d -f lighttpd remove

aus, damit lighttpd beim Booten nicht gestartet wird.

Wir haben lighttpd installiert, weil wir nur ein Programm benötigen, das mit dem Paket geliefert wird, /usr/bin/spawn-fcgi, das wir verwenden können, um FastCGI-Prozesse zu starten. Werfen Sie einen Blick auf

spawn-fcgi --help

um mehr darüber zu erfahren.

Um einen PHP FastCGI-Daemon zu starten, der auf Port 9000 auf localhost hört und als Benutzer und Gruppe www-data läuft, führen wir den folgenden Befehl aus:

/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid

Natürlich möchten Sie diesen Befehl nicht manuell eingeben, wann immer Sie das System starten, also um das System zu veranlassen, den Befehl beim Booten automatisch auszuführen, öffnen Sie /etc/rc.local…

vi /etc/rc.local

… und fügen Sie den Befehl am Ende der Datei (vor der exit-Zeile) hinzu:

| [...] /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid [...] |

5 Nginx Konfigurieren

Die Nginx-Konfiguration befindet sich in /etc/nginx/nginx.conf, die wir jetzt öffnen:

vi /etc/nginx/nginx.conf

Die Konfiguration ist leicht verständlich (Sie können hier mehr darüber erfahren: http://wiki.codemongers.com/NginxFullExample und hier: http://wiki.codemongers.com/NginxFullExample2)

Zuerst (das ist optional) erhöhen Sie die Anzahl der Worker-Prozesse und setzen Sie den keepalive_timeout auf einen angemessenen Wert:

| [...] worker_processes 5; [...] keepalive_timeout 2; [...] |

Die virtuellen Hosts werden in server {} Containern definiert. Der Standard-vhost ist in der Datei /etc/nginx/sites-available/default definiert - lassen Sie uns ihn wie folgt ändern:

vi /etc/nginx/sites-available/default

| [...] server { listen 80; server_name _; access_log /var/log/nginx/localhost.access.log; location / { root /var/www/nginx-default; index index.php index.html index.htm; } location /doc { root /usr/share; autoindex on; allow 127.0.0.1; deny all; } location /images { root /usr/share; autoindex on; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /var/www/nginx-default; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { #proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name; include fastcgi_params; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # location ~ /\.ht { deny all; } } [...] |

servername ; macht dies zu einem Standard-Catchall-vhost (natürlich können Sie hier auch einen Hostnamen wie www.example.com angeben).

Im location / Teil habe ich index.php zur Indexzeile hinzugefügt. root /var/www/nginx-default; bedeutet, dass das Dokumentenstammverzeichnis das Verzeichnis /var/www/nginx-default ist.

Der wichtige Teil für PHP ist die location ~ .php$ {} Strophe. Kommentieren Sie sie aus, um sie zu aktivieren. Bitte stellen Sie sicher, dass Sie die fastcgi_param-Zeile in fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name; ändern (ersetzen Sie /var/www/nginx-default durch das Dokumentenstammverzeichnis Ihres vhosts), da der PHP-Interpreter sonst das PHP-Skript, das Sie in Ihrem Browser aufrufen, nicht finden kann.

Stellen Sie sicher, dass einige Leerzeichen zwischen include und fastcgi_params; stehen - in der Standarddatei wird dies als ein Wort geschrieben, was ein Fehler ist.

Jetzt speichern Sie die Datei und starten Sie nginx neu:

/etc/init.d/nginx restart

Jetzt erstellen Sie die folgende PHP-Datei im Dokumentenstamm /var/www/nginx-default:

vi /var/www/nginx-default/info.php

| |

Jetzt rufen wir diese Datei in einem Browser auf (z.B. http://192.168.0.100/info.php):

Wie Sie sehen, funktioniert PHP5, und es funktioniert über FastCGI, wie in der Server-API-Zeile angezeigt. Wenn Sie weiter nach unten scrollen, sehen Sie alle Module, die bereits in PHP5 aktiviert sind, einschließlich des MySQL-Moduls:

6 Links

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.