Esegui in modo affidabile i processi in background di ownCloud con un timer Systemd

Se la pagina di amministrazione di ownCloud segnala che i processi in background non sono in esecuzione, la pulizia in coda e altre attività pianificate potrebbero subire ritardi fino a quando qualcuno non visita il sito. Su un server Linux gestito da systemd, configura la modalità di esecuzione dei processi in background di ownCloud per Cron e utilizza un timer per l'esecuzione occ system:croncon l'account del server web. La documentazione attuale di ownCloud Server raccomanda l'utilizzo di cron di sistema per le attività in background regolari e indica specificamente i timer di systemd come un altro metodo per pianificare i comandi.

Questa guida è valida per ownCloud Server Classic installato direttamente su un host Linux. Non si applica a ownCloud Infinite Scale, che ha un'architettura diversa, né all'immagine Docker ufficiale di ownCloud, che esegue già cron internamente. Per Docker, seguire le impostazioni documentate dell'immagine anziché creare un secondo timer sull'host. Consultare la documentazione aggiornata sui processi in background di ownCloud Server .

Verificare il comando prima di modificare la pianificazione

Un servizio systemd definisce il comando da eseguire; un timer avvia periodicamente tale servizio. Innanzitutto, verifica il percorso di installazione di ownCloud e l'account del server HTTP. Gli esempi seguenti utilizzano /var/www/owncloude www-data, comuni su Debian e Ubuntu. Altre distribuzioni Linux potrebbero utilizzare wwwrun, apache, o un altro account.

Eseguire manualmente il comando ownCloud con quell'account per distinguere un comando non riuscito da una pianificazione non riuscita:

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

Modifica l'eseguibile PHP e il percorso in modo che occcorrispondano al tuo server. ownCloud consiglia di utilizzare system:cronper i processi in background; le vecchie guide che pianificano cron.phppotrebbero fare riferimento a comportamenti obsoleti. Un comando corrente potrebbe terminare senza stampare un messaggio di successo, quindi controlla il suo stato di uscita con echo $?immediatamente dopo: 0significa che il comando è terminato correttamente. Se restituisce un errore, correggi prima il percorso, l'installazione di PHP CLI, i permessi, la connettività al database o l'errore di ownCloud. Il timer eseguirà ripetutamente lo stesso comando non riuscito se salti questo controllo.

Imposta ownCloud in modalità Cron.

Nelle impostazioni di amministrazione di ownCloud, apri la sezione "Attività in background" o "Cron" e scegli "Cron" . Puoi anche impostare lo scheduler dalla directory di installazione con:

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

Questo seleziona la modalità Cron; il comando pianificato rimane occ system:cron. Il manuale di ownCloud afferma che questo comando è equivalente alla selezione di Cron nella pagina di amministrazione. Cron è preferibile per un server che deve elaborare i processi in modo affidabile perché AJAX dipende dalle visite alla pagina e potrebbe lasciare il lavoro in sospeso durante i periodi di inattività. Per una piccola istanza personale, AJAX può essere più semplice, ma è meno prevedibile.

Crea il servizio systemd e il timer

Crea /etc/systemd/system/owncloudcron.serviceil tuo account HTTP e il percorso ownCloud effettivi:

