【Nextcloud】システムのCronにバックグラウンドジョブを設定する。

Nextcloudのバックグラウンドジョブ(メンテナンス用のスクリプト)が自動実行されるように設定します。

設定ページ → "基本設定" → "バックグラウンドジョブ" で、実行方法を選択します。可能であればシステムのCronに登録するのがベストであるようなので、そうする。

nextcloud_bgjob.png

続いてコマンドラインでの設定。

バックグラウンドで定期的に実行するスクリプトは、

(Nextcloudを設置したディレクトリ)/cron.php

です。

うちの環境では、設置ディレクトリは /var/www/nextcloud なので、以下、そのように記述します。

また、このスクリプトは(Ubuntuの場合)www-dataユーザで実行する必要があるので、ユーザ:www-dataのCronに登録せねばなりません。ということで、

$ sudo crontab -u www-data -e

でエディタを開いて、

*/5 * * * * /usr/bin/php -f /var/www/nextcloud/cron.php

と記述して保存。5分おきに cron.php を実行する、という設定です。

メモリキャッシングで APCu の使用を設定している場合、「コマンドラインからのPHP実行時にAPCuを有効にする」という設定が必須です。

/etc/php/バージョン番号/cli/php.ini の末尾に、

apc.enable_cli=1

を追記します。Nextcloud管理画面で「 最終ジョブ実行は xx時間前 です。何か問題が発生しています。」という警告が表示されて、Cronジョブが上手く動いていないような場合は、これをチェックしてみてください。

Cronに登録したバックグラウンドジョブが適切に実行されない原因は他にもありますが、php-apcuの設定ミスの所為かどうか切り分けるには、コマンドラインで

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

を実行してみてください。

running maintenance(2)
running maintenance(1)

みたいなメッセージが出力されたら APCu の設定には問題がありません。何も出力されなかった場合は上記の設定を確認してください。

これで問題が解消されるかもしれません。

※ うちの環境は…

  • Ubuntu 20.04 LTS
  • Apache 2.4.41
  • PHP 7.4.3
  • MariaDB 10.3.29
  • Nextcloud 22.0.0

カテゴリ: