Execută joburi în fundal ownCloud în mod fiabil cu un temporizator Systemd

Dacă pagina de administrare a ownCloud raportează că joburile în fundal nu rulează, curățarea în coadă și alte lucrări programate pot avea întârzieri până când cineva vizitează site-ul. Pe un server Linux gestionat de systemd, configurați modul ownCloud background-job pentru Cron și utilizați un cronometru pentru a rula occ system:cronca și cont de server web. Documentația actuală a serverului ownCloud recomandă cron-ul sistemului pentru lucrările regulate în fundal și menționează în mod specific cronometrele systemd ca o altă modalitate de a programa comenzile.

Acest ghid este pentru ownCloud Server Classic instalat direct pe o gazdă Linux. Nu se aplică pentru ownCloud Infinite Scale, care are o arhitectură diferită, sau pentru imaginea oficială ownCloud Docker, care rulează deja cron intern. Pentru Docker, urmați setările documentate ale imaginii în loc să creați un al doilea cronometru pentru gazdă. Consultați documentația curentă a joburilor în fundal ale serverului ownCloud .

Verificați comanda înainte de a modifica programul

Un serviciu systemd definește comanda care trebuie executată; un cronometru pornește periodic serviciul respectiv. Mai întâi confirmați calea de instalare ownCloud și contul serverului HTTP. Exemplele de mai jos utilizează /var/www/owncloudși www-data, comune pe Debian și Ubuntu. Alte distribuții Linux pot utiliza wwwrun, apache, sau un alt cont.

Executați comanda ownCloud manual pentru acel cont pentru a distinge o comandă nefuncțională de un program nefuncțional:

sudo -u www-data /usr/bin/php -f /var/www/owncloud/occ system:cron

Schimbați executabilul PHP și calea către pentru occa se potrivi cu serverul dvs. ownCloud recomandă utilizarea system:cronpentru joburi în fundal; ghidurile vechi care programează cron.phpse pot referi la comportamentul moștenit. O comandă curentă se poate termina fără a afișa un mesaj de succes, așadar verificați echo $?imediat după aceea starea sa de ieșire cu: 0înseamnă că comanda s-a încheiat cu succes. Dacă returnează o eroare, remediați mai întâi calea, instalarea PHP CLI, permisiunile, conectivitatea bazei de date sau eroarea ownCloud. Cronometrul va rula în mod repetat aceeași comandă eșuată dacă omiteți această verificare.

Setează ownCloud în modul Cron

În setările de administrator ale ownCloud, deschideți secțiunea background-jobs sau Cron și alegeți Cron . De asemenea, puteți seta planificatorul din directorul de instalare cu:

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

Aceasta selectează modul Cron; comanda programată rămâne occ system:cron. Manualul ownCloud spune că această comandă este echivalentă cu selectarea Cron în pagina de administrare. Cron este preferabil pentru un server care trebuie să proceseze joburi în mod fiabil, deoarece AJAX depinde de vizitele pe pagină și poate lăsa munca în așteptare în perioadele de liniște. Pentru o instanță personală mică, AJAX poate fi mai ușor, dar este mai puțin previzibil.

Creați serviciul systemd și cronometrul

Creați /etc/systemd/system/owncloudcron.servicecu contul HTTP real și calea ownCloud:

[Unit]
Description=ownCloud background jobs

[Service]
Type=oneshot
User=www-data
WorkingDirectory=/var/www/owncloud
ExecStart=/usr/bin/php -f /var/www/owncloud/occ system:cron

Type=oneshotIndică sistemului systemd că comanda rulează până la finalizare și apoi se închide. Furnizarea căii complete PHP evită dependența de PATHdisponibilitatea limitată a serviciilor de sistem. Directorul de lucru ajută ownCloud să rezolve căile relative. Mențineți contul de serviciu aliniat cu proprietarul fișierelor și accesului la date ownCloud. Nu rulați jobul ca root.

Apoi, creați /etc/systemd/system/owncloudcron.timer:

[Unit]
Description=Run ownCloud background jobs every 15 minutes

[Timer]
OnBootSec=5min
OnUnitActiveSec=15min
Unit=owncloudcron.service

[Install]
WantedBy=timers.target

Manualul ownCloud recomandă o cadență de 15 minute pentru exemplul său cron standard și recunoaște cronometrele systemd ca un planificator alternativ. Acest cronometru pornește la cinci minute după pornire și apoi programează rulări suplimentare la 15 minute după activarea serviciului. Dacă volumul de lucru necesită un alt interval, modificați-l OnUnitActiveSecîn mod deliberat și luați în considerare timpul necesar pentru finalizarea fiecărei rulări. Evitați configurarea unei alte intrări crontab pentru aceeași comandă; planificatoarele duplicate pot porni rulări redundante și pot îngreuna depanarea.

Spuneți sistemului systemd să reîncarce definițiile unităților, apoi activați și porniți cronometrul:

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

daemon-reloadeste necesar după crearea sau editarea fișierelor unității. Activarea cronometrului îl face să pornească automat după viitoarele porniri; --nowîl pornește în sesiunea curentă. Activați unitatea cronometru, nu doar serviciul.

