Simple Groupware auf 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 Simple Groupware auf einem Debian Squeeze oder Ubuntu 11.10 Server installieren und benutzen, auf dem nginx statt Apache installiert ist (LEMP = Linux + nginx (ausgesprochen "engine x") + MySQL + PHP). Simple Groupware ist eine Open Source Unternehmensgroupware welche Email, Kalender, Kontakte, Aufgaben, Dokumentverwaltung, Projektverwaltung, Synchronisation mit Outlook und Mobiltelefonen, Volltextsuche, Erweiterungen und vieles mehr unterstützt. nginx ist ein HTTP Server, welcher weit weniger Ressourcen verbraucht als Apache und Seiten viel schneller liefert, vor allem bei statischen Inhalten.

Für die Richtigkeit des Tutorials gebe ich keinerlei Garantie.

1 Vorbemerkung

Ich werde Simple Groupware in diesem Tutorial auf einen vhost namens www.example.com/example.com mit dem Stammverzeichnis /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 alle Befehle in diesem Tutorial mit Administratorrechten durchgeführt werden müssen, können Sie entweder jedem befehl die Zeichenkette sudo voransetzen oder sich mit folgendem Befehl als root-Benutzer anmelden

sudo su


2 Konfiguration von PHP

APC ist ein kostenloser PHP Opcode Cacher zum Optimieren von PHP intermediate Code. Es ist anderen PHP Opcode Cachern wie eAccelerator und XCache ähnlich und es wird ausdrücklich empfohlen einen von diesen zu installieren um Ihre PHP Seite zu beschleunigen.

APC kann folgendermaßen installiert werden:

apt-get install php-apc

Außerdem werden die folgenden Pakete für Simple Groupware gebraucht:

apt-get install catdoc ppthtml imagemagick unzip poppler-utils mp3info exiv2 graphviz php5-gd

Nun müssen Sie PHP dazu konfigurieren, große Uploads zu akzeptieren - der Standartwert ist 2 MB, was nicht gerade viel ist. Ich werde das Limit auf 512 MB hochschrauben. Öffnen Sie Ihre php.ini - wenn Sie PHP-FPM benutzen, ist dies /etc/php5/fpm/php.ini

vi /etc/php5/fpm/php.ini

… und wenn Sie spawn-fcgi benutzen, ist es /etc/php5/cli/php.ini:

vi /etc/php5/cli/php.ini

[...]
memory_limit = 512M [...] post_max_size = 512M [...] upload_max_filesize = 512M [...]
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 von Simple Groupware

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 das Simple Groupware Installer Skript von http://www.simple-groupware.de/cms/Download herunter und platzieren es in Ihrem Stammverzeichnis:

cd /var/www/www.example.com/web

wget http://downloads.sourceforge.net/project/simplgroup/simplegroupware%20installer/0.8/sgs_installer.php.gz

gunzip sgs_installer.php.gz

Es wird empfohlen, das Stammverzeichnis sowie den Simple Groupware 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 Simple Groupware erstellt (inklusive MySQL Simple Groupware Benutzer), können Sie dies wie folgt tun (In diesem Beispiel nenne ich die Datenbank sgware, den Benutzer sgware_admin und dessen Passwort sgware_admin_password):

mysqladmin -u root -p create sgware

mysql -u root -p

GRANT ALL PRIVILEGES ON sgware.* TO
'sgware_admin'@'localhost' IDENTIFIED BY 'sgware_admin_password';

