Installation von Roundcube 0.7.1 mit Nginx (LEMP) unter Debian Squeeze/Ubuntu 11.10

Version 1.0
Author: Falko Timme , Christian Schmalfeld <c [dot] schmalfeld [at] projektfarm [dot] de>
Follow me on Twitter

Dieses Tutorial zeigt Ihnen, wie Sie auf einem Debian Squeeze oder Ubuntu 11.10 System mit anstatt von Apache installiertem Nginx (LEMP = Linux + nginx (ausgesprochen "engine x") + MySQL + PHP) eine Roundcube (Version 0.7.1) Webmail Webseite installieren und benutzen. Roundcube Webmail ist ein Browser-basierter, mehrsprachiger IMAP Client mit einer programmähnlichen Benutzeroberfläche. nginx ist ein HTTP Server, welcher weitaus weniger Resourcen verbraucht als Apache und Seiten viel schneller liefert, gerade wenn es um statische Dateien geht.

Für die Richtigkeit der Inhalte gebe ich keinerlei Garantie!

1 Vorbemerkung

Ich möchte Roundcube in einem vhost namens www.example.com/example.com mit dem Stammpfad /var/www/www.example.com/web installieren.

Sie sollten eine funktionierende nginx Installation haben, wie sie in diesen Tutorials aufgesetzt wird:
Ein Hinweis für Ubuntu Benutzer:
Da Sie alle Befehle des Tutorials mit Administratorrechten ausführen müssen, können Sie entweder allen Befehlen die Zeichenkette sudo voranstellen, oder melden sich gleich als root an indem Sie folgendes in die Konsole eingeben

sudo su


2 Installation von APC

APC ist ein kostenloser und offener PHP opcode Cacher zum cachen und optimieren von PHP Zwischencode. Es ist anderen PHP opcode Cachern wie eAccelerator und XCache ähnlich. Es wird dringend empfohlen einen dieser Cacher zu installieren um Ihre PHP Seite zu beschleunigen.

APC kann wie folgt installiert werden:

apt-get install php-apc

Nun müssen Sie in PHP die Standardzeitzone festlegen. Öffnen Sie Ihre php.ini - benutzen Sie PHP-FPM, finden Sie diese hier : /etc/php5/fpm/php.ini

vi /etc/php5/fpm/php.ini

Benutzen Sie spawn-fcgi, so ist sie hier: /etc/php5/cli/php.ini

vi /etc/php5/cli/php.ini

[...]
[Date] ; Defines the default timezone used by the date functions ; http://php.net/date.timezone ;date.timezone = date.timezone = "Europe/Berlin" [...]
Sie können die korrekte Zeitzone durch einen Blick auf /etc/timezone herausfinden:

cat /etc/timezone

root@server1:~# cat /etc/timezone
Europe/Berlin
root@server1:~#

Wenn Sie PHP-FPM als Ihren FastCGI Daemon benutzen (wie in Installing Nginx With PHP5 (And PHP-FPM) And MySQL Support On Ubuntu 11.10), starten Sie ihn wie folgt neu:

/etc/init.d/php5-fpm restart

Benutzen Sie lighttpds spawn-fcgi Programm als Ihren FastCGI Daemon (wie in Installing Nginx With PHP5 And MySQL Support On Debian Squeeze), müssen Sie den bestehenden spawn-fcgi Prozess beenden (dieser läuft auf Port 9000) und einen neuen erstellen. Benutzen Sie dazu

netstat -tap

um die PID des bestehenden spawn-fcgi Prozesses herauszufinden:

