我が家では Raspberry Pi 上に構築した Nextcloud を運用しています。
先日何気なく管理画面を覗いたら、警告が表示されていました。
- バックグラウンドジョブ
最終ジョブ実行は 10日前 です。何か問題が発生しています。
仕方がないので、手動で実行することにしました。
目次
やること
エラーになった Nextcloud のバックグラウンドジョブを手動で実行します。
環境
サーバ
- 本体
Raspberry Pi 3 Model B
作業手順
PHPパスの確認
Nextcloud は PHP で開発されています。
PHP でバックグラウンドジョブを実行するため、手動実行に際して事前にパスを確認しておきます。
PHP 7.3 が稼働していることがわかります。
$ which php
/usr/bin/php
$ /usr/bin/php -v
PHP 7.3.14-1~deb10u1 (cli) (built: Feb 16 2020 15:07:23) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.14, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.3.14-1~deb10u1, Copyright (c) 1999-2018, by Zend Technologies
実行ファイルの確認
Nextcloud の(バックグラウンドジョブを処理する)PHP ファイルの場所を確認します。
Nextcloud ディレクトリの直下にある cron.php
が対象のファイルです。
DocumentRootの確認
Nextcloud ディレクトリは(通常 DocumentRoot 配下にあるため)DocumentRoot の場所を確認します。
私の環境では、cron.php
はDocumentRoot 配下の Nextcloud ディレクトリ直下にありました。
$ cat /etc/apache2/sites-available/000-default.conf | grep DocumentRoot
DocumentRoot /var/www/html
$ ls -lh /var/www/html/nextcloud/cron.php
-rw-r--r-- 1 www-data www-data 5.1K 6月 25 10:53 /var/www/html/nextcloud/cron.php
ジョブ実行
バックグラウンドジョブを実行します。
一般ユーザーだと下記エラーになります。
$ /usr/bin/php -f /var/www/html/nextcloud/cron.php
Cannot write into "config" directory!
This can usually be fixed by giving the webserver write access to the config directory
Or, if you prefer to keep config.php file read only, set the option "config_is_read_only" to true in it.
See https://docs.nextcloud.com/server/19/go.php?to=admin-config
sudo
でユーザーを指定して実行します。
ユーザー www-data
は、Debian(Raspberry Pi OS)のデフォルト Apache 実行ユーザーです。
※ちなみに、RHEL(CentOS など)のデフォルト Apache 実行ユーザーは daemon
です。
$ sudo -u www-data /usr/bin/php -f /var/www/html/nextcloud/cron.php
しばらく(数分)待つと、バックグランドジョブの実行が完了し、エラー表示も消えました。
※この画面は、[設定] - [基本設定] の中にあります。