
Performance
Ohne weitere Optimierungen läuft das System recht zäh. Dies liegt vor allem an der Geschwindigkeit von PHP auf dem Raspberry.
Um Ressourcen einzusparen verwenden wir deshalb den schlanken Webserver Nginx in Verbindung mit einem PHP Accelerator APC. Dieser fungiert als Cache für häufig ausgeführte PHP Skripte und legt den kompilierten Code im Hauptspeicher ab.
Vorbereitungen
Zunächst muss das Betriebssystem auf das Board. Hier mehr dazu. Es empfiehlt sich das Standardsystem Raspbian einzusetzen.
Memory Split
Da wir auf dem ownCloud Server keine grafische Oberfläche benötigen, können wir ohne Probleme den Speicher für die GPU zurückschrauben.
Hierzu die Datei /boot/config.txt mit nano oder einem anderen Editor anpassen.
sudo nano /boot/config.txt
Jetzt die Zeile für den Memory Split der GPU einfügen.
gpu_mem=16
Nginx, PHP5, APC und MySQL
Statt MySQL kann natürlich auch das schlankere SQLite verwendet werden. Allerdings kommt es hier des öfteren zu Problemen mit ownCloud.
Zunächst werden die benötigten Pakete installiert.
sudo apt-get install nginx php5 php5-cgi php5-fpm php5-gd php-apc php5-mysql mysql-server
Während der Installation muss ein Passwort für den MySQL Root Benutzer vergeben werden.
Datenbank einrichten
Aus Sicherheitsgründen sollte ownCloud nicht mit dem Root Benutzer auf die Datenbank zugreifen. Daher erstellen wir einen extra Benutzer mit dem Namen "owncloud" und geben diesem nur Berechtigungen auf die Datenbank "owncloud".
Hierzu zunächst auf die MySQL Befehlszeile einloggen.
mysql -u root -p
CREATE DATABASE owncloud;
CREATE USER 'owncloud'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON owncloud.* TO 'owncloud'@'localhost';
FLUSH PRIVILEGES;
exit;
Damit ist die Datenbank angelegt und der Benutzer auf die Datenbank berechtigt.
ownCloud installieren
Jetzt kann ownCloud installiert werden. Hierzu in den Document Root des Webservers wechseln und ownCloud herunterladen bzw. entpacken.
cd /usr/share/nginx/www/
wget -qO - http://download.owncloud.org/community/owncloud-5.0.11.tar.bz2 | sudo tar xvjf -
sudo mkdir /usr/share/nginx/www/owncloud/data
sudo chown -R www-data:www-data /usr/share/nginx/www/owncloud/data
Dienste starten
Nun können die benötigten Dienste beim Systemstart aktiviert werden.
sudo update-rc.d mysql defaults
sudo update-rc.d php5-fpm defaults
sudo update-rc.d nginx defaults
Im Anschluss das Raspberry Pi neustarten.
APC einrichten
Die Konfiguration des Caches wird über die /etc/php5/conf.d/20-apc.ini vorgenommen.
extension=apc.so
apc.enabled=1
apc.file_update_protection=2
apc.shm_size=32M
apc.include_once_override=0
apc.shm_segments=1
apc.gc_ttl=7200
apc.ttl=7200
apc.num_files_hint=1024
apc.enable_cli=0
Nginx konfigurieren
Im nächsten Schritt wird die Konfiguration von Nginx angepasst und der PHP Parser aktiviert.
nano /etc/nginx/sites-enabled/default
Die Datei muss wie folgt beschrieben werden.
Nach einem Neustart von Nginx ist ownCloud einsatzbereit.
sudo service nginx restart
Reaktionszeit per Cronjob steigern
Mit allen bisherigen Anpassungen ist ownCloud teilweise noch immer recht langsam. Dies liegt u.a. daran, dass bei jedem Aufruf von ownCloud ein Hintergrundprozess gestartet wird.
Daher richten wir hierfür einen Cronjob ein, welcher jede Minute die Aktionen durchführt. Anschließend kann der Ajax Hintergrundprozess deaktiviert werden.
Zunächst gehen wir in die ownCloud Administrator Einstellungen. Diese finden sich oben rechts im einem Klick auf den Benutzernamen unter dem Punkt Administrator. Hier setzen wir statt AJAX die Option Cron.

