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.
Quando la pagina di amministrazione di Nextcloud indica che i processi in background non sono stati eseguiti di recente, la pulizia, le notifiche e altre attività pianificate potrebbero subire dei ritardi. Su un server systemd, la soluzione consiste solitamente nell'eseguire Nextcloud cron.phpcon l'account del server web tramite un servizio systemd, quindi pianificare l'esecuzione di tale servizio con un timer abilitato. Il manuale di amministrazione di Nextcloud fornisce un esempio con due unità; i percorsi e l'account di servizio devono corrispondere alla propria installazione.
I processi in background di Nextcloud vengono eseguiti quando cron.phpviene richiamato. Un servizio systemd definisce il comando da eseguire; un timer avvia tale servizio a intervalli regolari. Se il servizio viene eseguito manualmente ma il timer non si attiva mai, è necessario concentrarsi sull'attivazione del timer. Se il timer si attiva ma il servizio fallisce, è necessario esaminare il comando, l'ambiente PHP e i permessi.
Prima di apportare qualsiasi modifica, verifica la directory Nextcloud e l'utente HTTP effettivi. Questo esempio presuppone l'utilizzo /var/www/nextclouddi e www-data, comuni su Debian e Ubuntu. L'account potrebbe essere wwwrun, apache, o un altro utente su sistemi diversi. Nextcloud richiede l'esecuzione dei suoi processi da riga di comando come utente HTTP per garantire la coerenza della proprietà dei file. Consulta la documentazione occ di Nextcloud .
Prova lo stesso eseguibile PHP e lo stesso script cron che intendi utilizzare con systemd:
sudo -u www-data /usr/bin/php -f /var/www/nextcloud/cron.php
Sostituisci l'account, il percorso PHP e il percorso Nextcloud con quelli del tuo host. Se il comando segnala un errore PHP, un'estensione mancante, un problema di autorizzazione, la modalità di manutenzione o un errore di connessione al database, risolvi prima questo problema; il timer non può correggere un comando non riuscito.
Apri le impostazioni di amministrazione → Impostazioni di base → Processi in background e seleziona Cron se non è già selezionato. Puoi anche eseguire questo comando dalla directory di Nextcloud:
cd /var/www/nextcloud
sudo -E -u www-data php occ background:cron
Nextcloud precisa che selezionare Cron nelle impostazioni di amministrazione non è strettamente necessario se cron.phplo script viene eseguito dalla riga di comando, poiché la modalità viene impostata automaticamente. Impostandola esplicitamente, la modalità di produzione desiderata risulta chiara. Nextcloud consiglia di utilizzare cron di sistema per gli ambienti di produzione; la documentazione relativa ai processi in background include anche i timer di systemd come alternativa per la pianificazione.
Crea o aggiorna /etc/systemd/system/nextcloudcron.servicecon il seguente contenuto. Usa il percorso completo di PHP in modo che systemd non dipenda da una shell interattiva 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
Passa Userall'account del server web e imposta entrambi i percorsi alle posizioni PHP e Nextcloud corrispondenti. La condizione verifica che l'istanza funzioni normalmente prima di eseguire il job. Se la condizione non viene soddisfatta, systemd potrebbe saltare il servizio; verifica se Nextcloud è in modalità di manutenzione e controlla il journal prima di rimuovere o modificare la condizione. Mantieni KillMode=process, come nell'esempio di Nextcloud, in modo che i programmi esterni avviati da cron possano continuare dopo la terminazione del processo cron. L'unità di servizio non necessita di una [Install]sezione.
Crea /etc/systemd/system/nextcloudcron.timer. Questa pianificazione inizia cinque minuti dopo l'avvio e poi attende cinque minuti dopo ogni attivazione del servizio:
[Unit]
Description=Run Nextcloud cron.php every 5 minutes
[Timer]
OnBootSec=5 min
OnUnitActiveSec=5 min
Unit=nextcloudcron.service
[Install]
WantedBy=timers.target
Riavvia systemd in modo che legga i file di unità, quindi abilita e avvia il timer con un unico comando:
sudo systemctl daemon-reload
sudo systemctl enable --now nextcloudcron.timer
L'attivazione fa sì che il timer si avvii ai successivi avvii; --nowlo avvia immediatamente. Non abilitare il servizio stesso come se fosse un timer ricorrente. Il timer è l'unità che appartiene a timers.target. Il manuale attuale di Nextcloud spiega queste impostazioni di intervallo e il comando di attivazione necessario; le versioni precedenti del manuale includevano una sezione di installazione obsoleta per il servizio, quindi segui invece l'esempio dell'unità corrente.
Verifica lo stato del timer e la prossima esecuzione programmata:
systemctl status nextcloudcron.timer
systemctl list-timers nextcloudcron.timer
Il timer dovrebbe indicare se è in attesa o attivo e l'elenco dovrebbe mostrare l'orario della prossima attivazione. Quindi, esamina l'ultima esecuzione del servizio:
systemctl status nextcloudcron.service
journalctl -u nextcloudcron.service --since today
Un timer può rimanere attivo anche quando ogni esecuzione del servizio fallisce, quindi è necessario esaminare entrambe le unità. Se il servizio non è presente o systemd rifiuta il file, eseguire systemd-analyze verify /etc/systemd/system/nextcloudcron.service /etc/systemd/system/nextcloudcron.timer, correggere il problema di sintassi o di percorso segnalato, quindi ricaricare systemd. Se il servizio termina con un errore, l'output del journal spesso identifica un percorso PHP non valido, un utente errato, una condizione non riuscita o un errore di runtime di Nextcloud. Se il timer non ha una prossima esecuzione, verificare il nome esatto del file del timer, eseguire daemon-reloade confermare che sia stato abilitato con systemctl is-enabled nextcloudcron.timer.
Dopo la successiva attivazione del timer, controlla nuovamente lo stato dei processi in background di Nextcloud. Dovrebbe mostrare un orario di esecuzione recente anziché un avviso di attività obsolete. Se sia il timer che il servizio segnalano esecuzioni riuscite, ma la pagina di amministrazione continua a mostrare un orario obsoleto, controlla i log dell'istanza e la versione di PHP utilizzata dal server web; la versione di PHP da riga di comando potrebbe differire da quella del runtime web. Questa configurazione riguarda la pianificazione di systemd su un normale host Linux. Le installazioni containerizzate e appliance potrebbero gestire cron tramite il proprio supervisore dei servizi, quindi utilizza il metodo supportato da tale piattaforma anziché aggiungere unità host che non possono accedere ai file del container.
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.
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.
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.
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.
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.
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.
Esegui in modo sicuro la riparazione OCC di Nextcloud, visualizza in anteprima le modifiche al database e verifica il motivo per cui l'avviso potrebbe persistere.
Consenti il caricamento di file di dimensioni maggiori nel browser Nextcloud allineando le impostazioni di PHP, Nginx o Apache, dello spazio di archiviazione temporaneo e del timeout, e verifica quale limite sta bloccando il file.
Imposta il limite di memoria PHP effettivamente utilizzato da Nextcloud, riavvia il servizio corretto e conferma l'impostazione di 512 MB nella Panoramica di amministrazione.
Monta un bucket di object storage compatibile in Nextcloud utilizzando il suo backend S3, con l'endpoint, le credenziali, l'ambito di accesso e i passaggi di verifica corretti.