owner203の世界にはNextcloudを導入しています。Nextcloud 15から使い続けていて、無料のプライベートクラウドとして大変お世話になっています。Nextcloud 18もリリースしてしばらくたっていましたので、今回はNextcloudメジャーバージョンアップのやり方をメモして、今後自分の参考にもなると思います。
旧Nextcloudのルートフォルダを/var/www/nextcloudとします。
アップグレード前の準備
メンテナンスモードON
まず、メンテナンスモードをONにします。
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on
Apacheを停止
そしてApacheを一旦停止します。
sudo systemctl stop apache2.service
フォルダを改名
旧Nextcloudフォルダを別の名前に改名して、元の名前で新フォルダを作成します。
sudo mv /var/www/nextcloud /var/www/nextcloud-old sudo mkdir /var/www/nextcloud
これで準備は完了です。
新バージョンを展開
新バージョンをダウンロード
テンポラリフォルダに新バージョンをダウンロードします。
cd /tmp wget https://download.nextcloud.com/server/releases/nextcloud-18.0.0.tar.bz2 #最新バージョンは公式HPで確認できる tar -xjf nextcloud-18.0.0.tar.bz2 #ファイルを展開する
展開したすべてのファイルを先ほど作成した新フォルダにコピーします。
sudo cp -a /tmp/nextcloud/. /var/www/nextcloud
設定ファイルをコピー
旧Nextcloudフォルダから設定ファイルとデータフォルダをコピーします。
sudo cp /var/www/nextcloud-old/config/config.php /var/www/nextcloud/config/ sudo mkdir /var/www/nextcloud/data sudo cp -a /var/www/nextcloud-old/data/. /var/www/nextcloud/data
権限を設定
新Nextcloudフォルダの権限を設定します。
sudo chown -R www-data:www-data /var/www/nextcloud sudo find /var/www/nextcloud/ -type d -exec chmod 750 {} \; sudo find /var/www/nextcloud/ -type f -exec chmod 640 {} \;
これで新バージョンのファイル展開は完了です。
ConoHa Object Storageに関する修正
owner203はNextcloudのメインストレージとしてConoHa Object Storageを使っています。このままアップグレードを実行するとInternal Server Errorになってしまうため、予めNextcloudのソースコードを修正する必要があります。ConoHa Object Storageを使っていない場合はこれをやる必要がありません。
この問題の原因は、objectStoreV1関数でConoHa Object Storageを操作する時に、手動でcatalogNameを「Object Storage Service」に指定する必要がありますが、修正しないとNextcloudはデフォルトのcatalogName(デフォルト値は「swift」)しか使わないことです。この文章にもやり方を書いてありますが、要するにobjectStoreV1関数にパラメータ「$this->params」を渡せばいいということです。これはsedコマンドで一発でできます。
sudo -u www-data sed -i 's/objectStoreV1()/objectStoreV1($this->params)/gI' /var/www/nextcloud/lib/private/Files/ObjectStore/SwiftFactory.php
参考としてowner203のオブジェクトストレージ設定をここに載せます。
/var/www/nextcloud/config/config.php #前略... 'objectstore' => array ( 'class' => '\OC\Files\ObjectStore\Swift', 'arguments' => array ( 'username' => 'gncu00000000', 'password' => 'API_PASSWORD', 'container' => 'CONTAINER_NAME', 'region' => 'tyo2', 'url' => 'https://identity.tyo2.conoha.io/v2.0', 'tenantName' => 'gnct00000000', 'serviceName' => 'Object Storage Service', 'catalogName' => 'Object Storage Service', 'urlType' => 'publicURL', ), ), #後略...
アップグレードを実行
アップグレード
OCCでアップグレードを実行します。
sudo -u www-data php /var/www/nextcloud/occ upgrade
画面に従ってアップグレードします。
Apacheを起動
アップグレードが終わったらApacheを起動します。
sudo systemctl start apache2.service
メンテナンスモードOFF
メンテナンスモードをOFFにします。
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off
設定画面を確認
管理者でNextcloudにログインして、設定画面でアップグレードを確認します。URLは https://サーバードメインまたはIPアドレス/settings/admin/overview になります。場合によって、アップグレード後のデータベースの修正などを行う必要があります。基本的に指示に従えばすぐにできます。修正後はページを再読み込みして確認します。すべてのチェックに合格すればOKです。