2023年06月21日

Nextcloud 突然止まる→アップデート

 快調に働いてくれていた Nextcloud(いや、ときどき挙動不審だったけど、それはともかく)が、突然停止しました。

20230621-1.jpg

 あーそうか、ロリポップから「PHP8.2(モジュール版)の提供に関するご案内」てのが来てたなあ。Nextcloud の動作チェックしなくちゃな、と思いながらも、先送りにしていた。そのせいだな。

 Nextcloud をアップデートすればいいはずですが、この状況になってしまったらアップデートもできない。というわけで、アップデートのために、CGI版の PHP 8.1 に戻しました。ロリポップのサーバコントロールパネルから簡単に変更できます。

20230621-2.jpg

 とりあえず Nextcloud にログインできるようになったので、「設定→概要」を開きます。アップデートのボタンがあります。ただし、最新版に直接アップデートはできないので、マイナーバージョンのアップグレードをやって、そのあとメジャーバージョンのアップグレードを順番にやっていきます。

20230621-3.jpg

 アップデーターの画面に行くと、「Start update」というボタンがあるので、これを実行。

20230621-4.jpg

 しかし、途中の Verifying integrity で失敗した。その後、こういう表示が出るようになって、アップデートを継続できなくなってしまった。

20230621-5.jpg

 いろいろ情報を検索すると、以下の情報を発見。「Nextcloudでアップデートに失敗して再開できなくなった時の対処」。ビンゴじゃん。原因はメモリ不足らしい。

 上記の記事に従って、data フォルダ直下にある updater-XXXXXX というフォルダを削除する。めっちゃ時間かかります。ロリポップの FTP だと途中でおかしくなってしまうので、FileZilla を使いました。

20230621-11.jpg

 再開する前に、忘れずにメモリ容量を拡張しておく。まず、ロリポップのサーバコントロールパネルで PHP の設定を開き、「php_value, php_flagを利用可能にする 」を ON にする。

20230621-12.jpg

 そして、Nextcloud インストールディレクトリの直下にある .htaccess を開いて、<IfModule mod_php.c>...</IfModule> の間に以下の行を追加。

php_value memory_limit 512M

2023/11/3 追記:Nextcloud 26.0.2 から 26.0.8 にアップグレードしようとして、上と同じ手順を踏んだのですが、PHP 8.2 CGI 版では .htaccess ではなく、.user.inimemory_limit=512M と記載する必要があるようです。

 Nextcloud アップデーターの画面に戻って、「Start update」を再度実行。今度は通りました。

20230621-7.jpg

 「Disable maintenance mode and continue in the web based updater」を押す。次の画面になる。

20230621-8.jpg

 「アップデートを開始」を押すと、アップデートの作業が行われ、新バージョンの Nextcloud のトップページに移る。データはちゃんと残っています。

20230621-9.jpg

 もう一度「設定→概要」を実行すると、今度は次のメジャーバージョンへのアップデートができるようになっている。なお、メモリ設定はリセットされているので、.htaccess への追記を忘れないように。

20230621-10.jpg

 26.0.2 までアップデートしたところで止めました。27.0.0 は先週出たばかりなので、さすがに少し待った方がいいだろう。最後に PHP を「8.2 モジュール版」に戻して完了。無事動いています。

Posted at 2023年06月21日 23:55:02
email.png