Server Installation · 8 min read · Nov 11, 2025

Der perfekte Server - CentOS 6.1 x86_64 mit nginx [ISPConfig 3] - Seite 5

15 Nginx, PHP5 (PHP-FPM) und Fcgiwrap installieren

Nginx ist als Paket für CentOS 6.1 (aus EPEL) verfügbar, das wir wie folgt installieren können:

yum install nginx

Wenn Apache2 bereits auf dem System installiert ist, stoppen Sie es jetzt…

/etc/init.d/httpd stop

… und entfernen Sie die Systemstartlinks von Apache:

chkconfig --del httpd

Dann erstellen wir die Systemstartlinks für nginx und starten es:

chkconfig –levels 235 nginx on
/etc/init.d/nginx start

(Wenn sowohl Apache2 als auch nginx installiert sind, wird der ISPConfig 3-Installer Sie fragen, welchen Sie verwenden möchten - antworten Sie in diesem Fall mit nginx. Wenn nur einer dieser beiden installiert ist, wird ISPConfig die notwendige Konfiguration automatisch durchführen.)

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 von Ihren PHP-Skripten aus 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

Als nächstes öffnen wir /etc/php.ini…

vi /etc/php.ini

… und ändern die Fehlerberichterstattung (so dass Hinweise nicht mehr angezeigt werden) und kommentieren cgi.fix_pathinfo=1 aus:

| [...] ;error_reporting = E_ALL & ~E_DEPRECATED error_reporting = E_ALL & ~E_NOTICE [...] |

Setzen Sie auch 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 ; dieses Wertes auf 1 bewirkt, dass PHP CGI seine Pfade an die Spezifikation anpasst. Ein Wert ; 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, 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 Einstellung date.timezone oder die Funktion date_default_timezone_set() 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' anstelle in /usr/share/nginx/html/info.php in Zeile 2 ausgewählt.

… in /var/log/php-fpm/www-error.log zu vermeiden, wenn Sie ein PHP-Skript in Ihrem Browser aufrufen, sollten Sie 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 korrekte Zeitzone für Ihr System herausfinden, indem Sie ausführen:

cat /etc/sysconfig/clock

[root@server1 tmp]# cat /etc/sysconfig/clock
ZONE=”Europe/Berlin”
[root@server1 tmp]#

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 start

PHP-FPM ist ein Daemon-Prozess (mit dem Init-Skript /etc/init.d/php-fpm), der einen FastCGI-Server auf Port 9000 ausführt.

Um CGI-Unterstützung in nginx zu erhalten, installieren wir Fcgiwrap.

Fcgiwrap ist ein CGI-Wrapper, der auch für komplexe CGI-Skripte funktionieren sollte und in Shared-Hosting-Umgebungen verwendet werden kann, da er es jedem vhost ermöglicht, sein eigenes cgi-bin-Verzeichnis zu verwenden.

Da es kein fcgiwrap-Paket für CentOS 6.1 gibt, müssen wir es selbst erstellen. Zuerst installieren wir einige Voraussetzungen:

yum install fcgi-devel

Jetzt können wir fcgiwrap wie folgt erstellen:

cd /usr/local/src/
git clone git://github.com/gnosek/fcgiwrap.git
cd fcgiwrap
autoreconf -i
./configure
make
make install

Dies installiert fcgiwrap in /usr/local/sbin/fcgiwrap.

Als nächstes installieren wir das spawn-fcgi-Paket, das es uns ermöglicht, fcgiwrap als Daemon auszuführen:

yum install spawn-fcgi

Öffnen Sie /etc/sysconfig/spawn-fcgi…

vi /etc/sysconfig/spawn-fcgi

… und ändern Sie die Datei wie folgt:

| # Sie müssen einige Arbeitsoptionen festlegen, bevor der "spawn-fcgi"-Dienst funktioniert. # Wenn SOCKET auf eine Datei verweist, wird diese Datei vom Init-Skript bereinigt. # # Siehe spawn-fcgi(1) für alle möglichen Optionen. # # Beispiel : #SOCKET=/var/run/php-fcgi.sock #OPTIONS="-u apache -g apache -s $SOCKET -S -M 0600 -C 32 -F 1 -P /var/run/spawn-fcgi.pid -- /usr/bin/php-cgi" FCGI_SOCKET=/var/run/fcgiwrap.socket FCGI_PROGRAM=/usr/local/sbin/fcgiwrap FCGI_USER=apache FCGI_GROUP=apache FCGI_EXTRA_OPTIONS="-M 0770" OPTIONS="-u $FCGI_USER -g $FCGI_GROUP -s $FCGI_SOCKET -S $FCGI_EXTRA_OPTIONS -F 1 -P /var/run/spawn-fcgi.pid -- $FCGI_PROGRAM" |

