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権限のない一般ユーザーだと動かない可能性があります

\ 最新情報をチェック /

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です