GRANT ALL PRIVILEGES ON sgware.* TO
'sgware_admin'@'localhost.localdomain' IDENTIFIED BY
'sgware_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; } location = /favicon.ico { log_not_found off; access_log off; expires max; } location = /robots.txt { allow all; log_not_found off; access_log off; } # Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac). location ~ /. { deny all; access_log off; log_not_found off; } client_max_body_size 1000M; dav_methods PUT DELETE MKCOL COPY MOVE; create_full_put_path on; dav_access user:rw group:rw all:r; # WebDAV server location ~ ^/sgdav { rewrite . /bin/webdav.php; } # CMS real URLs location ~ ^/cms/ { rewrite ^/cms/ext/(.*)$ /bin/ext/cms/$1 last; rewrite ^/cms/thumbs/(.*)$ /bin/preview.php?filename=$1 last; rewrite ^/cms/(.*?)/file/(.*)$ /bin/cms.php?page=$1&file=$2 last; rewrite ^/cms/(.*)$ /bin/cms.php?page=$1 last; } # Root location = / { if ($request_method = "OPTIONS") { rewrite . /bin/webdav.php last; } try_files /bin/index.php /src/index.php /sgs_installer.php =404; include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass 127.0.0.1:9000; # use spawn-fcgi (!!) } # Root PHP /*.php location ~ ^/([^/]+.php)$ { try_files /bin/$1 /src/$1 $uri =404; include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass 127.0.0.1:9000; # use spawn-fcgi (!!) } # sgs src/*.php bin/*.php location ~ ^/(src|bin)/([^/]+.php|ext/.+.php)$ { include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass 127.0.0.1:9000; # use spawn-fcgi (!!) } # Redirect static files location ~ ^/(src/|bin/)?(ext/.*|docs/.*)$ { try_files /custom/$2 /ext/$2 /bin/$2 /src/$2 $uri =404; } # Drop all other stuff location / { if (!-f $request_filename) { return 404; } #return 403; } }
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 gültig zu machen:

/etc/init.d/nginx reload

Nun können Sie den webbasierten Simple Groupware Installer starten, indem Sie auf http://www.example.com/sgs_installer.php gehen - wählen Sie die Version aus, die Sie installieren möchten (z.B. 0.742) und klicken auf den INSTALL Link vor der Versionsangabe:


Das Simple Groupware Paket wird nun heruntergeladen und installiert. Klicken Sie auf CONTINUE:


Wählen Sie die Sprache, mit der Sie Simple Groupware verwenden möchten:


Die ausgewählte Sprache wird nun installiert. Klicken Sie auf Continue:


Füllen Sie als nächstes die Datenbankfelder aus (Benutzer: sgware_admin; Passwort sgware_admin_password; Datenbank: sgware), wählen Sie MySQL als Datenbank Backend im Database Drop-down Menü, wählen Sie Benutzernamen und Passwort für den Administrator und eine Ordnerstruktur zur Installation aus (kennen Sie Simple Groupware noch nicht, können Sie Demonstrationsordner zum Herumprobieren installieren). Scrollen Sie dann zum Ende der Seite herunter...


... und akzeptieren Sie die Lizenzvereinbarung. Klicken Sie danach auf Install:


Die Installation wird nun fertiggestellt:


Anschließend werden Sie auf die Simple Groupware Oberfläche gebracht - sehen Sie diese, war Ihre Installation erfolgreich und Sie können damit beginnen, Simple Groupware zu benutzen.


Die Administrationseinstellungen sind unter Main menu > Administration zu finden (sehen Sie diesen Menüpunkt nicht, melden Sie sich bitte ab und melden Sie sich als Administrator wieder an). Hier können Sie Erweiterungen installieren (klicken Sie auf den Simple Groupware Extensions Link) oder die Simple Groupware Einstellungen ändern (klicken Sie auf den Change Setup settings Link):


Benutzen Sie WebDAV mit Simple Groupware, so ist die WebDAV URL http://www.example.com/sgdav. Beachten Sie bitte, dass anonyme Logins standartmäßig erlaubt sind. Um eine Authentifikation mit Benutzername passwort zu erzwingen, gehen Sie auf Change Setup settings und deaktivieren Sie Enable anonymous access:


Beachten Sie bitte auch, dass derzeit nicht alle WebDAV Operationen unterstützt werden. Details über die Simple Groupware WebDAV Implementation können Sie hier finden: http://www.simple-groupware.de/cms/WebDAV.

Eine Anmerkung für WebDAV Benutzer unter Windows: Unter Windows XP SP3 hatte ich das folgende Problem: Wenn ich die WebDAV URL http://www.example.com/files/webdav.php benutzt habe, konnte ich mich nicht in WebDAV anmelden, obwohl Benutzername und Passwort korrekt waren. Durch Benutzung von http://www.example.com:80/files/webdav.php konnte ich mich zwar anmelden, hatte aber ein endloses Verzeichnis-Rekursionsproblem. Beide Probleme liesen sich durch Benutzung von http://www.example.com/files/webdav.php/# beheben - lesen Sie dazu http://www.thrrrust.com/~pclark/blog/2005/03/fun-with-windows-xp-and-webdav.html (inklusive des zweiten Kommentars).

4 Links

0 Kommentar(e)

Zum Posten von Kommentaren bitte