Rulează automat Nextcloud Cron cu un temporizator Systemd

Când pagina de administrare a Nextcloud spune că sarcinile sale de fundal nu au fost executate recent, curățarea, notificările și alte sarcini programate pot rămâne în urmă. Pe un server systemd, soluția este de obicei să rulați Nextcloud cron.phpca și cont de server web dintr-un serviciu systemd, apoi să programați acel serviciu cu un cronometru activat. Manualul de administrare actual al Nextcloud oferă un exemplu cu două unități; căile și contul de serviciu trebuie să corespundă instalării dvs.

Verifică mai întâi ce anume nu funcționează

Lucrările în fundal Nextcloud rulează atunci când cron.phpeste invocat. Un serviciu systemd definește comanda de rulare; un cronometru pornește acel serviciu conform unui program. Dacă serviciul rulează manual, dar cronometrul nu se declanșează niciodată, concentrați-vă pe activarea cronometrului. Dacă cronometrul se declanșează, dar serviciul eșuează, inspectați comanda, mediul PHP și permisiunile sale.

Confirmați directorul Nextcloud real și utilizatorul HTTP înainte de a edita orice. Acest exemplu presupune că /var/www/nextcloudși www-data, comune pe Debian și Ubuntu. Contul poate fi wwwrun, apache, sau un alt utilizator pe sisteme diferite. Nextcloud necesită rularea joburilor sale din linia de comandă ca utilizator HTTP, astfel încât proprietatea fișierelor să rămână consistentă. Consultați documentația Nextcloud occ .

Testează același executabil PHP și același script cron pe care intenționezi să le folosească systemd:

sudo -u www-data /usr/bin/php -f /var/www/nextcloud/cron.php

Înlocuiți contul, calea PHP și calea Nextcloud pentru gazda dvs. Dacă comanda raportează o eroare PHP, o extensie lipsă, o problemă de permisiune, un mod de întreținere sau o eroare de conexiune la baza de date, rezolvați mai întâi problema respectivă; cronometrul nu poate remedia o comandă eșuată.

Confirmați dacă Nextcloud folosește cronul sistemului

Deschideți Setări administrare → Setări de bază → Lucrări în fundal și selectați Cron dacă nu este deja selectat. De asemenea, puteți rula această comandă din directorul Nextcloud:

cd /var/www/nextcloud
sudo -E -u www-data php occ background:cron

Nextcloud menționează că selectarea Cron în setările de administrare nu este strict necesară dacă cron.phpscriptul este executat din linia de comandă, deoarece setează automat modul. Setarea acesteia clarifică modul de producție dorit. Nextcloud recomandă cronul sistemului pentru producție; documentația sa privind joburile în fundal documentează, de asemenea, temporizatoarele systemd ca planificator alternativ.

Reparați serviciul systemd

Creați sau actualizați /etc/systemd/system/nextcloudcron.servicecu următorul conținut. Folosiți calea completă către PHP, astfel încât systemd să nu depindă de fișierul . al unei shell-uri interactive 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

Schimbați Usercontul de server web și ambele căi către locațiile PHP și Nextcloud corespunzătoare. Condiția verifică dacă instanța funcționează normal înainte de a rula jobul. Dacă condiția eșuează, systemd poate sări peste serviciu; verificați dacă Nextcloud este în modul de întreținere și inspectați jurnalul înainte de a elimina sau modifica condiția. Păstrați KillMode=process, așa cum este folosit în exemplul Nextcloud, astfel încât programele externe pornite de cron să poată continua după încheierea procesului cron. Unitatea de serviciu nu are nevoie de o [Install]secțiune.

Reparați și activați cronometrul

Creare /etc/systemd/system/nextcloudcron.timer. Această programare începe la cinci minute după pornire și apoi așteaptă cinci minute după fiecare activare a serviciului:

[Unit]
Description=Run Nextcloud cron.php every 5 minutes

[Timer]
OnBootSec=5 min
OnUnitActiveSec=5 min
Unit=nextcloudcron.service

[Install]
WantedBy=timers.target

Reîncărcați systemd astfel încât să citească fișierele unității, apoi activați și porniți cronometrul într-o singură comandă:

sudo systemctl daemon-reload
sudo systemctl enable --now nextcloudcron.timer

Activarea face ca temporizatorul să pornească la pornirile viitoare; --nowîl pornește imediat. Nu activați serviciul în sine ca și cum ar fi un temporizator recurent. Temporizatorul este unitatea care aparține sub timers.target. Manualul curent al Nextcloud explică aceste setări de interval și comanda de activare necesară; versiunile mai vechi ale manualului includeau o secțiune de instalare învechită pentru serviciu, așa că urmați în schimb exemplul unității curente.

Urmăriți o rulare ratată și verificați remedierea

Verificați starea cronometrului și următoarea rulare programată:

