Om de waarschuwing van Nextcloud over transactionele bestandsvergrendeling te verhelpen, moet u eerst zorgen dat vergrendeling is ingeschakeld en vervolgens een persistente, Redis-compatibele backend configureren, zoals Redis of Valkey. Op een kleine instantie kan Nextcloud standaard de database-backend voor vergrendeling gebruiken; voor een productieserver of gedeelde workload is vergrendeling met Redis als backend de gebruikelijke keuze, omdat dit het vergrendelingsverkeer naar de database vermindert. Wijs geen bestandsvergrendelingen toe aan Memcached: Nextcloud waarschuwt dat gecachede waarden onverwacht kunnen verdwijnen.
Kies de vergrendelingsbackend die bij uw server past.
Transactionele bestandsvergrendeling beschermt bestandsbewerkingen tegen conflicterende schrijfbewerkingen en kan vergrendelingen opheffen wanneer een upload of andere transactie wordt onderbroken. Het helpt corruptie tijdens normaal gebruik te voorkomen, inclusief werk met gedeelde bestanden en externe opslag. Het voorkomt niet dat twee personen tegelijkertijd hetzelfde document bewerken en biedt geen aanwezigheidsindicatoren; het regelt gelijktijdige opslagbewerkingen. Zie de documentatie over transactionele bestandsvergrendeling in Nextcloud 35 .
- Database-backend: Nextcloud gebruikt standaard databasevergrendeling. Dit voorkomt de noodzaak voor een extra service en kan voldoende zijn voor een kleine, persoonlijke installatie, maar databasevergrendeling zorgt wel voor extra belasting. Als u alleen een waarschuwing op een server met weinig gebruik wilt verwijderen, controleer dan eerst of de vergrendeling niet expliciet is uitgeschakeld.
- Redis met phpredis: Een goede keuze voor bestaande single-server en clusteromgevingen. Het vereist een Redis-compatibele server en de PHP Redis-extensie, plus overeenkomende verbindingsinstellingen in Nextcloud.
- KeyValueCache met Redis of Valkey: Beschikbaar vanaf Nextcloud 34.0.2. Het maakt gebruik van de meegeleverde Nextcloud-bibliotheek, waardoor een PHP Redis-extensie niet nodig is. Dit is handig wanneer de extensie niet beschikbaar is, hoewel Nextcloud opmerkt dat een externe key-value-server extra netwerkbelasting kan veroorzaken.
- Memcached: Het kan gedistribueerde caching bieden, maar is niet geschikt voor transactionele bestandsvergrendelingen omdat cachewaarden verwijderd kunnen worden. Houd het buiten de context
memcache.locking.
Voor een kleine thuisserver kan databasevergrendeling voldoende zijn als er geen waarschuwing voor vergrendeling is en er geen sprake is van databasedruk. Kies Redis of Valkey voor drukke instanties, meerdere applicatieservers of wanneer u wilt dat bestandsvergrendelingen buiten de database worden afgehandeld. De huidige Nextcloud 35-richtlijnen voor geheugencaching bevelen APCu aan voor lokale cache en Redis voor vergrendeling in gangbare implementaties met één server. Geclusterde webknooppunten moeten allemaal hetzelfde Redis- of Valkey-eindpunt of cluster gebruiken.
Controleer of de vergrendeling was uitgeschakeld.
Zoek het actieve Nextcloud-configuratiebestand, meestal config/config.phpin de installatiemap van Nextcloud. Maak er een back-up van voordat u het wijzigt. Zoek naar filelocking.enableden memcache.locking. De configuratie-referentie stelt vergrendeling standaard in op ingeschakeld; als u een expliciete waarde van 'false' vindt, wijzig deze dan in 'true' of verwijder die overschrijving.
'filelocking.enabled' => true,
Voeg geen tweede kopie van een bestaande sleutel toe. PHP-configuratie-arrays moeten één effectieve waarde per instelling bevatten. Als u een container of beheerd hostingpaneel gebruikt, breng dan wijzigingen aan via het ondersteunde configuratiemechanisme, zodat deze behouden blijven na upgrades of herimplementaties. De Nextcloud 35-beheerderswaarschuwing beschrijft de vergrendelingswaarschuwing en verwijst naar de vereisten voor de backend.
Configureer Redis-vergrendeling op één server.
Op Debian of Ubuntu zien pakketnamen er vaak zo uit : `<pakketnaam>` redis-serveren php-redis`<pakketnaam>`; gebruik de pakketten van uw distributie en zorg ervoor dat de PHP-module overeenkomt met de PHP-versie die door de webserver wordt gebruikt. Als u de klassieke Redis-backend gebruikt, installeer en start dan de Redis-service en controleer of de PHP Redis-extensie is ingeschakeld voor de web-SAPI. Een PHP-module die alleen via de commandline te gebruiken is, bewijst niet dat PHP-FPM of Apache deze kan laden.
Voeg de details van de vergrendelingsbackend en de verbinding toe aan de bestaande config.phparray. Dit voorbeeld gaat ervan uit dat Redis op dezelfde machine draait, luistert op localhost poort 6379 en toegankelijk is voor het Nextcloud PHP-proces.
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
'host' => 'localhost',
'port' => 6379,
'timeout' => 0.0,
],
Stel authenticatiegegevens in als uw Redis-server dit vereist. Voorkom dat Redis toegankelijk is via het openbare internet; beperk de toegang tot de host of het privénetwerk en configureer authenticatie- en firewallregels. Gebruik voor een Unix-socket het socketpad als Redis-host en poort 0, en zorg ervoor dat de webservergebruiker toegang heeft tot die socket. Kopieer geen localhost-instellingen naar een implementatie met meerdere servers, tenzij Redis daadwerkelijk lokaal is en consistent wordt gedeeld; alle Nextcloud-applicatieknooppunten moeten dezelfde backend gebruiken.
Wanneer de PHP Redis-extensie niet beschikbaar is
Op Nextcloud 34.0.2 of later kan KeyValueCache verbinding maken met Redis of Valkey zonder dat een aparte PHP-extensie hoeft te worden geïnstalleerd. Configureer de backend en de key-value store als volgt, waarbij u de host en eventuele inloggegevens vervangt door de waarden van uw omgeving:
'memcache.locking' => '\OC\Memcache\KeyValueCache',
'memcache.kvstore' => [
'server' => [
'host' => 'localhost',
'port' => 6379,
],
],
Configureer Redis en KeyValueCache niet als concurrerende vergrendelingsproviders. Volg de Nextcloud-documentatie voor referenties, TLS, sockets, Sentinel of clustertopologie in plaats van een voorbeeld met één server op basis van gissingen aan te passen.
Start de computer opnieuw op en controleer of de oplossing werkt.
Start de Redis-compatibele service opnieuw als u de serviceconfiguratie hebt gewijzigd. Start vervolgens de webserver of het PHP-FPM-proces opnieuw als u een PHP-extensie hebt geïnstalleerd of ingeschakeld. Controleer de servicestatus met behulp van de servicenaam voor uw distributie; bijvoorbeeld systemctl status redis-serverop veel Debian- of Ubuntu-systemen. Controleer of de service actief is en of het PHP-proces verbinding kan maken. Containerimplementaties moeten de Redis-servicenaam op het containernetwerk gebruiken, niet localhost, tenzij beide services dezelfde netwerknaamruimte delen.
Meld u aan bij Nextcloud als beheerder en vernieuw het beheerdersoverzicht. De waarschuwing voor transactionele bestandsvergrendeling zou moeten verdwijnen zodra de geconfigureerde backend beschikbaar is en de instelling is geladen. Upload, download en synchroniseer een testbestand en controleer vervolgens de Nextcloud- en PHP-logboeken als er een Redis-verbindings- of machtigingsfout optreedt. Een waarschuwing die blijft bestaan, wijst meestal op een typefout, een dubbele configuratiesleutel, de verkeerde PHP-extensie/SAPI, een geblokkeerde netwerkverbinding, onjuiste socketmachtigingen of een onbereikbare backend. Los die specifieke oorzaak op in plaats van de vergrendeling uit te schakelen.
Raadpleeg voor implementatiespecifieke opties de officiële documentatie voordat u de topologie wijzigt: Transactionele bestandsvergrendeling , Geheugencaching en Redis/Valkey-configuratie , en configuratieparameters .