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

15 Installation von Nginx, PHP5 (PHP-FPM) und Fcgiwrap

Nginx ist als Paket für CentOS 6.1 verfügbar (aus EPEL) und kann folgendermaßen installiert werden:

yum install nginx

Sollte bereits Apache2 auf dem System installiert sein, stoppen Sie es jetzt...

/etc/init.d/httpd stop

... und entfernen Apaches Systemstartlinks:

chkconfig --del httpd

Erstellen Sie dann die Systemstartlinks für nginx und starten es:

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

(Sind sowohl Apache2 als auch nginx installiert, wird Sie der ISPConfig 3 Installer fragen, welches der beiden Sie benutzen wollen - antworten Sie in diesem Fall nginx. Ist nur eines der beiden installiert, wird ISPConfig die nötige Konfiguratioin automatisch vornehmen.)

PHP5 lässt sich in nginx mit PHP-FPM benutzen (PHP-FPM (FastCGI Process Manager) ist eine alternative PHP FastCGI Implementierung mit einigen zusätzlichen, für Seiten jeder Größenordnung nützlichen Features, vor allem aber für ausgelastetere Seiten). Sie können php-fpm zusammen mit php-cli und einigen PHP5 Modulen wie php-mysql, welche Sie brauchen um von Ihren PHP Skripts auf MySQL zuzugreifen, folgendermaßen installieren:

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 als nächstes /etc/php.ini...

vi /etc/php.ini

..., ändern Sie die Fehlerberichterstattung (sodass keine Nachrichten mehr angezeigt werden) und entkommentieren Sie cgi.fix_pathinfo=1:
[...]
;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 provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's ; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok ; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting ; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting ; of zero causes PHP to behave as before. Default is 1. You should fix your scripts ; to use SCRIPT_FILENAME rather than PATH_TRANSLATED. ; http://www.php.net/manual/en/ini.core.php#ini.cgi.fix-pathinfo cgi.fix_pathinfo=0 [...]
(Lesen Sie bitte http://wiki.nginx.org/Pitfalls um zu erfahren, warum dies empfehlenswert ist.)

Zusätzlich sollten Sie date.timezone in /etc/php.ini setzen, um Fehler wie

[08-Aug-2011 18:07:08] PHP Warning: phpinfo(): It is
not safe to rely on the system's timezone settings. You are *required*
to use the date.timezone setting or the date_default_timezone_set()
function. In case you used any of those methods and you are still
getting this warning, you most likely misspelled the timezone
identifier. We selected 'Europe/Berlin' for 'CEST/2.0/DST' instead in
/usr/share/nginx/html/info.php on line 2

im /var/log/php-fpm/www-error.log zu vermeiden wenn Sie ein PHP Skript im Browser aufrufen.
[...]
[Date] ; Defines the default timezone used by the date functions ; 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 durch folgenden Befehl bestimmen:

cat /etc/sysconfig/clock

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

Erstellen Sie dann die Systemstartlinks für php-fpm und starten es:

chkconfig --levels 235 php-fpm on
/etc/init.d/php-fpm start

PHP-FPM ist ein Daemon-Prozess (mit dem init-Script /etc/init.d/php-fpm), der einen FastCGI Server auf dem Port 9000 betreibt.

Um CGI Unterstützung auf nginx zu erhalten, installieren Sie Fcgiwrap.

Fcgiwrap ist ein CGI Wrapper, der auch für komplexere CGI Skripts funktionieren sollte und für Shared Hosting Environments eingesetzt werden kann, da es jedem vhost erlaubt, sein eigenes cgi-bin Verzeichnis zu benutzen.

Da es kein fcgiwrap Paket für CentOS 6.1 gibt, müssen Sie dies selbst bauen. Installieren Sie zuerst einige vorausgesetzte Pakete:

yum install fcgi-devel

Nun können Sie fcgiwrap wie folgt bauen:

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

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

Als nächstes installieren Sie das spawn-fcgi Paket, welches es erlaubt, fcgiwrap als Daemon laufen zu lassen:

yum install spawn-fcgi

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

vi /etc/sysconfig/spawn-fcgi

... und modifizieren Sie die Datei wie folgt:
# You must set some working options before the "spawn-fcgi" service will work.
# If SOCKET points to a file, then this file is cleaned up by the init script. # # See spawn-fcgi(1) for all possible options. # # Example : #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 dann 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 es folgendermaßen:

/etc/init.d/spawn-fcgi start

Sie sollten nun den fcgiwrap Socket in/var/run/fcgiwrap.socket finden, zugehörig dem Benutzer und der Gruppe apache (einige Skripts, z.B. Mailman, erfordern es vom Benutzer / der Gruppe apache ausgeführt zu werden, deshalb starten wir spawn-fcgi nicht als Benutzer/Gruppe nginx, sondern fügen nginx der Gruppe apache hinzu).

16 Installation von phpMyAdmin

Installieren Sie nun phpMyAdmin:

yum install phpmyadmin

Ändern Sie dann die Authentifikation in phpMyAdmin von cookie zu http:

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


[...]
/* Authentication type */ $cfg['Servers'][$i]['auth_type'] = 'http'; [...]
Sie können phpMyAdmin nun im /usr/share/phpmyadmin/ Verzeichnis finden.

Nach der Installation von ISPConfig 3 können Sie folgendermaßen auf phpMyAdmin zugreifen:

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

Wollen Sie ein /phpmyadmin oder /phpMyAdmin Alias einrichten, dass Sie von Ihren Webseiten aus benutzen können, ist dies etwas komplizierter als für Apache, da nginx keine globalen Aliase hat (also Aliase, welche für alle vhosts definiert werden können). Sie müssen Ihre Aliase deshalb für jeden vhost definieren, von dem aus Sie auf phpMyAdmin zugreifen wollen.

Um dies zu tun, fügen Sie folgendes in das nginx Directives Feld im Options Reiter der Webseite 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 $request_filename; include /etc/nginx/fastcgi_params; fastcgi_param PATH_INFO $fastcgi_script_name; 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; }
Benutzen Sie für Ihren vhost https statt http, sollten Sie die Zeile fastcgi_param HTTPS on; zu Ihrer phpMyAdmin Konfiguration 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; # <-- Fügen Sie diese Zeile hinzu fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include /etc/nginx/fastcgi_params; fastcgi_param PATH_INFO $fastcgi_script_name; 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; }
Benutzen Sie für Ihren vhost sowohl http als auch https, müssen Sie die folgende Sektion zur http {} Sektion in /etc/nginx/nginx.conf hinzufügen (vor jeglichen include Zeilen) welche überprüft, ob der Besucher http oder https benutzt und dementsprechend die $fastcgi_https Variable setzt (welche in der phpMyAdmin Konfiguration benutzt wird):

