Server Installation · 5 min read · Oct 22, 2025
Installation von Nginx mit PHP5 (und PHP-FPM) und MySQL-Unterstützung auf CentOS 6.3
Installation von Nginx mit PHP5 (und PHP-FPM) und MySQL-Unterstützung auf CentOS 6.3
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, seinen umfangreichen Funktionsumfang, seine einfache Konfiguration und seinen geringen Ressourcenverbrauch. Dieses Tutorial zeigt, wie Sie Nginx auf einem CentOS 6.3-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 Aktivieren zusätzlicher Repositories
php-fpm ist nicht in den offiziellen CentOS-Repositories verfügbar, sondern im Remi RPM-Repository, das selbst vom EPEL-Repository abhängt; wir können beide Repositories wie folgt aktivieren:
rpm --import https://fedoraproject.org/static/0608B895.txt
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpmrpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpmyum install yum-prioritiesBearbeiten Sie /etc/yum.repos.d/epel.repo…
vi /etc/yum.repos.d/epel.repo… und fügen Sie die Zeile priority=10 zum Abschnitt [epel] hinzu:
| [epel] name=Extra Packages for Enterprise Linux 6 - $basearch #baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch failovermethod=priority enabled=1 priority=10 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 [...] |
Dann machen Sie dasselbe für den Abschnitt [remi] in /etc/yum.repos.d/remi.repo und ändern Sie enabled auf 1:
vi /etc/yum.repos.d/remi.repo| [remi] name=Les RPM de remi pour Enterprise Linux $releasever - $basearch #baseurl=http://rpms.famillecollet.com/enterprise/$releasever/remi/$basearch/ mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/remi/mirror enabled=1 priority=10 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi failovermethod=priority [remi-test] name=Les RPM de remi en test pour Enterprise Linux $releasever - $basearch #baseurl=http://rpms.famillecollet.com/enterprise/$releasever/test/$basearch/ mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/test/mirror enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi |
3 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 1799/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 SCRIPT WIRD FÜR ALLE MySQL
SERVER IM PRODUKTIONSEINSATZ EMPFOHLEN! BITTE LESEN SIE JEDEN SCHRITT SORGFÄLTIG!
Um sich in MySQL anzumelden, um es zu sichern, 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, ist das Passwort
leer, sodass Sie hier einfach die Eingabetaste drücken sollten.
Geben Sie das aktuelle Passwort für root ein (drücken Sie die Eingabetaste für keines): <– ENTFERNEN
OK, Passwort erfolgreich verwendet, weiter…
Das Festlegen des root-Passworts stellt sicher, dass niemand
in den MySQL-Root-Benutzer ohne die richtige
Autorisierung einloggen kann.
Root-Passwort festlegen? [Y/n] <– ENTFERNEN
Neues Passwort: <– IhrrootSQLPasswort
Neues Passwort erneut eingeben: <– IhrrootSQLPasswort
Passwort erfolgreich aktualisiert!
Lade Berechtigungstabellen neu..
… Erfolg!
Standardmäßig hat eine MySQL-Installation einen anonymen Benutzer,
der es jedem ermöglicht, sich in MySQL einzuloggen, ohne
ein Benutzerkonto zu haben. Dies ist nur für
Testzwecke gedacht und soll die Installation
etwas reibungsloser gestalten. Sie sollten sie
entfernen, bevor Sie in eine
Produktionsumgebung wechseln.
Anonyme Benutzer entfernen? [Y/n] <– ENTFERNEN
… Erfolg!
Normalerweise sollte root nur von ‘localhost’
verbindet werden dürfen. Dies stellt sicher, dass
niemand das root-Passwort über das Netzwerk erraten kann.
Root-Login aus der Ferne verbieten? [Y/n] <– ENTFERNEN
… Erfolg!
Standardmäßig kommt MySQL mit einer Datenbank namens
‘test’, auf die jeder zugreifen kann. Dies ist
auch nur für Testzwecke gedacht und sollte
vor dem Wechsel in eine
Produktionsumgebung entfernt werden.
Testdatenbank und Zugriff darauf entfernen? [Y/n] <– ENTFERNEN
- Testdatenbank wird gelöscht…
… Erfolg! - Berechtigungen auf der Testdatenbank werden entfernt…
… Erfolg!
Das Neuladen der Berechtigungstabellen stellt sicher, dass
alle bisher vorgenommenen Änderungen sofort wirksam werden.
Berechtigungstabellen jetzt neu laden? [Y/n] <– ENTFERNEN
… 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 ~]#
4 Installation von Nginx
Nginx ist als Paket für CentOS 6.3 (aus EPEL) 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 Nginx-Startseite sehen:

5 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). Wir können 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-magickwand php-magpierss php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidyAPC ist ein kostenloser und offener PHP-Opcode-Cache für das Caching und die Optimierung von PHP-Zwischencode. Es ist ähnlich wie andere PHP-Opcode-Caches wie eAccelerator und Xcache. Es wird dringend empfohlen, einen von diesen zu installieren, um Ihre PHP-Seite zu beschleunigen.
APC kann wie folgt installiert werden:
yum install php-pecl-apcÖ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 ; dies 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.)
Zusätzlich sollten Sie, um Fehler wie
[08-Aug-2011 18:07:08] PHP Warning: phpinfo(): Es ist nicht sicher, sich auf die Zeitzoneneinstellungen des Systems zu verlassen. Sie sind *verpflichtet*, die date.timezone-Einstellung oder die date_default_timezone_set()-Funktion zu verwenden. Falls Sie eine dieser Methoden verwendet haben und immer noch diese Warnung erhalten, haben Sie wahrscheinlich den Zeitzonenbezeichner falsch geschrieben. Wir haben 'Europe/Berlin' für 'CEST/2.0/DST' stattdessen in /usr/share/nginx/html/info.php in Zeile 2 ausgewählt… in /var/log/php-fpm/www-error.log, wenn Sie ein PHP-Skript in Ihrem Browser aufrufen, die date.timezone in /etc/php.ini setzen:
| [...] [Date] ; Definiert die Standardzeitzone, die von den Datumsfunktionen verwendet wird ; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone date.timezone = "Europe/Berlin" [...] |
Sie können die richtige Zeitzone für Ihr System herausfinden, indem Sie ausführen:
cat /etc/sysconfig/clock[root@server1 nginx]# cat /etc/sysconfig/clock
ZONE="Europe/Berlin"
[root@server1 nginx]#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.
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.