Nginx Installation · 3 min read · Dec 13, 2025

Installation von Nginx mit PHP5 und MySQL-Unterstützung auf Fedora 13 - Seite 2

4 Installation von PHP5

Wir können PHP5 in nginx über FastCGI zum Laufen bringen. Es gibt kein eigenständiges FastCGI-Daemon-Paket für Fedora, daher verwenden wir das FastCGI-Paket von lighttpd (lighttpd-fastcgi) und installieren es zusammen mit php-cli und einigen PHP5-Modulen wie php-mysql, die Sie benötigen, wenn Sie MySQL aus Ihren PHP-Skripten verwenden möchten:

yum install lighttpd-fastcgi php-cli php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-eaccelerator php-magickwand php-magpierss php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidy

Dann öffnen Sie /etc/php.ini und fügen Sie die Zeile cgi.fix_pathinfo = 1 ganz unten in die Datei ein:

vi /etc/php.ini

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

Das lighttpd-fastcgi-Paket kommt mit der ausführbaren Datei /usr/bin/spawn-fcgi, die wir verwenden können, um FastCGI-Prozesse zu starten. Schauen Sie sich

spawn-fcgi --help

an, 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 nginx läuft, führen wir den folgenden Befehl aus:

/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u nginx -g nginx -f /usr/bin/php-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 hinzu:

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

5 Konfiguration von nginx

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) können Sie die Anzahl der Worker-Prozesse erhöhen und den keepalive_timeout auf einen angemessenen Wert setzen:

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

Die virtuellen Hosts sind in server {}-Containern definiert. Lassen Sie uns den Standard-vhost wie folgt ändern:

| [...] server { listen 80; server_name _; #charset koi8-r; #access_log logs/host.access.log main; location / { root /usr/share/nginx/html; index index.php index.html index.htm; } error_page 404 /404.html; location = /404.html { root /usr/share/nginx/html; } # leiten Sie Serverfehlerseiten zur statischen Seite /50x.html um # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # leiten Sie die PHP-Skripte an Apache weiter, das auf 127.0.0.1:80 hört # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # leiten Sie die PHP-Skripte an den FastCGI-Server weiter, der auf 127.0.0.1:9000 hört # location ~ \.php$ { root /usr/share/nginx/html; try_files $uri =404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name; include fastcgi_params; } # den Zugriff auf .htaccess-Dateien verweigern, wenn das Dokumentenstammverzeichnis von Apache # mit dem von nginx übereinstimmt # 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 /usr/share/nginx/html; bedeutet, dass das Dokumentenstammverzeichnis das Verzeichnis /usr/share/nginx/html ist.

Der wichtige Teil für PHP ist die location ~ .php$ {}-Stanza. Kommentieren Sie sie aus, um sie zu aktivieren. Ändern Sie die root-Zeile auf das Dokumentenstammverzeichnis der Website (z.B. root /usr/share/nginx/html;). Bitte stellen Sie sicher, dass Sie die fastcgi_param-Zeile in fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name; ändern, da der PHP-Interpreter sonst das PHP-Skript, das Sie in Ihrem Browser aufrufen, nicht finden kann.

Jetzt speichern Sie die Datei und starten nginx neu:

/etc/init.d/nginx restart

Jetzt erstellen Sie die folgende PHP-Datei im Dokumentenstamm /usr/share/nginx/html…

vi /usr/share/nginx/html/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.