Uruchom automatycznie Nextcloud Cron za pomocą timera Systemd
Sprawdź tryb cron Nextcloud, napraw usługę systemd i timer oraz zweryfikuj, czy zadania w tle są uruchamiane po uruchomieniu i co pięć minut.
Gdy strona administratora NextCloud informuje, że zadania w tle nie były ostatnio uruchamiane, czyszczenie, powiadomienia i inne zaplanowane zadania mogą zostać opóźnione. Na serwerze Systemd rozwiązaniem jest zazwyczaj uruchomienie NextCloud cron.phpjako konta serwera WWW z usługi Systemd, a następnie zaplanowanie tej usługi z włączonym timerem. Aktualny podręcznik administratora NextCloud zawiera przykład składający się z dwóch jednostek; ścieżki i konto usługi muszą być zgodne z instalacją.
Zadania w tle NextCloud są uruchamiane po cron.phpwywołaniu. Usługa systemd definiuje polecenie do uruchomienia; timer uruchamia tę usługę zgodnie z harmonogramem. Jeśli usługa jest uruchamiana ręcznie, ale timer nigdy się nie uruchamia, należy skupić się na aktywacji timera. Jeśli timer się uruchamia, ale usługa ulega awarii, należy sprawdzić jej polecenie, środowisko PHP i uprawnienia.
Przed edycją sprawdź rzeczywisty katalog Nextcloud i użytkownika HTTP. W tym przykładzie przyjęto , , /var/www/nextcloudco www-datajest powszechne w systemach Debian i Ubuntu. Konto może być wwwrun, apache, lub innym użytkownikiem w różnych systemach. Nextcloud wymaga uruchamiania zadań wiersza poleceń jako użytkownik HTTP, aby zachować spójność własności plików. Zapoznaj się z dokumentacją Nextcloud occ .
Przetestuj ten sam plik wykonywalny PHP i skrypt cron, którego chcesz użyć dla systemd:
sudo -u www-data /usr/bin/php -f /var/www/nextcloud/cron.php
Zmień konto, ścieżkę PHP i ścieżkę Nextcloud dla swojego hosta. Jeśli polecenie zgłosi błąd PHP, brak rozszerzenia, problem z uprawnieniami, tryb konserwacji lub awarię połączenia z bazą danych, rozwiąż ten problem w pierwszej kolejności; timer nie naprawi błędnego polecenia.
Otwórz Ustawienia administracyjne → Ustawienia podstawowe → Zadania w tle i wybierz opcję Cron , jeśli nie jest jeszcze wybrana. Możesz również uruchomić to polecenie z katalogu Nextcloud:
cd /var/www/nextcloud
sudo -E -u www-data php occ background:cron
Nextcloud zaznacza, że wybranie opcji Cron w ustawieniach administratora nie jest absolutnie wymagane w przypadku cron.phpuruchomienia z wiersza poleceń, ponieważ skrypt automatycznie ustawia tryb. Jego jawne ustawienie jasno określa docelowy tryb produkcyjny. Nextcloud zaleca systemowego crona do zastosowań produkcyjnych; dokumentacja zadań w tle opisuje również timery systemd jako alternatywny harmonogram.
Utwórz lub zaktualizuj /etc/systemd/system/nextcloudcron.servicez następującą zawartością. Użyj pełnej ścieżki do PHP, aby systemd nie był zależny od interaktywnej powłoki PATH.
[Unit]
Description=Nextcloud cron.php job
[Service]
User=www-data
ExecCondition=/usr/bin/php -f /var/www/nextcloud/occ status -e
ExecStart=/usr/bin/php -f /var/www/nextcloud/cron.php
KillMode=process
Zmień Userkonto na serwerze WWW i obie ścieżki do odpowiadających lokalizacji PHP i NextCloud. Warunek sprawdza, czy instancja działa prawidłowo przed uruchomieniem zadania. Jeśli warunek nie zostanie spełniony, systemd może pominąć usługę. Sprawdź, czy NextCloud jest w trybie konserwacji i sprawdź dziennik przed usunięciem lub zmianą warunku. Zachowaj KillMode=process, ponieważ przykład NextCloud go używa, aby zewnętrzne programy uruchomione przez cron mogły kontynuować działanie po zakończeniu procesu cron. Jednostka usługi nie potrzebuje sekcji [Install].
Utwórz /etc/systemd/system/nextcloudcron.timer. Ten harmonogram uruchamia się pięć minut po uruchomieniu, a następnie czeka pięć minut po każdej aktywacji usługi:
[Unit]
Description=Run Nextcloud cron.php every 5 minutes
[Timer]
OnBootSec=5 min
OnUnitActiveSec=5 min
Unit=nextcloudcron.service
[Install]
WantedBy=timers.target
Przeładuj systemd, aby odczytał pliki jednostki, a następnie włącz i uruchom timer jednym poleceniem:
sudo systemctl daemon-reload
sudo systemctl enable --now nextcloudcron.timer
Włączenie powoduje, że timer uruchamia się przy kolejnych uruchomieniach; --nowuruchamia się natychmiast. Nie należy włączać samej usługi tak, jakby była timerem cyklicznym. Timer to jednostka, która należy do timers.target. Aktualny podręcznik NextCloud wyjaśnia te ustawienia interwałów i wymagane polecenie aktywacji; starsze wersje podręcznika zawierały przestarzałą sekcję instalacji usługi, dlatego należy postępować zgodnie z przykładem bieżącej jednostki.
Sprawdź stan timera i następny zaplanowany przebieg:
systemctl status nextcloudcron.timer
systemctl list-timers nextcloudcron.timer
Timer powinien być wyświetlany jako oczekujący lub aktywny, a na liście powinien być widoczny czas następnej aktywacji. Następnie sprawdź ostatnie uruchomienie usługi:
systemctl status nextcloudcron.service
journalctl -u nextcloudcron.service --since today
Timer może być aktywny nawet wtedy, gdy każde uruchomienie usługi kończy się niepowodzeniem, dlatego należy sprawdzić obie jednostki. Jeśli usługa jest niedostępna lub systemd odrzuca plik, należy uruchomić systemd-analyze verify /etc/systemd/system/nextcloudcron.service /etc/systemd/system/nextcloudcron.timer, poprawić zgłoszoną składnię lub błąd ścieżki, a następnie ponownie załadować systemd. Jeśli usługa nie zakończy działania, dane wyjściowe dziennika często identyfikują nieprawidłową ścieżkę PHP, niewłaściwego użytkownika, błąd warunku lub błąd środowiska wykonawczego NextCloud. Jeśli timer nie ma następnego uruchomienia, należy sprawdzić dokładną nazwę pliku timera, uruchomić daemon-reloadi potwierdzić jego włączenie za pomocą systemctl is-enabled nextcloudcron.timer.
Po kolejnej aktywacji timera sprawdź ponownie status zadań w tle Nextcloud. Powinien on pokazywać aktualny czas wykonania, a nie ostrzeżenie o nieaktualności. Jeśli timer i usługa zgłaszają pomyślne uruchomienia, ale strona administracyjna nadal wygląda na nieaktualną, sprawdź logi instancji i wersję PHP używaną przez serwer WWW; PHP w wierszu poleceń może różnić się od środowiska uruchomieniowego w przeglądarce. Ta konfiguracja rozwiązuje problem z harmonogramem systemd na standardowym hoście Linux. Instalacje kontenerowe i urządzenia mogą zarządzać cronem za pośrednictwem własnego menedżera usług, więc użyj metody obsługiwanej przez tę platformę zamiast dodawać jednostki hosta, które nie mają dostępu do plików kontenera.
Sprawdź tryb cron Nextcloud, napraw usługę systemd i timer oraz zweryfikuj, czy zadania w tle są uruchamiane po uruchomieniu i co pięć minut.
Włącz niezawodne blokowanie plików Nextcloud, wybierz odpowiedni serwer Redis lub Valkey i sprawdź, czy ostrzeżenie zostanie usunięte bez ryzyka równoczesnych zmian w plikach.
Napraw typowe błędy skanowania Nextcloud dzięki bieżącym aktualizacjom, protokołom HTTPS i HSTS, precyzyjnemu zaufaniu do odwrotnego serwera proxy i sprawdzeniu względem serwera publicznego.
Skonfiguruj Nextcloud SSE dla pamięci masowej, która tego wymaga, chroń klucze szyfrujące i zmierz wpływ transferu i procesora przed zaszyfrowaniem istniejących plików.
Połącz wyszukiwarkę plików Nextcloud z Elasticsearch, zindeksuj zawartość dokumentów i wybierz konfigurację odpowiadającą Twoim potrzebom w zakresie serwera i bezpieczeństwa.
Skonfiguruj Nextcloud tak, aby usuwał usunięte pliki po upływie określonego czasu przechowywania, niezawodnie planował zadania w tle i unikał poleceń, które usuwają śmieci każdego użytkownika.
Wykonaj bezpieczną naprawę OCC w Nextcloud, przejrzyj zmiany w bazie danych i sprawdź, dlaczego ostrzeżenie może nadal się pojawiać.
Zezwól na przesyłanie większych plików przez przeglądarkę Nextcloud, dostosowując ustawienia PHP, Nginx lub Apache, tymczasowego miejsca przechowywania i limitu czasu — i sprawdź, który limit blokuje plik.
Ustaw limit pamięci PHP, z którego faktycznie korzysta Nextcloud, uruchom ponownie odpowiednią usługę i potwierdź ustawienie 512 MB w przeglądzie administratora.
Zamontuj zgodny obiekt pamięci masowej w Nextcloud, korzystając z zaplecza S3, z odpowiednim punktem końcowym, poświadczeniami, zakresem dostępu i krokami weryfikacji.