いつのまにかnextcloud
バージョン20がサポート外になっていたので、アップグレードすることにした。 20.0.7 から 20.0.14 、そして 20.0.14 から 21.0.7 と二度繰り返す必要があった。
すると、知らない手順が増えていた?のでメモ。
初めパスワードを入力するのかと思ったら、エラーとなる。
画面に表示されたコマンドをnextcloud
がインストールされたサーバーで叩く。
php -r '$password = trim(shell_exec("openssl rand -base64 48"));if(strlen($password) === 64) {$hash = password_hash($password, PASSWORD_DEFAULT) . "\n"; echo "Insert as \"updater.secret\": ".$hash; echo "The plaintext value is: ".$password."\n";}else{echo "Could not execute OpenSSL.\n";};'
すると
Insert as "updater.secret": 1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWX
The plaintext value is: 1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ12
60文字の英数字記号と64文字の英数字が表示されるので
/var/www/nextcloud/config/config.php
// 'updater.secret' => '01234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVW',
'updater.secret' => '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWX',
とupdater.secret
の値を書き換える。
これでアップデートが継続され、完了する。
で、例によって設定の概要画面を見るといくつか警告が。
ユーザーがインポートしたSSL証明書をチェックするバックグラウンドジョブが保留になっています。しばらくして再度確認してください。
ご使用のシステムには、デフォルトの電話地域が設定されていません。これは、国コードなしでプロファイル設定の電話番号を検証するために必要です。国コードなしで番号を許可するには、地域のそれぞれの ISO3166-1コード↗とともに "default_phone_region" を設定ファイルに追加してください。
データベースにいくつかのインデックスがありません。 大きなテーブルにインデックスを追加すると、自動的に追加されないまでに時間がかかる可能性があるためです。 "occ db:add-missing-indices"を実行することによって、インスタンスが実行し続けている間にそれらの欠けているインデックスを手動で追加することができます。 インデックスが追加されると、それらのテーブルへのクエリは通常はるかに速くなります。
テーブル "oc_filecache"のインデックス "fs_size"が見つかりません。
このインスタンスのphp-imagickモジュールはSVGをサポートしていません。互換性の向上のために、インストールすることをお勧めします。
php7.4からphp8.0に
警告内容を修正しようすると、いつのまにかphpバージョンが 7.4 から 8.1 1にアップグレードされていた。
$ sudo -u www-data php occ db:add-missing-indices
This version of Nextcloud is not compatible with > PHP 8.0.<br/>You are currently running 8.1.1
$ php -v
PHP 8.1.1 (cli) (built: Dec 31 2021 07:26:02) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.1, Copyright (c) Zend Technologies
with Zend OPcache v8.1.1, Copyright (c), by Zend Technologies
8.1 だとnextcloud
が動かないので、8.0にする。そもそも8.0がインストールされてないのでする。
あたりを参考に全て8.0で叩く。
sudo apt install php8.0-gd php8.0-mysql php8.0-curl php8.0-mbstring php8.0-intl
sudo apt install php8.0-gmp php8.0-bcmath php8.0-xml php8.0-zip
sudo apt install php8.0-fpm
php8.0をデフォルトバージョンとする。
$ sudo update-alternatives --set php /usr/bin/php8.0
update-alternatives: /usr/bin/php (php) を提供するためにマニュアルモードで /usr/bin/php8.0 を使います
$ php -v
PHP 8.0.14 (cli) (built: Dec 20 2021 21:22:38) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.14, Copyright (c) Zend Technologies
with Zend OPcache v8.0.14, Copyright (c), by Zend Technologies
nginx
のPHP-FPMの接続先を変更する。
/etc/nginx/sites-available/example.com.conf
upstream php-handler {
#server 127.0.0.1:9000;
#server unix:/var/run/php/php7.4-fpm.sock;
#server unix:/run/php/php7.4-fpm.sock;
server unix:/run/php/php8.0-fpm.sock;
}
これで良し!ようやく、警告に対応していく。
ユーザーがインポートしたSSL証明書をチェックするバックグラウンドジョブが保留になっています。しばらくして再度確認してください。
【Nextcloud】システムのCronにバックグラウンドジョブを設定する。 - freefielder.jp
↑にあるとおりsudo crontab -u www-data -e
して*/5 * * * * /usr/bin/php -f /var/www/nextcloud/cron.php
を5分毎に実行するようにcron
を設定する。
みたいなメッセージが出力されたら APCu の設定には問題がありません。何も出力されなかった場合は上記の設定を確認してください。
とあるけど、
/var/www/nextcloud/cron.php
// Log the successful cron execution
$config->setAppValue('core', 'lastcron', time());
あたりにecho "success";
と追記したら、それだけが出力されたから、何も出力されないのが問題ない、ということなのでは?どちらにせよ、ジョブが保留になっています、エラーは消えた。
Memcacheが有効でないというエラー
しかし、画面には表示されないOC\HintException: [0]: Memcache \OC\Memcache\APCu not available for local cache (Is the matching PHP module installed and enabled?)
というエラーが表示される。
sudo apt install php8.0-memcached php8.0-apcu
しても駄目。
回答は、先程の引用元サイトにもあるし、こちらにも同じことが書いてある。 なんかnextcloudのバックグラウンドジョブが動いてないんですけどー | くらげぜり~
etc/php/8.0/cli/php.ini
apc.enable_cli=1
「コマンドラインからのPHP実行時にAPCuを有効にする」という設定
をファイル末尾に追記。
ご使用のシステムには、デフォルトの電話地域が設定されていません。
こちらも警告どおりだが、 Nextcloud 21のセキュリティ&セットアップ警告の修正 default_phone_region(電話地域)を設定 – matoken’s memeにあるとおり
/var/www/nextcloud/config/config.php
'default_phone_region' ⇒ 'JP',
を追記する。
データベースにいくつかのインデックスがありません。
いつものとおりsudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices
を実行する。
このインスタンスのphp-imagickモジュールはSVGをサポートしていません。
sudo apt install php8.0-imagick
しても解消されず。
- 【Nextcloud】「このインスタンスのphp-imagickモジュールはSVGをサポートしていません」を修正する。 - freefielder.jp
- How to enable SVG for php-imagick - 🏷️ General - Nextcloud community
上記にはsudo apt install libmagickcore-6.q16-6-extra
とあるのだけど…
: パッケージ libmagickcore-6.q16-6-extra が見つかりません
E: 'libmagickcore-6.q16-6-extra' に一致するパッケージは見つかりませんでした
E: 正規表現 'libmagickcore-6.q16-6-extra' ではパッケージは見つかりませんでした
と見付からないので、sudo apt search libmagickcore
とすると
libmagickcore-6.q16-3-extra/bionic-updates,bionic-security,now 8:6.9.7.4+dfsg-16ubuntu6.12 amd64
low-level image manipulation library - extra codecs (Q16)
とヒットしたのでsudo apt install libmagickcore-6.q16-3-extra
をインストール。これで解消。
-
なのに
nextcloud
は動き続けていた。 ↩︎