====== Ubuntu 18.04: Redis als PHP-Cache ====== _._ _.-``__ ''-._ _.-`` `. `_. ''-._ Redis 4.0.9 (00000000/0) 64 bit .-`` .-```. ```\/ _.,_ ''-._ ( ' , .-` | `, ) Running in standalone mode |`-._`-...-` __...-.``-._|'` _.-'| Port: 0 | `-._ `._ / _.-' | PID: 25321 `-._ `-._ `-./ _.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | http://redis.io `-._ `-._`-.__.-'_.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | `-._ `-._`-.__.-'_.-' _.-' `-._ `-.__.-' _.-' `-._ _.-' `-.__.-' In diesem Beispiel läuft PHP 7.2 als CGI. ===== Installation der Pakete ===== # apt-get update # aptitude install redis php7.2-redis ===== Konfiguration ===== Die Anbindung des Webservers mit PHP soll über einen Unix-Socket erfolgen. Dazu müssen ein paar Zeilen in der Konfiguration geändert werden: [...] port 0 [...] unixsocket /var/run/redis/redis-server.sock unixsocketperm 770 Der Webserver muss Zugriff auf den Socket von Redis bekommen. # usermod -a -G redis www-data Die Änderungen werden nach Neustart der Dienste wirksam. # service redis-server restart # service php7.2-fpm restart # service nginx restart ===== Performance-Tuning ===== Beim Systemstart wollen wir ein paar Systemparameter manipulieren. Dies kann über das Skript rc.local geschehen. Die rc.local muss unter Ubuntu jedoch zuvor angelegt werden und wird ausgewertet vom Dienst rc-local. # service rc-local status ● rc-local.service - /etc/rc.local Compatibility Loaded: loaded (/lib/systemd/system/rc-local.service; enabled-runtime; vendor preset: enabled) Drop-In: /lib/systemd/system/rc-local.service.d └─debian.conf Active: active (exited) since Sat 2019-04-13 19:55:54 CEST; 1h 52min ago Docs: man:systemd-rc-local-generator(8) Process: 1366 ExecStart=/etc/rc.local start (code=exited, status=0/SUCCESS) Apr 13 19:55:54 xxx systemd[1]: Starting /etc/rc.local Compatibility... Apr 13 19:55:54 xxx rc.local[1366]: net.core.somaxconn = 65535 Apr 13 19:55:54 xxx systemd[1]: Started /etc/rc.local Compatibility. Das Anlegen geschieht wie folgt: # vi /etc/rc.local # chmod +x /etc/rc.local Dieser Parameter muss nur einmal in die /etc/sysctl.conf eingetragen werden: # echo 'vm.overcommit_memory = 1' >> /etc/sysctl.conf #!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. echo never > /sys/kernel/mm/transparent_hugepage/enabled sysctl -w net.core.somaxconn=65535 service redis-server restart exit 0 ===== Einbindung in die PHP-Anwendung nicht vergessen ===== ==== Nextcloud ==== [...] 'filelocking.enabled' => 'true', 'memcache.local' => '\\OC\\Memcache\\Redis', 'memcache.locking' => '\\OC\\Memcache\\Redis', 'redis' => array ( 'host' => '/var/run/redis/redis-server.sock', 'port' => 0, 'timeout' => 0.0, ), [...]