Află de ce o rulare a fost omisă sau a eșuat

Verificați dacă cronometrul este activat și când va porni din nou:

systemctl is-enabled owncloudcron.timer
systemctl list-timers --all owncloudcron.timer
systemctl status owncloudcron.timer

Un cronometru activat ar trebui să apară în lista de cronometre odată cu următoarea activare. Dacă nu apare, confirmați numele fișierului unității, reîncărcați systemd și activați din nou cronometrul. Dacă cronometrul indică o funcționare, dar funcționarea ownCloud este încă întârziată, verificați serviciul și jurnalele sale:

systemctl status owncloudcron.service
sudo journalctl -u owncloudcron.service --since today

Căutați o cale greșită, un director de date inaccesibil, o extensie PHP lipsă sau o eroare în baza de date. Testați manual comanda exactă din fișierul de service pentru www-dataa reproduce mediul cât mai fidel posibil. De asemenea, verificați dacă ați utilizat comanda ownCloud occ system:cron, în loc să copiați un exemplu Nextcloud care invocă cron.php.

Verificați dacă ownCloud procesează joburi

După unul sau două intervale de temporizare, confirmați că serviciul s-a finalizat cu succes și că temporizatorul are programată o activare ulterioară. Apoi, verificați starea jobului în fundal pe pagina de administrator ownCloud. Ora ultimei rulări afișată ar trebui să avanseze, iar un avertisment Cron învechit ar trebui să dispară. Dacă systemd raportează succes, dar avertismentul persistă, inspectați jurnalul aplicației ownCloud și verificați dacă interfața web este conectată la aceeași instanță și bază de date pe care o utilizează instalarea din linia de comandă.

Pentru containerele ownCloud oficiale, nu instalați aceste unități gazdă decât dacă ați dezactivat intenționat planificatorul intern al containerului și documentația curentă a containerului ownCloud acceptă aranjamentul dvs. Configurația de aici este o soluție la nivel de gazdă pentru ownCloud clasic pe systemd; numele serviciilor, căile, versiunile PHP și comportamentul containerului depind de implementare.

Lasă un comentariu

Ștergeți în siguranță avertismentul ownCloud Apache .htaccess

Ștergeți în siguranță avertismentul ownCloud Apache .htaccess

Setați AllowOverride All doar pentru rădăcina web a ownCloud, validați vhost-ul Apache activ și reîncărcați în siguranță pentru a restaura regulile .htaccess.

Configurarea auditului ownCloud Enterprise și verificarea jurnalelor

Activați aplicația Enterprise Auditing a ownCloud, direcționați evenimentele admin_audit către un fișier jurnal protejat și confirmați că acțiunile reale ale utilizatorilor sunt înregistrate.

Conectează ownCloud Infinite Scale la Keycloak cu OIDC

Conectează ownCloud Infinite Scale la Keycloak cu OIDC

Aliniați emitentul realm-ului Keycloak, clientul web și revendicările utilizatorului pentru a permite ownCloud Infinite Scale să conecteze utilizatorii în mod fiabil pe clienții web și mobili.

Mutați fișierele ownCloud către un nou proprietar fără a pierde partajările

Transferă fișierele deținute și partajările de ieșire cu comanda occ din ownCloud, înțelege ce rămâne în urmă și verifică accesul înainte de a șterge contul vechi.

Accelerează interogările ownCloud 10 prin gestionarea în siguranță a indexurilor

Află când necesită atenție indexurile bazei de date ownCloud 10, cum să aplici în siguranță actualizările schemei acceptate și când optimizarea interogărilor sau o modificare a bazei de date reprezintă cea mai bună soluție.

Montați o partajare SMB/CIFS în ownCloud fără o montare Linux

Conectați o partajare de rețea Windows sau Samba la ownCloud prin intermediul spațiului de stocare extern, verificați acreditările și depanați în siguranță folderele inaccesibile.

Ștergeți în siguranță versiunile fișierelor ownCloud cu comanda occ

Ștergeți în siguranță versiunile fișierelor ownCloud cu comanda occ

Eliminați fiecare versiune de fișier ownCloud Server Classic stocată pentru un cont sau pentru toți utilizatorii și faceți diferența între o eliminare completă și o expirare bazată pe retenție.

Conexiune mobilă ownCloud refuzată? Verificați adresa URL și accesibilitatea

Conexiune mobilă ownCloud refuzată? Verificați adresa URL și accesibilitatea

Urmăriți un refuz al conexiunii mobile ownCloud verificând adresa URL a serverului, rețeaua telefonică, endpoint-ul HTTPS și jurnalele serverului în ordinea corectă.

Execută joburi în fundal ownCloud în mod fiabil cu un temporizator Systemd

Înlocuiți rularea joburilor la cerere cu un cronometru systemd care rulează comanda occ system:cron acceptată de ownCloud la fiecare 15 minute.

Restaurați sincronizarea ownCloud WebDAV prin găsirea rutei defecte

Urmăriți cererea WebDAV prin Apache, Nginx sau un proxy invers, apoi confirmați că sincronizarea ownCloud funcționează cu un test PROPFIND autentificat.