Home
» Hoe
»
Nextcloud Redis-caching instellen op Ubuntu 24.04
Nextcloud Redis-caching instellen op Ubuntu 24.04
Nextcloud 34.0.2 introduceerde een gebundelde, Redis-compatibele KeyValueCachebackend, waardoor de huidige Nextcloud-versie Redis kan gebruiken zonder de Redis-extensie van PHP te hoeven installeren. Op een enkele Ubuntu 24.04-server kunt u APCu gebruiken voor de snelle lokale cache en Redis voor gedistribueerde caching en transactionele bestandsvergrendeling, verbonden via een Unix-socket. Dit houdt Redis buiten het netwerk en geeft Nextcloud een gedeelde cache die werkt voor alle PHP-verzoeken.
Kies eerst de juiste Redis-backend.
De huidige Nextcloud 35-beheerhandleiding beschrijft twee Redis-paden. Voor Nextcloud 34.0.2 of later wordt aanbevolen KeyValueCacheom Predis te gebruiken, dat met Nextcloud is meegeleverd; u installeert de Redis-server en stelt deze in memcache.kvstore, maar u hoeft geen Redis -pad te gebruiken php-redis. Oudere Nextcloud-versies gebruiken de PhpRedis-extensie en een ander config.phpblok. Controleer uw versie met `pip sudo -u www-data php /var/www/nextcloud/occ statusinstall redis`, waarbij u het pad vervangt als uw installatie zich elders bevindt.
Deze handleiding gaat ervan uit dat Nextcloud en Redis op dezelfde Ubuntu-host draaien, dat de webserver als `<hostname>` draait www-dataen dat u PHP en Redis rechtstreeks beheert. Als u Nextcloud via Snap, AIO, Docker of een ander appliance-pakket hebt geïnstalleerd, volg dan de service- en bestandssysteemconventies van dat pakket in plaats van blindelings host-level commando's toe te passen. APCu is sneller voor lokale caching dan Redis, terwijl Redis geschikt is voor gedistribueerde caching en bestandsvergrendelingen. Zie de Nextcloud-documentatie over geheugencaching .
Installeer Redis en APCu
Werk de pakketindex van Ubuntu bij, installeer de Redis-server en de APCu PHP-module en schakel Redis in bij het opstarten:
Installeer de Redis-server en APCu-pakketten voordat u een van beide configuratiebestanden bewerkt.
Op Ubuntu 24.04 is de standaard PHP-versie 8.3, en php-apcudat is de pakketnaam van de distributie. Redis is een aparte service; APCu wordt door PHP geladen. Herstart de PHP-handler na het installeren van APCu, zodat het webgerichte PHP-proces de module laadt. Als u PHP-FPM gebruikt, is dat doorgaans php8.3-fpm; als Apache mod_php gebruikt, herstart dan apache2. Controleer de namen van uw actieve services voordat u herstart.
Zorg dat Redis lokaal op de server aanwezig is.
Voor deze configuratie met één host gebruikt u een Unix-socket en schakelt u de TCP-listener van Redis uit. Bewerk het bestand /etc/redis/redis.conf. Werk de bestaande actieve instructies bij in plaats van meerdere conflicterende kopieën te laten staan en stel vervolgens het volgende in:
port 0
unixsocket /run/redis/redis-server.sock
unixsocketperm 770
Gebruik hetzelfde socketpad in Redis en Nextcloud en beperk de toegang tot de Redis-groep.
port 0Schakelt de TCP-poort uit; Redis luistert in plaats daarvan via het socketpad. De permissiemodus 770geeft de eigenaar en groep van Redis toegang tot de socket, terwijl andere lokale gebruikers geen toegang hebben. Voeg het webserveraccount toe aan de Redis-groep:
Herstart de PHP-FPM-service of Apache na het wijzigen van het groepslidmaatschap, omdat actieve processen hun oude groepslijst behouden. Gebruik de service die daadwerkelijk de PHP-implementatie van Nextcloud uitvoert. De Redis-documentatie raadt aan de toegang te beperken tot vertrouwde clients; een lokale socket voorkomt dat een cachepoort wordt blootgesteld aan een interface die toegankelijk is via internet. Zie de beveiligingsrichtlijnen van Redis .
Richt Nextcloud op de socket
Maak een back-up config/config.phpen voeg deze vermeldingen toe aan de bestaande PHP-configuratie-array. Vervang de rest van het bestand niet. Gebruik het pad waar uw Nextcloud-installatie zich bevindt.
Houd APCu lokaal en stel zowel de Redis-cachebackend als de sockethost in config.php in.
De schuine streep aan het begin van het hostpad geeft Nextcloud's KeyValueCache de opdracht om een Unix-socket te gebruiken, waardoor er geen TCP-poort of protocolinstelling nodig is. Redis biedt zowel `@Socket` memcache.distributedals memcache.locking`@Socket`; de laatste optie verplaatst transactionele bestandsvergrendelingen weg van de database. Houd ` memcache.local@Socket` ingeschakeld voor lokale cachetoegang met een lagere latentie. De exacte vermeldingen en socketopties staan beschreven in de instructies van Nextcloud voor KeyValueCache en Unix-sockets, en in de handleiding voor transactionele bestandsvergrendeling .
Controleer de verbinding en los eventuele problemen met de machtigingen op.
Controleer eerst of de Redis-service actief is en of de socket reageert:
sudo systemctl status redis-server
redis-cli -s /run/redis/redis-server.sock ping
Een PONG-reactie bevestigt dat Redis een lokale verbinding via de geconfigureerde socket accepteert.
Het verwachte antwoord op het tweede commando is PONG. Meld je vervolgens aan bij Nextcloud en open het overzicht van de beheerdersinstellingen. Controleer of de waarschuwing voor de lokale cache verdwenen is en kijk in het Nextcloud-logboek of er nog een Redis- of cachewaarschuwing aanwezig is. Je kunt ook uitvoeren sudo -u www-data php /var/www/nextcloud/occ statusom te controleren of de instantie nog steeds laadt; dit commando controleert de beschikbaarheid van Nextcloud, niet alleen de cache.
Als Redis de foutmelding "Toegang geweigerd" geeft of Nextcloud geen verbinding kan maken, controleer dan of de socket bestaat, of deze www-datatot de juiste groep behoort redisen of de groep en modus van de socket toegang toestaan. Herstart Redis en de PHP-handler na het wijzigen van het groepslidmaatschap. Als Redis de socket niet kan aanmaken, controleer dan op een typefout in het geconfigureerde pad en inspecteer de configuratie sudo journalctl -u redis-server -n 50. Los een probleem met sockettoegang niet op door Redis open te stellen voor het openbare netwerk.
Oudere Nextcloud: gebruik PhpRedis in plaats daarvan
Als uw Nextcloud-versie ouder is dan 34.0.2, installeer dan de PHP Redis-extensie die overeenkomt met de PHP-versie die Nextcloud gebruikt. Op een standaard Ubuntu 24.04 PHP 8.3-installatie is het pakket php-redis; Ubuntu vermeldt het als de PHP 8.3 Redis-extensie. Herstart de actieve PHP-handler na de installatie. config.phpGebruik in de legacy Redis-klassen en het verbindingsblok in plaats van de bovenstaande KeyValueCache-vermeldingen:
De pakketlijst van Ubuntu's Noble php-redis bevestigt de pakkettoewijzing. Configureer niet beide backends tegelijk. Nadat u de overeenkomende configuratie hebt opgeslagen, herhaalt u de socketping en de controle in het Nextcloud-beheeroverzicht.