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


Nun können Sie den web-basierten Roundcube Installer starten indem Sie auf http://www.example.com/installer/ gehen:


Scrollen Sie herunter und klicken auf START INSTALLATION:


Auf der nächsten Seite überprüft der Installer ob die Umgebung alle nötigen Voraussetzungen für die Installation erfüllt. Wenn alles in Ordnung ist...


... scrollen Sie herunter und klicken auf NEXT:


Die nächste Seite dient der Konfiguration. Die meisten Standardwerte sollten in Ordnung sein. Scrollen Sie zur Database setup Sektion herunter und füllen Sie die Details für die Roundcube MySQL Datenbank aus die Sie vorhin erstellt haben:


Gehen Sie dann zur IMAP Settings Sektion und geben Sie die Details Ihres IMAP Servers an. Ist dieser auf dem selben Server, geben Sie localhost im default_host Feld ein. Wollen Sie IMAPS benutzen (Port 993), setzen Sie ssl:// vor den Hostnamen und ändern Sie den Wert des default_port Feldes in 993:


Geben Sie den SMTP Server in SMTP Settings an (localhost wenn dieser den selben Host hat). Benutzt der SMTP Server die selben Login-Daten wie Ihr IMAP Server, aktivieren Sie bitte die Use the current IMAP username and password for SMTP authentication Box:


Sind die anderen Werte ok (wie ich zuvor erwähnte sollten die Standardwerte in den anderen Sektionen in Ordnung sein), klicken Sie auf den CREATE CONFIG Button:


Auf der nächsten Seite werden Sie zwei Konfigurationsdateien sehen (main.inc.php und db.inc.php). Kopieren Sie die Inhalte der Dateien und legen Sie beide im config Verzeichnis an (in diesem Fall/var/www/www.example.com/web/config):

vi /var/www/www.example.com/web/config/main.inc.php

vi /var/www/www.example.com/web/config/db.inc.php


Nachdem Sie beide Dateien erstellt haben, klicken Sie auf CONTINUE:


Klicken Sie auf der nächsten Seite den Initialize database Button um den Roundcube Installer die Roundcube MySQL Datenbank erstellen zu lassen:


Am Ende haben Sie noch einmal die Möglichkeit Ihren SMTP und IMAP Login zu testen (dies ist optional):


Nachdem die Installation abgeschlossen ist, sollten Sie das Roundcube Installerverzeichnis entfernen:

rm -fr /var/www/www.example.com/web/installer

Sie können nun auf http://www.example.com/ gehen und Roundcube benutzen um sich in Ihr Email Konto einzuloggen:


So sieht Roundcube aus:

4 Links