Webserver Installation · 6 min read · Jan 25, 2026
Installation von Nginx mit PHP5 (und PHP-FPM) und MySQL-Unterstützung auf Fedora 15
Installation von Nginx mit PHP5 (und PHP-FPM) und MySQL-Unterstützung auf Fedora 15
Version 1.0
Autor: Falko Timme
Folge mir auf Twitter
Nginx (ausgesprochen “engine x”) ist ein kostenloser, Open-Source, leistungsstarker HTTP-Server. Nginx ist bekannt für seine Stabilität, umfangreiche Funktionen, einfache Konfiguration und geringen Ressourcenverbrauch. Dieses Tutorial zeigt, wie Sie Nginx auf einem Fedora 15-Server mit PHP5-Unterstützung (über PHP-FPM) 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 Installation von MySQL 5
Zuerst installieren wir MySQL 5 wie folgt:
yum install mysql mysql-serverDann erstellen wir die Systemstartlinks für MySQL (damit MySQL automatisch startet, wenn das System bootet) und starten den MySQL-Server:
chkconfig --levels 235 mysqld on
/etc/init.d/mysqld startÜberprüfen Sie nun, ob das Netzwerk aktiviert ist. Führen Sie aus:
netstat -tap | grep mysqlEs sollte etwas wie folgt angezeigt werden:
[root@server1 ~]# netstat -tap | grep mysql
tcp 0 0 *:mysql *:* LISTEN 1517/mysqld
[root@server1 ~]#Wenn dies nicht der Fall ist, bearbeiten Sie /etc/my.cnf und kommentieren Sie die Option skip-networking aus:
vi /etc/my.cnf| [...] #skip-networking [...] |
und starten Sie Ihren MySQL-Server neu:
/etc/init.d/mysqld restartFühren Sie aus:
mysql_secure_installationum ein Passwort für den Benutzer root festzulegen (ansonsten kann jeder auf Ihre MySQL-Datenbank zugreifen!):
[root@server1 ~]# mysql_secure_installation
HINWEIS: DAS AUSFÜHREN ALLER TEILE DIESER SKRIPTE WIRD FÜR ALLE MySQL
SERVER IM PRODUKTIONSEINSATZ EMPFOHLEN! BITTE LESEN SIE JEDEN SCHRITT SORGFÄLTIG!
Um sich bei MySQL anzumelden, um es abzusichern, benötigen wir das aktuelle
Passwort für den Benutzer root. Wenn Sie MySQL gerade installiert haben und
Sie das root-Passwort noch nicht festgelegt haben, wird das Passwort leer sein,
also sollten Sie hier einfach die Eingabetaste drücken.
Geben Sie das aktuelle Passwort für root ein (drücken Sie die Eingabetaste für keines): <– EINGABETASTE
OK, Passwort erfolgreich verwendet, weiter…
Das Festlegen des root-Passworts stellt sicher, dass niemand ohne die
richtige Autorisierung auf den MySQL-Benutzer root zugreifen kann.
Root-Passwort festlegen? [Y/n] <– EINGABETASTE
Neues Passwort: <– ihrrootsqlpasswort
Neues Passwort erneut eingeben: <– ihrrootsqlpasswort
Passwort erfolgreich aktualisiert!
Aktualisieren der Berechtigungstabellen..
… Erfolg!
Standardmäßig hat eine MySQL-Installation einen anonymen Benutzer, der es
jedem ermöglicht, sich bei MySQL anzumelden, ohne dass ein Benutzerkonto
für sie erstellt werden muss. Dies ist nur für Testzwecke gedacht und
um die Installation etwas reibungsloser zu gestalten. Sie sollten sie
vor dem Wechsel in eine Produktionsumgebung entfernen.
Anonyme Benutzer entfernen? [Y/n] <– EINGABETASTE
… Erfolg!
Normalerweise sollte root nur von ‘localhost’ aus eine Verbindung
erlaubt werden. Dies stellt sicher, dass jemand das root-Passwort
über das Netzwerk nicht erraten kann.
Root-Login aus der Ferne verbieten? [Y/n] <– EINGABETASTE
… Erfolg!
Standardmäßig kommt MySQL mit einer Datenbank namens ‘test’, auf die
jeder zugreifen kann. Dies ist ebenfalls nur für Testzwecke gedacht
und sollte vor dem Wechsel in eine Produktionsumgebung entfernt werden.
Testdatenbank und Zugriff darauf entfernen? [Y/n] <– EINGABETASTE
- Testdatenbank wird gelöscht…
… Erfolg! - Berechtigungen für die Testdatenbank werden entfernt…
… Erfolg!
Das Aktualisieren der Berechtigungstabellen stellt sicher, dass alle
Änderungen, die bisher vorgenommen wurden, sofort wirksam werden.
Berechtigungstabellen jetzt aktualisieren? [Y/n] <– EINGABETASTE
… Erfolg!
Aufräumen…
Alles erledigt! Wenn Sie alle oben genannten Schritte abgeschlossen haben,
sollte Ihre MySQL-Installation jetzt sicher sein.
Danke, dass Sie MySQL verwenden!
[root@server1 ~]#
3 Installation von Nginx
Nginx ist als Paket für Fedora 15 verfügbar, das wir wie folgt installieren können:
yum install nginxDann erstellen wir die Systemstartlinks für nginx und starten es:
chkconfig --levels 235 nginx on
/etc/init.d/nginx startGeben Sie die IP-Adresse oder den Hostnamen Ihres Webservers in einen Browser ein (z.B. http://192.168.0.100), und Sie sollten die Willkommensseite von nginx sehen:

4 Installation von PHP5
Wir können PHP5 in nginx über PHP-FPM zum Laufen bringen (PHP-FPM (FastCGI Process Manager) ist eine alternative PHP FastCGI-Implementierung mit einigen zusätzlichen Funktionen, die für Websites jeder Größe nützlich sind, insbesondere für beschäftigte Websites). Es gibt ein php-fpm-Paket in den offiziellen Fedora 15-Repositories, daher können wir php-fpm zusammen mit php-cli und einigen PHP5-Modulen wie php-mysql installieren, die Sie benötigen, wenn Sie MySQL aus Ihren PHP-Skripten verwenden möchten:
yum install php-fpm 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Öffnen Sie dann /etc/php.ini und setzen Sie cgi.fix_pathinfo=0:
vi /etc/php.ini| [...] ; cgi.fix_pathinfo bietet *echte* PATH_INFO/PATH_TRANSLATED-Unterstützung für CGI. PHP's ; vorheriges Verhalten war, PATH_TRANSLATED auf SCRIPT_FILENAME zu setzen und nicht zu verstehen, ; was PATH_INFO ist. Für weitere Informationen zu PATH_INFO siehe die CGI-Spezifikationen. Das Setzen ; auf 1 bewirkt, dass PHP CGI seine Pfade an die Spezifikation anpasst. Eine Einstellung ; von null bewirkt, dass PHP sich wie zuvor verhält. Standard ist 1. Sie sollten Ihre Skripte ; so anpassen, dass sie SCRIPT_FILENAME anstelle von PATH_TRANSLATED verwenden. ; http://www.php.net/manual/en/ini.core.php#ini.cgi.fix-pathinfo cgi.fix_pathinfo=0 [...] |
(Bitte lesen Sie http://wiki.nginx.org/Pitfalls, um herauszufinden, warum Sie dies tun sollten.)
Erstellen Sie als Nächstes die Systemstartlinks für php-fpm und starten Sie es:
chkconfig --levels 235 php-fpm on
/etc/init.d/php-fpm startPHP-FPM ist ein Daemon-Prozess (mit dem Init-Skript /etc/init.d/php-fpm), der einen FastCGI-Server auf Port 9000 ausführt.
5 Konfiguration von nginx
Die nginx-Konfiguration befindet sich in /etc/nginx/nginx.conf, die wir jetzt öffnen:
vi /etc/nginx/nginx.confDie 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 werden in server {}-Containern definiert. Der Standard-vhost ist in der Datei /etc/nginx/conf.d/default.conf definiert - lassen Sie uns ihn wie folgt ändern:
vi /etc/nginx/conf.d/default.conf| [...] 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, der 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 ein, um sie zu aktivieren. Ändern Sie die root-Zeile in 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.
Speichern Sie nun die Datei und starten Sie nginx neu:
/etc/init.d/nginx restartErstellen Sie nun die folgende PHP-Datei im Dokumentenstamm /usr/share/nginx/html…
vi /usr/share/nginx/html/info.php| |
Rufen Sie diese Datei nun in einem Browser auf (z.B. http://192.168.0.100/info.php):

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

6 Links
- nginx: http://nginx.org/
- nginx Wiki: http://wiki.nginx.org/
- PHP: http://www.php.net/
- PHP-FPM: http://php-fpm.org/
- MySQL: http://www.mysql.com/
- Fedora: http://fedoraproject.org/
Über den Autor
Falko Timme ist der Eigentümer von Timme Hosting (ultra-schnelles nginx-Webhosting). Er ist der Hauptbetreuer von HowtoForge (seit 2005) und einer der Hauptentwickler von ISPConfig (seit 2000). Er hat auch zum O’Reilly-Buch “Linux System Administration” beigetragen.
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.