Jeśli Nextcloud wyświetli ostrzeżenie, że blokowanie plików transakcyjnych nie jest skonfigurowane lub jest wyłączone, operacje na plikach mogą być mniej chronione przed jednoczesnymi zapisami i przerwanymi transferami. Zazwyczaj rozwiązaniem jest skonfigurowanie obsługiwanego magazynu klucz-wartość, takiego jak Redis lub Valkey, do blokowania. Najpierw zidentyfikuj sposób instalacji Nextcloud, a następnie skonfiguruj usługę pamięci podręcznej i Nextcloud razem; sama instalacja Redis nie zniknie z ostrzeżenia.
W aktualnym podręczniku administratora Nextcloud podano, że blokowanie transakcyjne domyślnie korzysta z bazy danych. Zaplecze bazy danych może działać, ale zwiększa obciążenie bazy danych. Redis lub Valkey mogą zapewnić dedykowane zaplecze blokowania. Dokładny tekst ostrzeżenia różni się w zależności od wersji Nextcloud: w aktualnej dokumentacji podano: „Blokowanie plików transakcyjnych jest wyłączone, co może prowadzić do problemów z warunkami wyścigu”. Osobne ostrzeżenie dotyczące pamięci podręcznej nie jest tym samym problemem. Zobacz oficjalny przewodnik blokowania plików transakcyjnych i odnośnik do ostrzeżeń na stronie administratora .
Zanim zmienisz serwer
Poniższe kroki zakładają, że administrujesz hostem Nextcloud. Poniższe polecenia używają systemu Debian lub Ubuntu z konwencjonalną instalacją pakietów; nazwy pakietów, nazwy usług, wersje PHP i ścieżki konfiguracji różnią się w innych dystrybucjach Linuksa. Jeśli korzystasz z Nextcloud AIO, Docker, Snap, TrueNAS lub obrazu dostawcy hostingu, postępuj zgodnie z instrukcjami instalacji i ponownego uruchamiania usług dla tego wdrożenia. Instalacja pakietów PHP na hoście może nie zmienić środowiska PHP w kontenerze lub urządzeniu.
- Znajdź katalog główny Nextcloud i jego aktywną wersję
config/config.php.
- Przed edycją pliku należy wykonać jego kopię zapasową. Może on zawierać dane uwierzytelniające do bazy danych i inne poufne informacje.
- Sprawdź, czy Nextcloud korzysta z jednego, czy kilku serwerów WWW. Konfiguracja wielowęzłowa wymaga jednego współdzielonego serwera Redis/Valkey lub klastra dostępnego dla każdego węzła Nextcloud.
- Zaplanuj krótkie okno konserwacji, jeśli Twoim użytkownikom zależy na nieprzerwanym przesyłaniu plików.
Krok 1: Potwierdź ostrzeżenie i typ instalacji
Zaloguj się jako administrator i otwórz Ustawienia administracyjne , a następnie zapoznaj się z omówieniem lub ostrzeżeniami dotyczącymi zabezpieczeń i konfiguracji. Zapisz dokładny komunikat. Jeśli strona informuje jedynie o braku skonfigurowanej pamięci podręcznej, jest to inna kontrola. Skonfiguruj lokalną pamięć podręczną, taką jak APCu, w razie potrzeby, ale nie zakładaj, że będzie ona zapewniać blokowanie transakcji. Nextcloud dokumentuje, że ustawienia pamięci podręcznej muszą być jawnie włączone w config.php.
W tradycyjnej instalacji Linuksa użyj powłoki, aby zidentyfikować ścieżkę wdrożenia i sprawdzić plik konfiguracyjny bez zapisywania sekretów w dzienniku terminala współdzielonego. Na przykład z serwera:
cd /var/www/nextcloud
ls -l config/config.php
Zastąp /var/www/nextcloudrzeczywistą ścieżką. W przypadku kontenerów zidentyfikuj kontener i jego zamontowaną konfigurację, zamiast edytować plik po stronie hosta, którego nie używa działająca instancja.
Krok 2: Zainstaluj i uruchom magazyn kluczy i wartości
W przypadku Debiana lub Ubuntu tradycyjny serwer Redis zazwyczaj korzysta z usługi Redis i rozszerzenia PHP Redis. Zainstaluj pakiety zgodne z wersją PHP używaną przez serwer WWW:
sudo apt update
sudo apt install redis-server php-redis
sudo systemctl enable --now redis-server
sudo systemctl status redis-server
Status powinien wskazywać, że usługa jest aktywna. Sprawdź, czy środowisko wykonawcze PHP obsługujące Nextcloud może załadować rozszerzenie Redis. W standardowej instalacji php -m | grep -i rediswystarczy szybkie sprawdzenie CLI, ale PHP w CLI i PHP w przeglądarce mogą używać różnych wersji plików konfiguracyjnych. Jeśli moduł nie jest dostępny w środowisku wykonawczym, zainstaluj lub włącz odpowiedni pakiet i zrestartuj PHP-FPM lub serwer WWW.
NextCloud w wersji 34.0.2 i nowszych oferuje również pakiet KeyValueCachebackendu dla sklepów zgodnych z Redis. Nie wymaga on rozszerzenia PHP Redis. Może to być przydatne, gdy środowisko hostingowe nie może zainstalować modułów PHP, ale nadal wymaga działającej usługi Redis lub Valkey. Aktualny przewodnik po buforowaniu pamięci NextCloud opisuje oba podejścia. Wybierz jedną konfigurację backendu poniżej, zamiast dodawać obie.
Krok 3: Skonfiguruj blokowanie w Nextcloud
Edytuj aktywne config/config.phpi dodaj wybrane wpisy do istniejącej $CONFIGtablicy. Zachowaj składnię PHP i przecinki. Nie twórz drugiej tablicy konfiguracyjnej ani nie duplikuj kluczy. Zachowaj istniejące ustawienia pamięci podręcznej, chyba że rozumiesz, dlaczego należy je zmienić.
Opcja A: Redis z rozszerzeniem PHP Redis
Użyj tej opcji, jeśli środowisko uruchomieniowe PHP w przeglądarce ma phprediszainstalowane obsługiwane rozszerzenie. Lokalny serwer Redis nasłuchujący na porcie 6379 może użyć takiej konfiguracji:
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
'host' => '127.0.0.1',
'port' => 6379,
'timeout' => 0.0,
],
Jeśli Redis wymaga uwierzytelnienia, skonfiguruj prawidłowe hasło config.phpi zabezpiecz uprawnienia pliku. Nie udostępniaj Redis publicznie. Powiąż go z localhost lub chronioną siecią prywatną i w razie potrzeby użyj gniazda Unix.
Opcja B: KeyValueCache z Redis lub Valkey
Użyj tej opcji, jeśli Twoja wersja NextCloud obsługuje dostawcę w pakiecie i wolisz nie instalować rozszerzenia PHP Redis. W przypadku usługi lokalnej nasłuchującej na porcie 6379, minimalny przykład to:
'memcache.locking' => '\OC\Memcache\KeyValueCache',
'memcache.kvstore' => [
'server' => [
'host' => '127.0.0.1',
'port' => 6379,
],
],
Dodaj udokumentowane ustawienia uwierzytelniania, TLS, gniazda, Sentinel lub klastra, jeśli Twoja usługa ich używa. Nie kopiuj danych uwierzytelniających z przykładu. Aby uzyskać szczegółowe informacje o parametrach i obsługiwanych topologiach, skorzystaj z oficjalnego dokumentu referencyjnego dotyczącego konfiguracji pamięci podręcznej .
Krok 4: Sprawdź łączność i ustawienia wieloserwerowe
Nextcloud musi mieć możliwość połączenia ze skonfigurowanym serwerem pamięci podręcznej przy użyciu tego samego hosta, portu, gniazda i danych logowania, co usługa. Częstym błędem jest konfigurowanie localhostkażdego węzła webowego Nextcloud, podczas gdy Redis działa tylko na jednym oddzielnym hoście. W przypadku wdrożenia wieloserwerowego należy skonfigurować wszystkie węzły webowe tak, aby korzystały z tego samego serwera lub klastra Redis. Ogranicz dostęp sieciowy do węzłów Nextcloud i chroń Redis za pomocą odpowiednich reguł uwierzytelniania i zapory sieciowej.
W przypadku gniazda Unix należy sprawdzić, czy konto PHP/serwera WWW może odczytywać i zapisywać dane w gnieździe. Zmiany uprawnień lub grup różnią się w zależności od systemu operacyjnego, dlatego należy postępować zgodnie z dokumentacją Redis/Valkey i dystrybucji, zamiast stosować ogólne uprawnienia, takie jak dostęp z możliwością zapisu dla wszystkich użytkowników. Odmowa połączenia, błąd uwierzytelnienia lub błąd uprawnień gniazda może uniemożliwić Nextcloud korzystanie z dostawcy blokady, nawet gdy klucz konfiguracyjny jest obecny.
Krok 5: Uruchom ponownie odpowiednie usługi
Po zapisaniu konfiguracji należy ponownie uruchomić usługę Redis, jeśli jej ustawienia uległy zmianie, a następnie ponownie uruchomić środowisko wykonawcze PHP obsługujące Nextcloud. Na przykład instalacja Apache może wymagać ponownego uruchomienia Apache, podczas gdy instalacja PHP-FPM wymaga ponownego uruchomienia odpowiedniej usługi PHP-FPM. W niektórych dystrybucjach nazwy usług zawierają numery wersji PHP. W przypadku kontenerów należy ponownie utworzyć lub ponownie uruchomić odpowiednią usługę za pomocą metody obsługiwanej we wdrożeniu. Unikaj bezmyślnego restartowania niepowiązanych usług na serwerze produkcyjnym.
Jeśli Nextcloud zwróci błąd konfiguracji lub składni, przywróć kopię zapasową i sprawdź, czy nie brakuje przecinka, nie pasuje cudzysłów, nie ma zduplikowanego klucza lub czy nie trzeba edytować nieprawidłowego parametru config.php. Ustawienia tablicy PHP muszą pozostać w istniejącej strukturze konfiguracji.
Krok 6: Sprawdź konfigurację i przetestuj operacje na plikach
Odśwież przegląd administratora i sprawdź, czy ostrzeżenie o blokowaniu plików transakcyjnych zniknęło. Jeśli skonfigurowałeś lokalną pamięć podręczną i nadal widzisz ostrzeżenie o pamięci podręcznej, sprawdź to osobno; Nextcloud zaleca APCu do lokalnego buforowania w wielu wdrożeniach na jednym serwerze, podczas gdy Redis obsługuje blokowanie i rozproszone buforowanie. Nie dodawaj Redis jako domyślnej lokalnej pamięci podręcznej, szczególnie w konfiguracji wieloserwerowej.
Możesz również sprawdzić efektywne ustawienia blokowania za pomocą narzędzia wiersza poleceń Nextcloud. Uruchom occz katalogu Nextcloud jako konto serwera WWW; w systemach Debian/Ubuntu to konto zazwyczaj wygląda następująco www-data:
sudo -u www-data php occ config:system:get memcache.locking
Wartość powinna odpowiadać wybranemu zapleczu, takiemu jak \OC\Memcache\Redislub \OC\Memcache\KeyValueCache. Jeśli polecenie nie może znaleźć ustawienia, sprawdź ścieżkę, użytkownika wykonującego i aktywny plik konfiguracyjny. Oficjalny podręcznik OCC wyjaśnia, jak uruchamiać polecenia administracyjne.
Na koniec prześlij mały plik testowy, zmień jego nazwę, pobierz go i sprawdź, czy klient stacjonarny lub mobilny może zsynchronizować zmianę. Te kontrole nie symulują każdego współbieżnego obciążenia, ale potwierdzają, że zwykłe operacje na plikach nadal działają po zmianie. W przypadku serwera zajętego lub klastrowanego, monitoruj dziennik Nextcloud i dostępność Redis/Valkey podczas normalnego użytkowania. Jeśli ostrzeżenie nadal występuje, sprawdź, czy środowisko uruchomieniowe PHP w przeglądarce ma rozszerzenie podczas korzystania z Opcji A, czy host pamięci podręcznej jest osiągalny, czy poświadczenia i uprawnienia gniazd są poprawne, a wszystkie węzły korzystają z tego samego zaplecza.
Co blokowanie plików transakcyjnych robi, a czego nie robi
Blokada transakcyjna pomaga zapobiegać uszkodzeniom plików w przypadku nakładania się operacji, obsługuje przerwane transakcje i koordynuje zmiany dotyczące plików współdzielonych i pamięci zewnętrznej. Nie rezerwuje dokumentu, więc tylko jedna osoba może go edytować, nie wyświetla, kto jeszcze edytuje, ani nie łączy jednoczesnych edycji. Potraktuj ostrzeżenie jako problem z konfiguracją serwera, a następnie przetestuj normalne przesyłanie i synchronizację po skonfigurowaniu zaplecza. Aby umożliwić wspólną edycję, użyj aplikacji przeznaczonej do współtworzenia, zamiast polegać na blokadach plików.