Auf dem Raspberry Pi wird nun der Cronjob wie folgt angelegt.
crontab -u www-data -e
Hier fügen wir die nachfolgende Zeile an.
*/1 * * * * php -f /usr/share/nginx/www/owncloud/cron.php
Damit sollte sich die Geschwindigkeit nochmals deutlich steigern lassen.
Optional: Upload Größe anpassen
Die maximale Größe von Uploads wird in der php.ini festgelegt.
sudo nano /etc/php5/fpm/php.ini
upload_max_filesize = 128M
post_max_size = 132M
Fazit
Möchte man eine performante ownCloud Installation sind einige umfangreiche Schritte notwendig. Vor allem die korrekte Einrichtung von Nginx gestaltet sich sehr komplex, da ein Einsatz von .htaccess Dateien mit Nginx nicht möglich ist.
Quellen: Raspberry Pi Logo, ownCloud Logo
Similar articles
- Jolicloud 1.2 Installation
- Gründe für und gegen Cloud Computing
- Dropbox verschenkt Zusatzspeicher
- Die eigene Cloud mit ownCloud + Ubuntu
- NFS Server einrichten mit Ubuntu
- NFS Client einrichten mit Ubuntu
- FTP Server einrichten mit Ubuntu
- Raspberry Pi Mini-Computer im Test
- Raspberry Pi mit XBMC als Mediacenter
- Raspberry Pi Multi Boot einrichten

Michael Kostka
08.08.2015 12:46
der externe Speicherpfad müsste auf nachfolgenden Pfad eingebunden werden (WICHTIG: Daten vorher sichern):
/usr/share/nginx/www/owncloud/data
Viele Grüße
Michael
Karsten
06.06.2015 11:47
tolle Anleitung die auch super funktioniert. Aber.... wo binde ich denn hier einen externen Speicherpfad ein?
Grüße
Karsten
Michael Kostka
28.02.2014 08:24
wenn du oben rechts auf deinen Benutzernamen klickst, findet sich der Eintrag "Administrator".
Hier kannst du die nötigen Einstellungen treffen. Habe das mal im Artikel ergänzt. Danke für den Hinweis.
Viele Grüße
Michael
Andi
25.02.2014 17:10
bei mir hapert es gerade an der stelle wo man in den ownCloud Administrator Einstellungen statt AJAX die Option Cron wählen soll ... wie kommt man aber in die Einstellungen?
Grüße Andi
Michael Kostka
01.01.2014 12:03
die Umstellung auf den Cronjob habe ich auf meinem Raspberry Pi vor kurzem durchgeführt.
Habe es oben mal im Artikel ergänzt.
Danke für den Hinweis.
Viele Grüße
Michael
jh
31.12.2013 16:29
gibt es einen Grund, warum Du owncloud nicht weg von Ajax hin auf Cron umstellst?
Gruß
PS: Deine Anleitung funktioniert, soweit ich das bisher beurteilen kann, auch prima mit dem Owncloud 6 Paket.
Michael Kostka
28.12.2013 10:52
zunächst muss ownCloud in /usr/share/nginx/www/owncloud liegen.
Um es jetzt als Unterordner aufrufbar zu machen musst Du nur den Document Root und die Rewrite Regeln im Nginx anpassen.
Hierzu die Datei /etc/nginx/sites-enabled/default editieren.
Diese Zeile:
root /usr/share/nginx/www/owncloud;
Ändern in:
root /usr/share/nginx/www
Zusätzlich sollten die Rewrite Regeln angepasst werden:
rewrite ^/owncloud/caldav(.*)$ /owncloud/remote.php/caldav$1 redirect;
rewrite ^/owncloud/carddav(.*)$ /owncloud/remote.php/carddav$1 redirect;
rewrite ^/owncloud/webdav(.*)$ /owncloud/remote.php/webdav$1 redirect;
Abschließend die Konfiguration neu laden.
service nginx reload
Dann sollte es funktionieren.
Viele Grüße
Michael
rednag
28.12.2013 02:38
Hat auf Anhieb alles geklappt.
Sehr ausfürlich, sogar für Linux-Laien wie mich nachvollziehbar.
Wenn ich jedoch die Adresse XXX.myftp.org aufrufe, komme ich immer zu owncloud.
Wie kann ich jetzt aber die owncloud-Instanz in einen Ordner verschieben das ich xxx.myftp.org/owncloud eingeben muß?
Ich hätte gerne auf dem nginx eine kleine Webseite gehostet, darum wäre owncloud in einem Unterordner hilfreich.
Ich hoffe es kann mir wer helfen.
Michael Kostka
26.12.2013 14:05
CREATE USER 'owncloud'@'localhost' IDENTIFIED BY 'password';
Der Benutzername wäre dann "owncloud" mit dem Passwort "password".
Du kannst ownCloud auch den Root Benutzer der Datenbank mitgeben.
Der owncloud MySQL Benutzer wird dann automatisch angelegt.
Wenn Du das Root Kennwort für MySQL nicht mehr weißt, kannst du es auch neu setzen:
sudo dpkg-reconfigure mysql-server
Viele Grüße
Michael
rednag
25.12.2013 23:15
MySQL Benutzername und/oder Passwort ungültig Sie müssen entweder ein existierendes Benutzerkonto oder das Administratoren-Konto angeben.
Vielleicht hat ja wer einen Tipp für mich.