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)を有効にすればアップグレードは完了です。