バックグラウンドジョブのエラー
Nextcloudの設定をあれこれ見直してやっとエラーを解消できたと思ったらいつの間にか出てくるのが……
最終ジョブ実行は %s です。何か問題が発生しています。
Cronが動いていない。そんな時に見直したいこと。
cron.phpを実行するのは誰か
例えば私の環境ではnginxで実行する必要があります。
誰が実行しなければいけないのかは、管理設定のバックグラウンドジョブのところに書いてあります。
Cron(推奨)
システムのcronサービスを利用して、5分ごとにcron.phpファイルを実行します。全てのインスタンスで推奨されます。 cron.php はシステムユーザー “nginx” で実行する必要があります。
システムのcronサービスを利用して、5分ごとにcron.phpファイルを実行します。全てのインスタンスで推奨されます。 cron.php はシステムユーザー “nginx” で実行する必要があります。
ということなので、crontabはnginxで書きます。
crontab -u nginx -e
*/5 * * * * /usr/bin/php -f /var/www/nextcloud/cron.php
上記のような感じで書いておくと、5分ごとに実行してくれます。
念のため、phpは場所(usr/bin)までしっかり書いておきました。各自のphpの場所はwhich phpコマンドで確認できます。また、Nextcloudの設置場所(var/wwwのあたり)も各自違うと思うので確認しておいてください。
APCuを見直す
キャッシュ関連のエラー解消のために、すでにmemcachedやopcacheなどと一緒にAPCuを入れていると思います。
入れていなければインストールしましょう。
sudo dnf install php-pecl-apcu
すると、/etc/php.d/の中に40-apcu.iniというファイルができているので有効になっている部分を見直します。
以下は有効部分をまとめたもの。
[apcu]
extension = apcu.so
apc.enabled=1
apc.shm_size=32M
apc.ttl=7200
apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.serializer='php'
[NextcloudCronのためにこれを有効にしておく]
apc.enable_cli=1
特に最後に書いてあるapc.enable_cli=1が有効になっているかをチェックします。
APCuが動いているかの確認。下記のようになっていればOK。
php -i | grep -i apcu
/etc/php.d/40-apcu.ini,
apcu
APCu Support => Enabled
APCu Debugging => Disabled
nginxとphp-fpmを再起動しておく。
systemctl restart nginx
systemctl restart php-fpm
これでいけるはず。
みんながこうなりますように。