Strona główna
» Jak
»
Bezpieczne usuwanie zablokowanego trybu konserwacji NextCloud za pomocą OCC
Bezpieczne usuwanie zablokowanego trybu konserwacji NextCloud za pomocą OCC
Jeśli Nextcloud nadal wyświetla komunikat „tryb konserwacji” po aktualizacji lub zadaniu konserwacyjnym, najpierw sprawdź, czy aktualizacja bazy danych została zakończona. Po occ statuswyświetleniu komunikatu needsDbUpgrade: falseuruchom program occ maintenance:mode --offjako użytkownik serwera WWW w odpowiedniej instalacji Nextcloud. Jeśli komunikat się pojawi true, zakończ działanie occ upgradeprzed ponownym otwarciem witryny.
Wyłączenie flagi przywraca logowanie, ale nie naprawia nieudanej aktualizacji. Celem jest ponowne uruchomienie instancji z włączoną flagą konserwacji i zweryfikowanym stanem aktualizacji.
1. Sprawdź instancję przed zmianą jej stanu
Połącz się z hostem lub kontenerem obsługującym adres URL Nextcloud, którego dotyczy problem. W przypadku ręcznej instalacji systemu Linux przejdź do katalogu Nextcloud (często /var/www/nextcloud) i sprawdź status jako użytkownik HTTP:
cd /var/www/nextcloud
sudo -E -u www-data php occ status
Wyszukaj maintenancei needsDbUpgrade. Typowy stan, w którym można bezpiecznie wyłączyć, maintenance: trueto needsDbUpgrade: false. Jeśli parametr konserwacji jest już fałszywy, przeglądarka może wyświetlać nieaktualną stronę lub przechodzić do innego zaplecza. Jeśli needsDbUpgradejest prawdziwy, nie wyłączaj jeszcze trybu konserwacji.
Przykład statusu pokazuje, że konserwacja jest włączona, a żadna aktualizacja bazy danych nie jest w toku. W takim stanie wyłączenie trybu konserwacji jest zwykle właściwe.
Nextcloud wymaga, aby OCC działało jako użytkownik HTTP, aby własność plików pozostała spójna. W Debianie lub Ubuntu zazwyczaj jest to www-data; inne dystrybucje mogą używać apache, http, lub wwwrun. Sprawdź konto usługi swojej instalacji przed zastąpieniem użytkownika w poleceniu. Aktualna dokumentacja Nextcloud OCC zawiera listę różnic użytkowników i polecenie status.
2. Wyłącz tryb konserwacji za pomocą OCC
W przypadku instalacji archiwum lub pakietu uruchom polecenie z katalogu zawierającego właściwy occskrypt:
Polecenie powinno zgłosić, że tryb konserwacji jest wyłączony. --offOpcja ta zmienia stan konserwacji; nie uruchamia migracji, nie naprawia uprawnień ani nie cofa przerwanej zamiany plików.
Jest to polecenie OCC dla standardowej instalacji, gdy aktualizacja jest zakończona, a polecenie jest uruchamiane w aktywnym katalogu Nextcloud.
Użyj wrappera pasującego do Twojej instalacji. W przypadku oficjalnego obrazu Nextcloud Docker, projekt dokumentuje zarówno docker execobraz, jak i przykłady Docker Compose. Zastąp przykładową nazwę kontenera lub usługi swoją własną:
# Docker Compose; "app" is an example service name
docker compose exec --user www-data app php occ maintenance:mode --off
# Docker; replace CONTAINER_ID with the Nextcloud container
docker exec -it --user www-data CONTAINER_ID php occ maintenance:mode --off
W Docker Compose uruchom OCC w usłudze Nextcloud jako www-data, używając nazwy swojej usługi Compose zamiast przykładowej nazwy app.
W przypadku Nextcloud Snap należy użyć jego opakowania OCC po stronie hosta zamiast wchodzić do wewnętrznych katalogów snap:
3. Jeśli aktualizacja jest nadal w toku, najpierw ją zakończ
W raportach o stanie needsDbUpgrade: true, Nextcloud sygnalizuje, że migracja kodu i bazy danych nie jest zsynchronizowana. Dzieje się tak zazwyczaj po tym, jak program aktualizujący zastąpił kod, ale faza migracji nie została zakończona. W takim stanie może być dostępny ograniczony zestaw poleceń OCC, a tryb konserwacji może być celowo pozostawiony włączony, aby uniemożliwić użytkownikom dostęp do aktualizacji.
Użyj ścieżki aktualizacji dla swojego typu instalacji i sprawdź błąd programu aktualizującego przed kontynuowaniem. W przypadku standardowej instalacji opartej na archiwum, po potwierdzeniu obecności odpowiedniej wersji kodu Nextcloud i utworzeniu nowej kopii zapasowej bazy danych oraz plików i konfiguracji (jeśli jeszcze jej nie posiadasz), uruchom:
sudo -E -u www-data php occ upgrade
Pozwól poleceniu dokończyć działanie i rozwiązać wszelkie zgłoszone błędy. Nie przełączaj wielokrotnie trybu konserwacji, aby ominąć błąd migracji. Dokumentacja aktualizacji Nextcloud wyjaśnia, że migracja bazy danych następuje po wymianie kodu serwera i zaleca wykonanie nowej kopii zapasowej przed aktualizacją. Docker, Snap i pakiety zarządzane mogą mieć własne procedury aktualizacji; skorzystaj z tych instrukcji, jeśli różnią się one od przykładu opartego na archiwum.
Gdy aktualizacja zakończy się pomyślnie i status nie będzie już wskazywał na oczekującą aktualizację bazy danych, uruchom odpowiednie maintenance:mode --offpolecenie z powyższej listy. Unikaj edycji config.phplub używania bezpośredniej aktualizacji bazy danych jako skrótu. Jeśli OCC nie może zapisać ustawienia, sprawdź, czy wybrano prawidłową instalację i użytkownika HTTP, a także sprawdź ewentualne błędy w polityce konfiguracji „tylko do odczytu” lub uprawnieniach do systemu plików przed zmianą uprawnień.
4. Sprawdź flagę i witrynę na żywo
Uruchom ponownie status, używając tej samej ścieżki instalacji, kontenera i użytkownika:
sudo -E -u www-data php occ status
Potwierdź oba maintenance: falsei needsDbUpgrade: false. W Dockerze lub Snap powtórz sprawdzanie za pomocą tego samego wrappera, którego użyto do wyłączenia flagi. Polecenie Nextcloud status dokumentuje te pola; jego czytelna dla maszyny forma to occ status --output=json_pretty.
Pomyślna weryfikacja pokazuje, że tryb konserwacji jest wyłączony i nie ma żadnych oczekujących uaktualnień bazy danych. Ten przykład nie pochodzi z serwera produkcyjnego.
Następnie przeładuj witrynę w nowej karcie przeglądarki i przetestuj normalne logowanie i listę plików. Nextcloud zauważa, że użytkownicy zalogowani przed trybem konserwacji mogą potrzebować odświeżyć przeglądarkę po powrocie serwera do trybu online. Jeśli OCC zgłasza błąd konserwacji, ale witryna nadal wyświetla stronę konserwacji, sprawdź, czy nazwa hosta lub trasa modułu równoważenia obciążenia prowadzą do tej samej instancji, którą zmieniłeś; w przypadku wielu kontenerów lub węzłów inny serwer zaplecza może nadal znajdować się w trybie konserwacji.
Skuteczna naprawa to zatem coś więcej niż tylko odpowiedź na polecenie „disabled”: status OCC musi pokazywać, że obie flagi są puste, a docelowy publiczny adres URL musi obsługiwać działającą instancję. Jeśli flaga aktualizacji pozostaje aktywna lub polecenie migracji się nie powiedzie, należy zablokować użytkownikom dostęp i rozwiązać problem z aktualizacją przed ponownym uruchomieniem NextCloud.