Um die Geschwindigkeit der eigenen Owncloud bzw. Nextcloud Installation mithilfe eines Cache aufzubessern gibt es mehrere Techniken die eingesetzt werden können. Hier beschreibe ich kurz wie man Redis einsetzt. Als Betriebssystem wurde ein Ubuntu 17.04 sowie Nextcloud 12.0.3 eingesetzt.
- Redis und Modul für PHP installieren
apt-get install redis-server php7.0-redis
- Redis Konfigurieren
Redis kann entweder über auf einem eigenem Server installiert werden und per IP/Port (6379) angesprochen werden oder aber direkt auf dem gleichen System wie eure Owncloud. In dem Fall bietet sich an die Kommunikation über ein unix Socket einzustellen. Hier folgenden Bereich auskommentieren und die Berechtigungen 770 setzen.vi /etc/redis/redis.conf
# Unix socket. # # Specify the path for the Unix socket that will be used to listen for # incoming connections. There is no default, so Redis will not listen # on a unix socket when not specified. # unixsocket /var/run/redis/redis.sock unixsocketperm 770
- Apache Benutzer der Redis Gruppe hinzufügen
Damit nun das PHP-Modul auch auf das unix Socket zugreifen kann, müssen wir den Benutzer des Webservers in die Gruppe „redis“ aufnehmen.vi /etc/group
Unter Ubuntu ist dies für apache2 der Benutzer: www-data.
redis:x:119:www-data
- Owncloud/Nextcloud config.php anpassen
In der Config fügen wir nun folgende Zeilen ein, damit auch Redis als Caching Software verwendet wird.vi config/config.php
'memcache.locking' => '\OC\Memcache\Redis', 'memcache.local' => '\OC\Memcache\Redis', 'redis' => array( 'host' => '/var/run/redis/redis.sock', 'port' => 0, 'dbindex' => 0, 'password' => 'secret', 'timeout' => 1.5, ),
- Dienste neustarten
Schlussendlich nochmal den Redis-Server sowie Apache2 neustarten, damit auch alle Änderungen aktiv werden.service redis-server restart service apache2 restart
Mögliche Fehler:
Am Anfang hatte ich noch folgenden Fehler, welcher aber auf die fehlende Gruppenzugehörigkeit zurückzuführen war:
Internal Server Error The server encountered an internal error and was unable to complete your request. Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report. More details can be found in the server log.
Schaut man genau ins error.log sieht man, dass es ein Berechtigungsfehler ist und hier bei Punkt 2 und 3 nochmal angesetzt werden sollte.
[Thu Dec 14 11:34:25.451617 2017] [core:notice] [pid 3333] AH00094: Command line: '/usr/sbin/apache2' [Thu Dec 14 11:38:05.020250 2017] [:error] [pid 3338] [client 10.0.0.55:32848] PHP Warning: Redis::connect(): connect() failed: Permission denied in /var/www/owncloud/lib/private/RedisFactory.php on line 82, referer: https://cloud.domain.info/ [Thu Dec 14 11:38:08.363190 2017] [:error] [pid 3339] [client 10.0.0.55:32851] PHP Warning: Redis::connect(): connect() failed: Permission denied in /var/www/owncloud/lib/private/RedisFactory.php on line 82 [Thu Dec 14 11:38:10.320506 2017] [:error] [pid 3339] [client 10.0.0.55:32851] PHP Warning: Redis::connect(): connect() failed: Permission denied in /var/www/owncloud/lib/private/RedisFactory.php on line 82, referer: https://cloud.domain.info/
ls /var/run/redis/ -al total 4 drwxrwsr-x 2 redis redis 80 Dec 14 11:39 . drwxr-xr-x 32 root root 1200 Dec 14 11:21 .. -rw-r--r-- 1 redis redis 5 Dec 14 11:39 redis-server.pid srwxrwx--- 1 redis redis 0 Dec 14 11:39 redis.sock