root@server1:~# netstat -tap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 *:sunrpc                *:*                     LISTEN      734/portmap
tcp        0      0 *:www                   *:*                     LISTEN      2987/nginx
tcp        0      0 *:ssh                   *:*                     LISTEN      1531/sshd
tcp        0      0 *:57174                 *:*                     LISTEN      748/rpc.statd
tcp        0      0 localhost.localdom:smtp *:*                     LISTEN      1507/exim4
tcp        0      0 localhost.localdom:9000 *:*                     LISTEN      1542/php5-cgi tcp        0      0 localhost.localdo:mysql *:*                     LISTEN      1168/mysqld
tcp        0     52 server1.example.com:ssh 192.168.0.198:2462      ESTABLISHED 1557/0
tcp6       0      0 [::]:www                [::]:*                  LISTEN      2987/nginx
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN      1531/sshd
tcp6       0      0 ip6-localhost:smtp      [::]:*                  LISTEN      1507/exim4
root@server1:~#

In der oberen Ausgabe ist die PID 1542, der Prozess lässt sich in diesem Fall also wie folgt beenden:

kill -9 1542

Erstellen Sie danach einen neuen spawn-fcgi Prozess:

/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid


3 Installation Roundcube

Das Stammverzeichnis meiner www.example.com Webseite ist /var/www/www.example.com/web - existiert dieses nicht, erstellen Sie es wie folgt:

mkdir -p /var/www/www.example.com/web

Als nächstes laden Sie Roundcube als .tar.gz Datei von http://roundcube.net/download herunter und platzieren es in Ihrem Stammverzeichnis:

cd /tmp
wget http://downloads.sourceforge.net/project/roundcubemail/roundcubemail/0.7.1/roundcubemail-0.7.1.tar.gz
tar xvfz roundcubemail-0.7.1.tar.gz
cd roundcubemail-0.7.1/
mv * /var/www/www.example.com/web/
mv .htaccess /var/www/www.example.com/web/

Es wird empfohlen, das Stammverzeichnis sowie denRoundcube Installer darin vom nginx Daemon beschreibbar zu machen, welcher als Benutzer www-data und Gruppe www-data läuft::

chown -R www-data:www-data /var/www/www.example.com/web

Haben Sie noch keine MySQL Datenbank für Roundcube erstellt (inklusive MySQL Roundcube Benutzer), können Sie dies wie folgt tun (In diesem Beispiel nenne ich die Datenbank roundcube, den Benutzer roundcube_admin und dessen Passwort roundcube_admin_password):

mysqladmin -u root -p create roundcube

mysql -u root -p

GRANT ALL PRIVILEGES ON roundcube.* TO
'roundcube_admin'@'localhost' IDENTIFIED BY 'roundcube_admin_password';
GRANT ALL PRIVILEGES ON roundcube.* TO
'roundcube_admin'@'localhost.localdomain' IDENTIFIED BY
'roundcube_admin_password';

FLUSH PRIVILEGES;

quit;

Als nächstes erstellen Sie für Ihren www.example.com vhost eine Konfiguration im /etc/nginx/sites-available/ Verzeichnis:

vi /etc/nginx/sites-available/www.example.com.vhost

server {
listen 80; server_name www.example.com example.com; root /var/www/www.example.com/web; if ($http_host != "www.example.com") { rewrite ^ http://www.example.com$request_uri permanent; } index index.php index.html; location ~ ^/favicon.ico$ { root /var/www/www.example.com/web/skins/default/images; log_not_found off; access_log off; expires max; } location = /robots.txt { allow all; log_not_found off; access_log off; } location ~ ^/(README|INSTALL|LICENSE|CHANGELOG|UPGRADING)$ { deny all; } location ~ ^/(bin|SQL)/ { deny all; } # Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac). location ~ /. { deny all; access_log off; log_not_found off; } location ~ .php$ { try_files $uri =404; include /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_index index.php; } }
Um den vhost zu aktivieren erstellen Sie einen Symlink im /etc/nginx/sites-enabled/ Verzeichnis der darauf zeigt:

cd /etc/nginx/sites-enabled/
ln -s /etc/nginx/sites-available/www.example.com.vhost www.example.com.vhost

Laden Sie nginx neu um die Änderungen geltend zu machen:

/etc/init.d/nginx reload

0 Kommentar(e)

Zum Posten von Kommentaren bitte