Fügen Sie jetzt den Benutzer nginx zur Gruppe apache hinzu:

usermod -a -G apache nginx

Erstellen Sie die Systemstartlinks für spawn-fcgi…

chkconfig --levels 235 spawn-fcgi on

… und starten Sie es wie folgt:

/etc/init.d/spawn-fcgi start

Sie sollten jetzt den fcgiwrap-Socket in /var/run/fcgiwrap.socket finden, der dem Benutzer und der Gruppe apache gehört (einige Skripte, z.B. Mailman, erwarten, dass sie vom Benutzer/Gruppe apache ausgeführt werden, weshalb wir spawn-fcgi nicht als Benutzer/Gruppe nginx ausführen, sondern stattdessen nginx zur apache-Gruppe hinzufügen).

16 phpMyAdmin installieren

Als nächstes installieren wir phpMyAdmin:

yum install phpmyadmin

Ändern Sie als nächstes die Authentifizierung in phpMyAdmin von Cookie auf http:

vi /usr/share/phpmyadmin/config.inc.php

| [...] /* Authentifizierungstyp */ $cfg['Servers'][$i]['auth_type'] = 'http'; [...] |

Sie finden phpMyAdmin jetzt im Verzeichnis /usr/share/phpmyadmin/.

Nachdem Sie ISPConfig 3 installiert haben, können Sie phpMyAdmin wie folgt aufrufen:

Der ISPConfig-Apps-vhost auf Port 8081 für nginx kommt mit einer phpMyAdmin-Konfiguration, sodass Sie http://server1.example.com:8081/phpmyadmin oder http://server1.example.com:8081/phpMyAdmin verwenden können, um auf phpMyAdmin zuzugreifen.

Wenn Sie einen /phpmyadmin oder /phpMyAdmin-Alias verwenden möchten, den Sie von Ihren Websites aus verwenden können, ist dies etwas komplizierter als für Apache, da nginx keine globalen Aliase hat (d.h. Aliase, die für alle vhosts definiert werden können). Daher müssen Sie diese Aliase für jeden vhost definieren, von dem aus Sie auf phpMyAdmin zugreifen möchten.

Um dies zu tun, fügen Sie Folgendes in das nginx-Direktivenfeld auf der Registerkarte Optionen der Website in ISPConfig ein:

| location /phpmyadmin { root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; } |

Wenn Sie http s anstelle von http für Ihren vhost verwenden, sollten Sie die Zeile fastcgi_param HTTPS on; zu Ihrer phpMyAdmin-Konfiguration wie folgt hinzufügen:

| location /phpmyadmin { root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass 127.0.0.1:9000; fastcgi_param HTTPS on; # <-- diese Zeile hinzufügen fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; } |

Wenn Sie sowohl http als auch https für Ihren vhost verwenden, müssen Sie den folgenden Abschnitt in den http {}-Abschnitt in /etc/nginx/nginx.conf (vor allen Include-Zeilen) hinzufügen, der bestimmt, ob der Besucher http oder https verwendet und die Variable $fastcgi_https entsprechend setzt:

vi /etc/nginx/nginx.conf

| [...] http { [...] ## Erkennen, wann HTTPS verwendet wird map $scheme $fastcgi_https { default off; https on; } [...] } [...] |

Vergessen Sie nicht, nginx danach neu zu laden:

/etc/init.d/nginx reload 

Gehen Sie dann wieder zum nginx-Direktivenfeld und anstelle von fastcgi_param HTTPS on; fügen Sie die Zeile fastcgi_param HTTPS $fastcgi_https; hinzu, damit Sie phpMyAdmin sowohl für http- als auch für https-Anfragen verwenden können:

| location /phpmyadmin { root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass 127.0.0.1:9000; fastcgi_param HTTPS $fastcgi_https; # <-- diese Zeile hinzufügen fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; } |

17 Mailman installieren

Seit Version 3.0.4 erlaubt ISPConfig auch die Verwaltung (Erstellen/Ändern/Löschen) von Mailman-Mailinglisten. Wenn Sie diese Funktion nutzen möchten, installieren Sie Mailman wie folgt:

yum install mailman

Bevor wir Mailman starten können, muss eine erste Mailingliste namens mailman erstellt werden:

/usr/lib/mailman/bin/newlist mailman

[root@server1 tmp]# /usr/lib/mailman/bin/newlist mailman
Geben Sie die E-Mail-Adresse der Person ein, die die Liste verwaltet: <– Admin-E-Mail-Adresse, z.B. [email protected]
Anfängliches Mailman-Passwort: <– Admin-Passwort für die Mailman-Liste
Um die Erstellung Ihrer Mailingliste abzuschließen, müssen Sie Ihre /etc/aliases (oder äquivalente) Datei bearbeiten, indem Sie die folgenden Zeilen hinzufügen und möglicherweise das Programm newaliases ausführen:

Mailman-Mailingliste

mailman: “|/usr/lib/mailman/mail/mailman post mailman”
mailman-admin: “|/usr/lib/mailman/mail/mailman admin mailman”
mailman-bounces: “|/usr/lib/mailman/mail/mailman bounces mailman”
mailman-confirm: “|/usr/lib/mailman/mail/mailman confirm mailman”
mailman-join: “|/usr/lib/mailman/mail/mailman join mailman”
mailman-leave: “|/usr/lib/mailman/mail/mailman leave mailman”
mailman-owner: “|/usr/lib/mailman/mail/mailman owner mailman”
mailman-request: “|/usr/lib/mailman/mail/mailman request mailman”
mailman-subscribe: “|/usr/lib/mailman/mail/mailman subscribe mailman”
mailman-unsubscribe: “|/usr/lib/mailman/mail/mailman unsubscribe mailman”

Drücken Sie die Eingabetaste, um den Mailman-Besitzer zu benachrichtigen… <– ENTER

[root@server1 tmp]#

Öffnen Sie danach /etc/aliases…

vi /etc/aliases

… und fügen Sie die folgenden Zeilen hinzu:

| [...] mailman: "|/usr/lib/mailman/mail/mailman post mailman" mailman-admin: "|/usr/lib/mailman/mail/mailman admin mailman" mailman-bounces: "|/usr/lib/mailman/mail/mailman bounces mailman" mailman-confirm: "|/usr/lib/mailman/mail/mailman confirm mailman" mailman-join: "|/usr/lib/mailman/mail/mailman join mailman" mailman-leave: "|/usr/lib/mailman/mail/mailman leave mailman" mailman-owner: "|/usr/lib/mailman/mail/mailman owner mailman" mailman-request: "|/usr/lib/mailman/mail/mailman request mailman" mailman-subscribe: "|/usr/lib/mailman/mail/mailman subscribe mailman" mailman-unsubscribe: "|/usr/lib/mailman/mail/mailman unsubscribe mailman" |

Führen Sie danach

newaliases

aus und starten Sie Postfix neu:

/etc/init.d/postfix restart

Erstellen Sie die Systemstartlinks für Mailman und starten Sie es:

chkconfig –levels 235 mailman on
/etc/init.d/mailman start

Jetzt müssen wir diesen Symlink erstellen, damit Mailman mit ISPConfig funktioniert:

cd /usr/lib/mailman/cgi-bin/
ln -s ./ mailman

Wenn Sie Mailman von Ihren über ISPConfig erstellten Websites aus verwenden möchten, ist dies etwas komplizierter als für Apache, da nginx keine globalen Aliase hat (d.h. Aliase, die für alle vhosts definiert werden können). Daher müssen Sie diese Aliase für jeden vhost definieren, von dem aus Sie auf Mailman zugreifen möchten.

Um dies zu tun, fügen Sie Folgendes in das nginx-Direktivenfeld auf der Registerkarte Optionen der Website in ISPConfig ein:

| location /cgi-bin/mailman { alias /usr/lib/mailman/cgi-bin; fastcgi_split_path_info (^/cgi-bin/mailman/[^/]*)(.*)$; include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME /usr/lib/mailman$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED /usr/lib/mailman$fastcgi_path_info; fastcgi_intercept_errors on; fastcgi_pass unix:/var/run/fcgiwrap.socket; } location /images/mailman { alias /usr/lib/mailman/icons; } location /pipermail { alias /var/lib/mailman/archives/public; autoindex on; } |

Dies definiert den Alias /cgi-bin/mailman/ für Ihren vhost, was bedeutet, dass Sie auf die Mailman-Admin-Oberfläche für eine Liste unter http:///cgi-bin/mailman/admin/ zugreifen können, und die Webseite für Benutzer einer Mailingliste unter http:///cgi-bin/mailman/listinfo/ zu finden ist.

Unter http:///pipermail finden Sie die Mailinglistenarchive.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.