[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=oneshotIndica a systemd che il comando viene eseguito fino al completamento e quindi termina. Fornire il percorso PHP completo evita di dipendere dalle risorse limitate PATHdisponibili ai servizi di sistema. La directory di lavoro aiuta ownCloud a risolvere i percorsi relativi. Assicurati che l'account di servizio sia allineato con il proprietario dei file e dell'accesso ai dati di ownCloud. Non eseguire il job come root.

Successivamente, crea /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

Il manuale di ownCloud raccomanda una cadenza di 15 minuti per il suo esempio standard di cron e riconosce i timer di systemd come alternativa per la pianificazione. Questo timer si avvia cinque minuti dopo l'avvio del sistema e pianifica le esecuzioni successive 15 minuti dopo l'attivazione del servizio. Se il carico di lavoro richiede un intervallo diverso, modificatelo OnUnitActiveSecattentamente e considerate il tempo necessario al completamento di ciascuna esecuzione. Evitate di configurare un'altra voce crontab per lo stesso comando; la duplicazione degli scheduler può avviare esecuzioni ridondanti e rendere più difficile la risoluzione dei problemi.

Indica a systemd di ricaricare le definizioni delle unità, quindi abilita e avvia il timer:

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

daemon-reloadÈ necessario dopo aver creato o modificato i file di unità. L'attivazione del timer ne consente l'avvio automatico dopo i successivi avvii; --nowlo avvia nella sessione corrente. Abilitare l'unità timer, non solo il servizio.

Scopri perché una corsa è stata saltata o non è andata a buon fine

Verifica se il timer è attivo e quando verrà eseguito la prossima volta:

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

Un timer abilitato dovrebbe apparire nell'elenco dei timer alla successiva attivazione. In caso contrario, verificare il nome del file dell'unità, ricaricare systemd e riattivare il timer. Se il timer indica che è in esecuzione ma il lavoro di ownCloud è ancora ritardato, esaminare il servizio e i relativi log:

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

Cerca un percorso errato, una directory di dati inaccessibile, un'estensione PHP mancante o un errore del database. Testa manualmente il comando esatto nel file di servizio per www-datariprodurre l'ambiente nel modo più fedele possibile. Verifica inoltre di aver utilizzato il comando ownCloud occ system:cron, anziché copiare un esempio di Nextcloud che invoca cron.php.

Verifica che ownCloud stia elaborando i job

Dopo uno o due intervalli del timer, verifica che il servizio sia stato completato correttamente e che il timer abbia un'attivazione successiva programmata. Quindi controlla lo stato del processo in background nella pagina di amministrazione di ownCloud. L'ora dell'ultima esecuzione visualizzata dovrebbe avanzare e l'avviso Cron obsoleto dovrebbe scomparire. Se systemd segnala un esito positivo ma l'avviso persiste, controlla il registro applicazioni di ownCloud e verifica che l'interfaccia utente web sia connessa alla stessa istanza e allo stesso database utilizzati dall'installazione da riga di comando.

Per i container ownCloud ufficiali, non installare queste unità host a meno che tu non abbia disabilitato intenzionalmente lo scheduler interno del container e la documentazione attuale di ownCloud supporti tale configurazione. La configurazione qui presentata è una soluzione a livello host per ownCloud classico su systemd; i nomi dei servizi, i percorsi, le versioni di PHP e il comportamento del container dipendono dalla distribuzione.

Lascia un commento

Esegui in modo affidabile i processi in background di ownCloud con un timer Systemd

Sostituisci le esecuzioni dei processi su richiesta con un timer systemd che esegue il comando occ system:cron supportato da ownCloud ogni 15 minuti.

Ripristina la sincronizzazione WebDAV di ownCloud individuando il percorso interrotto

Traccia la richiesta WebDAV attraverso Apache, Nginx o un proxy inverso, quindi verifica che la sincronizzazione di ownCloud funzioni con un test PROPFIND autenticato.

Imposta l'URL pubblico di Nextcloud in modo che possa raggiungere se stesso.

Risolvi l'avviso di Nextcloud relativo all'indirizzo in uscita mancante impostando l'URL canonico e verificando il routing DNS, HTTPS e del proxy inverso dal server stesso.

Configurare la cache Redis di Nextcloud su Ubuntu 24.04

Configurare la cache Redis di Nextcloud su Ubuntu 24.04

Configurare APCu e Redis tramite un socket Unix locale per la memorizzazione nella cache e il blocco dei file in Nextcloud, con istruzioni per le versioni attuali e precedenti di Nextcloud.

Attivare l'esecuzione automatica di Nextcloud Cron con un timer Systemd

Controlla la modalità cron di Nextcloud, ripara il servizio systemd e il timer e verifica che i processi in background vengano eseguiti dopo l'avvio e ogni cinque minuti.

Rimuovi l'avviso di blocco dei file di Nextcloud con Redis

Abilita il blocco affidabile dei file in Nextcloud, scegli il backend Redis o Valkey più adatto e verifica che l'avviso scompaia senza rischiare modifiche simultanee ai file.

Cosa serve per ottenere una valutazione di sicurezza A+ da Nextcloud

Cosa serve per ottenere una valutazione di sicurezza A+ da Nextcloud

Risolvi i problemi più comuni riscontrati durante le scansioni di Nextcloud con gli aggiornamenti più recenti, HTTPS e HSTS, una configurazione precisa del proxy inverso e verifiche rispetto al server pubblico.

Abilita la crittografia lato server di Nextcloud con un impatto misurabile

Configura Nextcloud SSE per lo spazio di archiviazione che lo richiede, proteggi le chiavi di crittografia e misura l'impatto sul trasferimento dati e sulla CPU prima di crittografare i file esistenti.

Aggiungi la ricerca full-text di Elasticsearch a Nextcloud

Collega la ricerca file di Nextcloud a Elasticsearch, indicizza il contenuto dei documenti e scegli una configurazione adatta alle esigenze del tuo server e della tua sicurezza.

Imposta una politica di scadenza affidabile per i file eliminati da Nextcloud.

Imposta una politica di scadenza affidabile per i file eliminati da Nextcloud.

Configura Nextcloud per rimuovere i file eliminati dopo un periodo di conservazione definito, pianifica in modo affidabile le attività in background ed evita i comandi che svuotano il cestino di tutti gli utenti.