systemctl status nextcloudcron.timer
systemctl list-timers nextcloudcron.timer

Cronometrul ar trebui să fie afișat ca în așteptare sau activ, iar listarea ar trebui să arate următoarea oră de activare. Apoi, verificați ultima rulare a serviciului:

systemctl status nextcloudcron.service
journalctl -u nextcloudcron.service --since today

Un cronometru poate fi activ chiar și atunci când fiecare rulare a serviciului eșuează, așadar verificați ambele unități. Dacă serviciul lipsește sau systemd respinge fișierul, rulați systemd-analyze verify /etc/systemd/system/nextcloudcron.service /etc/systemd/system/nextcloudcron.timer, corectați problema de sintaxă sau de cale raportată, apoi reîncărcați din nou systemd. Dacă serviciul se închide fără succes, ieșirea jurnalului identifică adesea o cale PHP nevalidă, un utilizator greșit, o condiție de eșuare sau o eroare de execuție Nextcloud. Dacă cronometrul nu are o următoare rulare, verificați numele exact al fișierului cronometrului, rulați daemon-reload, și confirmați că a fost activat cu systemctl is-enabled nextcloudcron.timer.

După următoarea activare a cronometrului, verificați din nou starea pentru joburile în fundal ale Nextcloud. Ar trebui să afișeze o oră de execuție recentă, în loc de un avertisment de neactualizare. Dacă atât cronometrul, cât și serviciul raportează rulări reușite, dar pagina de administrare încă pare neactualizată, verificați jurnalele instanței și versiunea PHP utilizată de serverul web; PHP din linia de comandă poate diferi de runtime-ul web. Această configurare abordează programarea systemd pe o gazdă Linux normală. Instalările containerizate și cele de tip appliance pot gestiona cron prin propriul supervizor de servicii, așadar utilizați metoda acceptată de platforma respectivă în loc să adăugați unități gazdă care nu pot accesa fișierele containerului.

Lasă un comentariu

Rulează automat Nextcloud Cron cu un temporizator Systemd

Verificați modul cron al Nextcloud, reparați serviciul systemd și cronometrul și verificați dacă joburile de fundal rulează după pornire și la fiecare cinci minute.

Ștergeți avertismentul de blocare a fișierelor din Nextcloud cu Redis

Activează blocarea fiabilă a fișierelor Nextcloud, alege backend-ul Redis sau Valkey potrivit și verifică dacă avertismentul dispare fără a risca modificări simultane ale fișierelor.

Ce este necesar pentru a viza un rating de securitate Nextcloud de A+

Ce este necesar pentru a viza un rating de securitate Nextcloud de A+

Corectează rezultatele comune ale scanărilor Nextcloud cu actualizări actuale, HTTPS și HSTS, încredere precisă în reverse-proxy și verificări pe serverul public.

Activați criptarea pe server Nextcloud cu impact măsurat

Configurați Nextcloud SSE pentru stocarea care necesită acest lucru, protejați cheile de criptare și măsurați impactul asupra transferului și procesorului înainte de a cripta fișierele existente.

Adăugați căutarea full-text Elasticsearch în Nextcloud

Conectează căutarea de fișiere Nextcloud la Elasticsearch, indexează conținutul documentelor și alege o configurație care se potrivește nevoilor serverului și securității tale.

Setați o politică de expirare fiabilă pentru fișierele șterse din Nextcloud

Setați o politică de expirare fiabilă pentru fișierele șterse din Nextcloud

Configurați Nextcloud pentru a elimina fișierele șterse după o perioadă de retenție definită, pentru a programa în mod fiabil joburile în fundal și pentru a evita comenzile care golesc coșul de gunoi al fiecărui utilizator.

Ștergeți avertismentul privind indexurile lipsă ale bazei de date din Nextcloud

Ștergeți avertismentul privind indexurile lipsă ale bazei de date din Nextcloud

Rulați repararea OCC din Nextcloud în siguranță, previzualizați modificările bazei de date și verificați de ce avertismentul ar putea persista.

Creșteți limita de încărcare web a Nextcloud peste 2 GB

Creșteți limita de încărcare web a Nextcloud peste 2 GB

Permiteți încărcări mai mari în browserul Nextcloud prin alinierea setărilor PHP, Nginx sau Apache, stocarea temporară și timeout - și verificați ce limită blochează fișierul.

Ștergeți avertismentul de memorie PHP al Nextcloud pe serverul web

Setați limita de memorie PHP utilizată efectiv de Nextcloud, reporniți serviciul corect și confirmați setarea de 512 MB în Prezentare generală a administratorului.

Conectați un bucket compatibil cu S3 la spațiul de stocare extern Nextcloud

Montați un bucket de stocare a obiectelor compatibil în Nextcloud folosind backend-ul său S3, cu endpoint-ul, acreditările, domeniul de acces și pașii de verificare corecți.