vi /etc/nginx/nginx.conf


[...]
http { [...] ## Detect when HTTPS is used map $scheme $fastcgi_https { default off; https on; } [...] } [...]
Vergessen SIe nicht, nginx danach neu zu starten:

/etc/init.d/nginx reload

Gehen Sie danach wieder in das nginx Directives Feld und anstatt der Zeile fastcgi_param HTTPS on; fügen Sie nun  fastcgi_param HTTPS $fastcgi_https; hinzu, sodass Sie phpMyAdmin sowohl für http als auch für https Anfragen benutzen 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; # <-- Fügen Sie diese Zeile hinzu fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include /etc/nginx/fastcgi_params; fastcgi_param PATH_INFO $fastcgi_script_name; 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 Installation von Mailman

Ab Version 3.0.4 unterstützt ISPConfig die Verwaltung von Mailman Mailinglisten (Erstellen/Modifizieren/Löschen). Wollen SIe von dieser Neuerung Gebrauch machen, installieren Sie Mailman wie folgt:

yum install mailman

Bevor Sie Mailman starten können, müssen Sie zunächst eine erste Mailingliste namens mailman erstellen:

/usr/lib/mailman/bin/newlist mailman

[root@server1 tmp]# /usr/lib/mailman/bin/newlist mailman
Enter the email of the person running the list:
<-- Admin Email Adresse, z.B. info@example.com Initial mailman password: <-- Admin Password für die Mailman Liste To finish creating your mailing list, you must edit your /etc/aliases (or equivalent) file by adding the following lines, and possibly running the
`newaliases' program:

## mailman mailing list
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"

Hit enter to notify mailman owner... <-- ENTER
[root@server1 tmp]#
Öffnen Sie danach /etc/aliases ...

vi /etc/aliases

... und fügen 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"
Benutzen Sie dann

newaliases

und starten Postfix neu:

/etc/init.d/postfix restart

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

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

Um Mailman mit ISPConfig kompatibel zu machen, müssen Sie folgenden Symlink erstellen:

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

Wollen Sie Mailman von Ihren mit ISPConfig erstellten Webseiten nutzen, ist dies mit nginx etwas komplizierter als mit Apache, da nginx keine globalen Aliase hat (also Aliase, welche für alle vhosts definiert werden können). Sie müssen Ihre Aliase deshalb für jeden vhost definieren, von dem aus Sie auf phpMyAdmin zugreifen wollen.

Um dies zu tun, fügen Sie folgendes in das nginx Directives Feld im Options Reiter der Webseite 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 das Alias /cgi-bin/mailman/ für Ihren vhost, was bedeutet, dass Sie per http://<vhost>/cgi-bin/mailman/admin/<listname> für eine Liste auf die Mailman Administrator-Kontrolloberfläche
zugreifen können; die Webseite für Benutzer einer Mailingliste kann unter http://<vhost>/cgi-bin/mailman/listinfo/<listname> gefunden werden.

Unter http://<vhost>/pipermail können Sie die Mailinglisten-Archive finden.

0 Kommentar(e)

Zum Posten von Kommentaren bitte