Nextcloudをアップグレードする
Nextcloudから新しいバージョンがリリースされ、アップグレードしたのでその際の手順です。管理者ページからウィザード形式で行う方法もありますが、上手くいかないことが多く手動で行いました。
前提として、ウェブサーバーにはNginx、データベースにはPostgreSQLを利用し、HTTPユーザはwww-data、サードパーティのアプリにCalendarとContactsをインストールしています。また、Nextcloudのルートディレクトリは/var/www/に、dataディレクトリは/var/www/nextcloud/内に配置しています。その他詳細はひとつ前のポストを確認ください。基本的にはドキュメントの通りに進めます。cf: Manual Nextcloud Upgrade
まず、管理者アカウントでhttps://example.com/settings/appsにアクセスしサードパーティアプリ(Calendar, Contacts)を無効化します。
次にoccコマンドを用いNextcloudをメンテナンスモードに切り替えます。cf: Using the occ Command
$ su
# cd /var/www/nextcloud
# sudo -u www-data php occ maintenance:mode --on
Backing up Nextcloudを参考にバックアップを作成します。データベースのバックアップの際にはデータベース名、サーバー、データベースのユーザ名、パスワードを適宜指定します。ex: [db_name]: nextclouddb, [server]: localhost, [username]: nextcloud
# cd ..
// Nextcloud backup
# rsync -Aax nextcloud/ nextcloud-dirbkp_`date +"%Y%m%d"`/
// Databese backup
# PGPASSWORD="password" pg_dump [db_name] -h [server] -U [username] -f nextcloud-sqlbkp_`date +"%Y%m%d"`.bak
Nextcloudのダウンロードページからアーカイブファイルをダウンロードし、/var/www/以外の場所で展開します。/var/www/には旧バージョンのNextcloudディレクトリが残っており、名前が衝突するためです。
# cd ~
// x.y.z is version number
# wget https://download.nextcloud.com/server/releases/nextcloud-x.y.z.tar.bz2
# tar -xjf nextcloud-x.y.z.tar.bz2
ウェブサーバーを停止します。
# systemctl stop nginx
旧バージョンのNextcloudディレクトリをnextcloud-oldのようにリネームします。
# mv /var/www/nextcloud /var/www/nextcloud-old-`date +"%Y%m%d"`
先ほど展開した新しいNextcloudを配置します。
# mv ~/nextcloud /var/www/
旧Nextcloudディレクトリからconfig.php, data, calendar, contactsを移行します。
# cd /var/www
# cp nextcloud-old-`date +"%Y%m%d"`/config/config.php nextcloud/config/
# cp -r nextcloud-old-`date +"%Y%m%d"`/data/ nextcloud/
# cp -r nextcloud-old-`date +"%Y%m%d"`/apps/calendar/ nextcloud/apps/
# cp -r nextcloud-old-`date +"%Y%m%d"`/apps/contacts/ nextcloud/apps/
ウェブサーバーを起動させます。
# systemctl start nginx
アップグレードはHTTPユーザで行うので、nextcloudディレクトリ以下全ての所有権を一時的にwww-dataに与えます。
# chown -R www-data:www-data /var/www/nextcloud/
occコマンドを用いNextcloudのアップグレードを行います。
# cd nextcloud
# sudo -u www-data php occ upgrade
アップグレードが始まりしばらく待ちます。問題がなければUpdate successfulと表示されます。
Setting Strong Directory Permissionsのスクリプトを実行し、各ファイルの権限を変更します。
# ~/nextcloud_permission.sh
最後にNextcloudのメンテナンスモードを解除します。
# sudo -u www-data php occ maintenance:mode --off
再びhttps://example.com/settings/appsに管理者アカウントでアクセスし、サードパーティアプリ(Calendar, Contacts)を有効にすればアップグレードは完了です。