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.
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 .
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.
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 /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.
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.
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.
Sostituisci le esecuzioni dei processi su richiesta con un timer systemd che esegue il comando occ system:cron supportato da ownCloud ogni 15 minuti.
Traccia la richiesta WebDAV attraverso Apache, Nginx o un proxy inverso, quindi verifica che la sincronizzazione di ownCloud funzioni con un test PROPFIND autenticato.
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 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.
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.