Help us understand the problem. What is going on with this article?

Nextcloud 16 へのアップデート方法について

More than 1 year has passed since last update.

はじめに

Nextcloudは、自前のサーバを使って手軽にセキュアなファイル共有環境を実現できるオンラインストレージです。
2019年4月25日に最新メジャーアップデートとして Nextcloud 16 がリリースされました。
今回は、Nextcloud 16 へのアップデートの手順をまとめます。

おおまかな手順

  1. データベースのバックアップ。
  2. Nextcloud 15 の最新版にアップデート。
  3. Nextcloud 16 をダウンロードし配備。
  4. アップグレードコマンド実施。

サーバ環境

今回の手順は、以下の環境で実施しております。

  • Nextcloud 15.0.5
  • CentOS7
  • Nginx
  • PHP 7.2
  • MariaDB 10.3
  • Redis 3.2

細かい手順

1. データベースのバックアップ

データベースの変更を伴うため、作業前にデータベースのバックアップをおすすめします。
今回の環境は MariaDB となりますので、以下のようなコマンドでバックアップを取得します。

$ mysqldump -u root -p nextcloud > backup.sql
  • nextcloud は Nextcloud で利用しているデータベース名を指定します。
  • backup.sql は バックアップデータの出力パス/ファイル名を指定します。

2. Nextcloud 15 の最新版にアップデート

Nextcloud 16 にアップデートするには、アップデートしようとする Nextcloud を Nextcloud 15 の最新版にアップデートしておく必要があります。
今回の環境は Nextcloud 15.0.5 なので、現時点(2019年4月28日)の最新版である 15.0.7 にアップデートします。

※もし現在の Nextcloud のバージョンが 14 以下の場合は、メジャーバージョンを一つずつ上げていく必要があります(例: Nextcloud 13 からアップデートするには、 13 → 13の最新版 → 14の最新版 → 15の最新版というように順番にあげていきます)。手順としてはこの手順を繰り返す形となります。

まず、最新版のアップデートが取得できる状態か確認します。

$ sudo -u nginx php /var/www/html/nextcloud/occ update:check
Nextcloud 15.0.7 is available. Get more information on how to update at https://docs.nextcloud.com/server/15/admin_manual/maintenance/upgrade.html.
1 update available

1 update available のような表示があればアップデートが可能です。

引き続いてアップデートを実行します。

$ sudo -u nginx php /var/www/html/nextcloud/updater/updater.phar 
Nextcloud Updater - version: v14.0.2RC2-7-g57268cb

Current version is 15.0.5.

Update to Nextcloud 15.0.7 available. (channel: "stable")
Following file will be downloaded automatically: https://download.nextcloud.com/server/releases/nextcloud-15.0.7.zip

Steps that will be executed:
[ ] Check for expected files
[ ] Check for write permissions
[ ] Create backup
[ ] Downloading
[ ] Verify integrity
[ ] Extracting
[ ] Enable maintenance mode
[ ] Replace entry points
[ ] Delete old files
[ ] Move new files in place
[ ] Done

Start update? [y/N] 

y を入力し、しばらく待ちます。

Start update? [y/N] y

Info: Pressing Ctrl-C will finish the currently running step and then stops the updater.

[✔] Check for expected files
[✔] Check for write permissions
[✔] Create backup
[✔] Downloading
[✔] Verify integrity
[✔] Extracting
[✔] Enable maintenance mode
[✔] Replace entry points
[✔] Delete old files
[✔] Move new files in place
[✔] Done

Update of code successful.

Should the "occ upgrade" command be executed? [Y/n] 

Y を入力します。

Should the "occ upgrade" command be executed? [Y/n] Y
Nextcloud or one of the apps require upgrade - only a limited number of commands are available
You may use your browser or the occ upgrade command to do the upgrade
Set log level to debug
Updating database schema
Updated database
Checking for update of app accessibility in appstore
Checked for update of app "accessibility" in appstore 
〜〜〜 (中略) 〜〜〜
Checking for update of app workflowengine in appstore
Checked for update of app "workflowengine" in appstore 
Starting code integrity check...
Finished code integrity check
Update successful
Maintenance mode is kept active
Reset log level

Keep maintenance mode active? [y/N] 

N を入力して、メンテナンスモードを抜けます。

アップデート後のバージョンを確認します。

$ sudo -u nginx php /var/www/html/nextcloud/occ status
  - installed: true
  - version: 15.0.7.0
  - versionstring: 15.0.7
  - edition: 

あとは Nextcloud にアクセスできるかどうかを確認します。

3. Nextcloud 16 をダウンロードし配備。

Nextcloud 16 のアップデートについては少しずつ展開されてきますが、すぐにアップデートがおりてきません。このため、手動でアップデートを行います。

まず、Nextcloud 16 のパッケージをダウンロードしてきます。チェックサムも確認します。

