ownCloud3 auf Nginx (LEMP) unter Debian Squeeze/Ubuntu 11.10

Version 1.0

Author: Falko Timme , Christian Schmalfeld

Follow me on Twitter


Dieses Tutorial zeigt Ihnen, wie Sie ownCloud3 auf einem Debian Squeeze oder Ubuntu 11.10 System installieren und betreiben, auf dem nginx statt Apache installiert ist (LEMP = Linux + nginx (ausgesprochen "engine x") + MySQL + PHP). ownCloud erlaubt mit dem weit verbreiteten WebDAV Standard universellen Zugriff auf Daten und schafft so eine Platform zum einfachen, geräteübergreifenden Einsehen und Synchronisieren von Kontakten, Kalendern und Lesezeichen und unterstützt dabei Teilen, Anschauen und Editieren über das Webinterface. Es bietet die Bedienbarkeit von Dropbox und box.net ohne Anbieter lock-in. ownCloud Benutzer können Ihre Datensynchronisation auf Ihrer eigenen Hardware betreiben und dort Dienste teilen. nginx ist ein HTTP Server, welcher weit weniger Ressourcen verbraucht als Apache und gerade statische Daten weitaus schneller liefert.

Für den Inhalt des Tutorials gebe ich keinerlei Garantie!

1 Vorbemerkung

Ich installiere ownCloud3 in einem vhost namens www.example.com/example.com mit dem Stammverzeichnis /var/www/www.example.com/web.

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 PHP konfigurieren

APC ist ein kostenloser PHP Opcode Cacher zum Optimieren von PHP Zwischencode. 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 ownCloud3 gebraucht:

apt-get install php5-sqlite php5-common mp3info curl libcurl3 libcurl4-openssl-dev php5-curl zip

Nun müssen Sie PHP dazu konfigurieren, große Uploads zu akzeptieren - der Standartwert ist 2 MB, was nicht sehr viel für Ihre eigene Cloud 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 Installation von Nginx mit PHP5 (und PHP-FPM) mit MySQL Unterstützung unter 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 Installation von Nginx und PHP5 mit MySQL Unterstützung unter 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 ownCloud3

Das Stammverzeichnis meiner www.example.com Webseite ist /var/www/www.example.com/web - existiert dies nicht, erstellen Sie es folgendermaßen:

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

Laden Sie als nächstes ownCloud3 als .tar.bz2 Datei von http://owncloud.org/go/owncloud-download herunter und platzieren Sie diese im Stammverzeichnis:

cd /tmp
wget -O owncloud-3.0.0.tar.bz2 http://owncloud.org/go/owncloud-download
tar xvfj owncloud-3.0.0.tar.bz2
cd owncloud/
mv * /var/www/www.example.com/web/
mv .htaccess /var/www/www.example.com/web/

Es wird empfohlen das Stammverzeichnis sowie die ownCloud3 Dateien 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

Als nächstes erstellen Sie eine nginx vhost Konfiguration für den www.example.com vhost 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; } # This is to avoid a "Request Entity Too Large" error client_max_body_size 1000M; index index.php index.html index.htm; dav_methods PUT DELETE MKCOL COPY MOVE; create_full_put_path on; dav_access user:rw group:rw all:r; 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;
}

location / {
index index.php;
try_files $uri $uri/ @webdav;
}

location @webdav {
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
#fastcgi_param HTTPS on;
fastcgi_pass 127.0.0.1:9000;
}

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 gültig zu machen:

/etc/init.d/nginx reload

Nun können Sie den webbasierten ownCloud3 Installer starten indem Sie auf http://www.example.com/ gehen - alles was Sie tun müssen ist einen Benutzernamen (z.B. admin) sowie ein Passwort für das ownCloud3 Administratorkonto anzugeben:


Das wars - ownCloud3 ist installiert und Sie können anfangen, Daten hochzuladen, Kontakte zu erstellen, etc.


Unter Personal (http://www.example.com/settings/personal.php) können Sie URLs zur Benutzung von ownCloud mit WebDAV, CalDAV und CardDAV finden:


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

5 Kommentar(e)

Zum Posten von Kommentaren bitte

Kommentare

Von: Lonesome Walker

Tja, und irgendwie ist das Tutorial für die Füße.

1. hat das verwiesene Tutorial mit Debian schon einen Schreibfehler, und
2. 2012/04/02 19:53:38 [error] 1775#0: *3 access forbidden by rule, client: xxx.xxx.xxx.xxx, server: www.example.com, request: "GET / HTTP/1.1", host: "www.example.com"


Von: Lonesome Walker

Meckern is einfach, selber machen erfordert Wissen:
http://pastebin.combosa.com/16

einfachste Config...


Von: cr0nicz

Danke für das super Tutorial! :)

Es gibt lediglich ein Problem: in der vhost file von nginx muss

"location ~ /. {" zu "location ~ /. {" (ohne "") geändert werden!


Von: cr0nicz

Aeh.. doofes Kommentarfeld.. nach dem Slash muss ein Backslash folgen!


Von: returnNULL

location ~/. { ändern in -> location ~/.{