Fernwartungsmodul herunterladen

Zarafa Webaccess-/Webapp mit Nginx

Eine Möglichkeit bei großflächigerem Einsatz von Weboberflächen im Groupwareumfeld unter Linux, ist die Benutzung des alternativen und ressourcensparenden Dienstes "Nginx". Er stellt eine gängige Alternative zum üblicherweise genutzten "Apache2" dar. Wir möchten Ihnen hier anhand des Beispieles Zarafa und dem dazugehörigen WebAccess zeigen, wie der Umstieg gelingen kann. Exemplarisch wird die Distribution Debian 6 (squeeze) angenommen.
Das Ziel: Weniger RAM-Verbrauch und eine noch bessere Reaktionszeit der Weboberfläche.

Vorüberlegungen

Sollten Sie auf dem produktiven System den Nginx-Webserver parallel konfigurieren wollen, bietet es sich an, dem System eine weitere IP-Adresse zu geben. So ist für das eigentliche Umschalten nur noch eine kleine Änderung zu machen.
So lange sich Nginx im Testbetrieb befindet, lassen Sie diesen nur auf der neuen Zusatz-IP laufen. Das ist durchaus temporär möglich, z.B. mit "ifconfig eth0:0 ..." als Alias-Interface bzw. IP.

Nginx

Der Webserver ist mittels

aptitude install nginx

schnell installiert. Zudem werden wir für PHP5 exemplarisch mit "spawn-fcgi" arbeiten:

aptitude install spawn-fcgi

Da es sich um Ihr Produktivsystem handelt, dürften alle weiteren Abhängigkeiten schon installiert sein.

Als erstes schränken wir nginx genau auf diese IP ein.
Datei /etc/nginx/sites-enabled/default
In den ersten Zeilen wird der Eintrag "listen" editiert und um die Zusatz-IP ergänzt, z.B.
listen 10.20.0.99:80;
Im Gegenzug sollte der vorhandene Apache2-Webserver auf "seine" IP eingeschränkt werden.
Das spielt sich in /etc/apache2/ports.conf ab. Der Beispieleintrag hierfür sieht so aus:
Listen 10.20.0.13:80
Ein erster Test nach Reload bzw. Restart beider Dienste läßt sich mit dem Browser so durchführen: http://10.20.0.99/
Das Ergebnis "403 Forbidden" werten wir hierbei als Erfolg :-)

PHP

Das nächste Ziel ist die Aktivierung von PHP innerhalb von Nginx. Es gibt viele Wege dies einzubinden, wir zeigen es anhand von "php-fcgi".
Zunächst erstellen wir uns ein Start-Skript für das Tool "spawn-fcgi", das für uns die php-cgi Prozesse startet.
Dateiname: /usr/bin/php-fastcgi

#!/bin/bash

FASTCGI_USER=www-data
FASTCGI_GROUP=www-data
SOCKET=/var/run/php-fastcgi.socket
PIDFILE=/var/run/php-fastcgi.pid
CHILDREN=6
PHP5=/usr/bin/php5-cgi
/usr/bin/spawn-fcgi -s $SOCKET -P $PIDFILE -C $CHILDREN -u $FASTCGI_USER -g $FASTCGI_GROUP -f $PHP5

Nun nur noch ausführbar machen, starten, in die passende /etc/rcX.d verknüpfen bzw. mit update-rc.d arbeiten.
Falls nun ein Fehler ausgegeben wird, fehlt vermutlich nur noch die Installation vom Paket "php5-cgi" !

Webaccess "location"

Zu guter letzt sind nun in /etc/nginx/sites-enabled nur noch folgende Einstellungen zu tätigen:

        root   /usr/share/zarafa-webaccess/;

        location / {
                index  index.php;
        }

        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_pass   unix:/var/run/php-fastcgi.socket;
                fastcgi_index  index.php;
                include /etc/nginx/fastcgi_params;
                fastcgi_param  SCRIPT_FILENAME
                $document_root$fastcgi_script_name;
                include fastcgi_params;
        }

Dies setzt das Documentroot dieses vhosts direkt in das Webaccess Verzeichnis. Desweiteren werden alle Dateiendungen *.php auf den Socket unserer FastCGI Prozesses geleitet der dann den Rest erledigt.

Tuning

Was nun noch nicht behandelt wurde: Performance-Tuning. Ohne hier ins Detail einzusteigen, ein paar allgemeine Hinweise:
- Wenn es sich um rein interne Zugriffe handelt, könnte man das Logging ausschalten: access_log off
- gzip-Kompression: gzip on + zusätzliche Einstellungen
- statische Inhalte nicht ablaufen lassen: *.html -> expires -1 + Bilder und sonstiges: hohen "expire" setzen + add_header für Caching
- uvm.

Weiterführender Link zur externen Kontrolle von deartigen Maßnahmen: http://www.webpagetest.org/

Wir helfen Ihnen gerne bei der Optimierung Ihres Setups!