NextcloudでCUI環境でバージョンアップ
Nextcloudでバージョンアップをブラウザで実行するとタイムアウトとか何かでよくバージョンアップに失敗します。その都度一時ファイルを削除したりメンテナンスモードをOffにしたりして面倒くさいことが多いです
NextCloudアップデート失敗の原因と解決方法(ダウンロードで止まる)
ブラウザだとダウンロードで止まったりするので再起は、NextCloudのバージョンアップがあるとCUI環境で実行できる下記のようなシェルスクリプトでアップデートしています
$ sudo vim nextcloud_update.sh
#!/bin/bash
NC_DIR="/var/www/html/nextcloud"
OCC="${NC_DIR}/occ"
UPDATER="${NC_DIR}/updater/updater.phar"
if sudo -u apache php ${OCC} update:check | grep -q "Update to Nextcloud"; then
echo "Update available. Starting update."
else
echo "No update available. Exiting."
exit 0
fi
sudo -u apache php ${OCC} maintenance:mode --on
sudo -u apache php ${UPDATER}
sudo -u apache php ${OCC} upgrade
sudo -u apache php ${OCC} maintenance:mode --off
echo "Nextcloud update finished"
シェルスクリプトの解説
下記ではバージョンアップがあるとシェルスクリプトを続行します。バージョンアップが無い場合は終了する事にしています
if sudo -u apache php ${OCC} update:check | grep -q "Update to Nextcloud"; then
echo "Update available. Starting update."
else
echo "No update available. Exiting."
exit 0
fi
メンテナンスモードをONにします
sudo -u apache php ${OCC} maintenance:mode --on
アップデートを実行します。その後は対話式でアップデートが実行されます
sudo -u apache php ${UPDATER}
データベース等をアップグレードします
sudo -u apache php ${OCC} upgrade
メンテナンスモードをOffに戻します
sudo -u apache php ${OCC} maintenance:mode --off
このシェルスクリプトはrootで実行するか、sudo権限がありNOPASSで実行できる一般ユーザーで実行して下さい
シェルスクリプトの途中で、「sudo -u apache php~」のsudoを利用しているので、sudo権限のない一般ユーザーだと動かない可能性があります