$ wget https://download.nextcloud.com/server/releases/nextcloud-16.0.0.tar.bz2
--2019-04-28 16:30:43--  https://download.nextcloud.com/server/releases/nextcloud-16.0.0.tar.bz2
Resolving download.nextcloud.com (download.nextcloud.com)... 176.9.217.52
Connecting to download.nextcloud.com (download.nextcloud.com)|176.9.217.52|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 61731904 (59M) [application/x-bzip2]
Saving to: ‘nextcloud-16.0.0.tar.bz2’

100%[==============================================================>] 61,731,904  6.77MB/s   in 27s    

2019-04-28 16:31:11 (2.22 MB/s) - ‘nextcloud-16.0.0.tar.bz2’ saved [61731904/61731904]
$ wget https://download.nextcloud.com/server/releases/nextcloud-16.0.0.tar.bz2.md5
--2019-04-28 16:31:13--  https://download.nextcloud.com/server/releases/nextcloud-16.0.0.tar.bz2.md5
Resolving download.nextcloud.com (download.nextcloud.com)... 176.9.217.52
Connecting to download.nextcloud.com (download.nextcloud.com)|176.9.217.52|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 59 [application/x-bzip2]
Saving to: ‘nextcloud-16.0.0.tar.bz2.md5’

100%[==============================================================>] 59          --.-K/s   in 0s      

2019-04-28 16:31:15 (3.41 MB/s) - ‘nextcloud-16.0.0.tar.bz2.md5’ saved [59/59]
$ md5sum -c nextcloud-16.0.0.tar.bz2.md5 < nextcloud-16.0.0.tar.bz2
nextcloud-16.0.0.tar.bz2: OK

ダウンロードした Nextcloud 16 パッケージを展開します。

$ tar xf nextcloud-16.0.0.tar.bz2

アップデート作業中に Nextcloud にアクセスが来ないように一時的にメンテナンスモードにします。

$ sudo -u nginx php /var/www/html/nextcloud/occ maintenance:mode --on
Maintenance mode enabled

現在の Nextcloud をバックアップしておきます。

$ sudo mv /var/www/html/nextcloud/ /var/www/html/nextcloud15

取得した Nextcloud 16 を配備します。

$ sudo mv nextcloud /var/www/html/

先にバックアップした Nextcloud から config.php をコピーします。

$ sudo cp -pi /var/www/html/nextcloud15/config/config.php /var/www/html/nextcloud/config/
$ ll /var/www/html/nextcloud/config/config.php 
-rw-r-----. 1 nginx nginx 946  4月 28 16:55 /var/www/html/nextcloud/config/config.php

Nextcloud システムディレクトリの所有者情報を変更します。

$ sudo chown -R nginx. /var/www/html/nextcloud/

4. アップグレードコマンド実施。

Nextcloud 16 に移行する準備が整いましたので、Nextcloud 16 へのアップデートを実行します。

$ sudo -u nginx php /var/www/html/nextcloud/occ upgrade
Nextcloud or one of the apps require upgrade - only a limited number of commands are available
You may use your browser or the occ upgrade command to do the upgrade
Set log level to debug
Updating database schema
Updated database

〜〜〜 (中略) 〜〜〜

Starting code integrity check...
Finished code integrity check
Update successful
Maintenance mode is kept active
Reset log level

現在のバージョンを確認します。

$ sudo -u nginx php /var/www/html/nextcloud/occ status
  - installed: true
  - version: 16.0.0.9
  - versionstring: 16.0.0
  - edition: 

メンテナンスモードを元に戻します。

$ sudo -u nginx php /var/www/html/nextcloud/occ maintenance:mode --off

あとがき

Nextcloud 16 では様々な新機能が盛り込まれております。Nextcloud のメジャーアップデートを実施するには、直前の最新バージョンにアップデートをしておく必要があるため、メジャーバージョンがかなり古いものの場合、一つずつアップデートしていく手間はありますが、手順はそれほど難しくないので、参考にしてみてください。

★この記事は、スタイルズ社のNextcloudサイトNextcloudブログにも公開しております!

S_Katz
いろんな技術に興味がありいろいろかじるも薄っぺらい知識多し。限られた髪資源もとい記憶容量を有効に使うため、得られた知識は Qiita にスワップアウトしていきたい。一応、AWSのソリューションアーキテクトとSysOpsアドミニストレータ(アソシエイトレベル)を所有、更新中。2020年はさらなる自身のスキルアップを兼ね、もっといっぱい記事書いて、先々は自社内トップの投稿数を目指したい。
stylez
WEB・業務システム、インフラ構築・運用監視まで、幅広い開発実績と経験豊富なエンジニアによる自社開発体制で、スピーディかつ高クオリティのシステム開発を手掛けています。AWSをはじめ各種クラウドやベンダーパートナーとして総合的なITサービスや、独自移行ツールを使ったマイグレーション、サーバーレスなシステム構築、コンテナを利用したDevOpsコンサルティングなどを提供しています。
https://www.stylez.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away