Growi 4.5から5.0へアップグレード

How to upgrade growi4.5 to 5.0

以前にも、Growiのアップグレードを記載しておりますが、今回は4.xから5.xへのメジャーアップグレードになります。

下記の構成で、dockにてGrowiが稼働しているものとする

AppVersion
Growi4.5.19
mongodb4.4

なお、初めてdockerで構築する場合は、公式のインストール通りで構築出来るので以降の作業は不要となります

4.xを最新にしておこう 

もし、dockerで稼働しているのであれば、下記公式のアップグレード情報を基になるべく4.xを最新バージョンへアップデートしておいた方が良いかと思います。

執筆現在はv4.5.19

アップグレード作業 

アップグレード前に、必ずmongodbやアーカイブのバックアップを取っておきましょう
また、重要な変更点が多いので、公式の記事を一読しておきましょう

Growi停止 

docker-compose downしないように注意!

$ docker-compose stop

コンテナとElasticsearchボリューム削除 

$ docker-compose rm app
 Going to remove growi-app-1 (y/N) y

$ docker-compose rm elasticsearch
 Going to remove growi-elasticsearch-1 (y/N) y

Elasticsearch コンテナから 利用していた docker volume を削除

$ docker volume ls|grep es_data
local     growi_es_data
$ docker volume rm growi_es_data

イメージ削除 

イメージID(07d ded 5e3)は自分の環境に合わせて変更してください

$ docker images|grep growi
growi_app                                       latest          07d9d010ddc1   25 minutes ago   781MB
weseek/growi                                    4               dedb45121a0e   10 days ago      753MB
growi_elasticsearch                             latest          5e32778e509f   4 months ago     981MB

$ docker rmi 07d ded 5e3

リポジトリ更新 

編集したファイルがあれば、バックアップを取っておきましょう

$ pwd
/growi

$ cp docker-compose.yml docker-compose.yml.bak

$ git pull

私の場合、docker-compose.ymlとelasticsearch/Dockerfileに変更があったため、下記の作業が必要でした

$ git pull
-
Please commit your changes or stash them before you merge

$ git checkout docker-compose.yml
$ git checkout elasticsearch/Dockerfile

$ git pull origin master

docker-compose.yml編集 

git pull したdocker-compose.ymlは初期値に戻っているので、バックアップを取ったdocker-compose.yml.bakと比較しながら、編集します
私の場合のDiff

--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -6,7 +6,7 @@ services:
       context: .
       dockerfile: ./Dockerfile
     ports:
-      - 127.0.0.1:3000:3000    # localhost only by default
+      - 3000:3000    # localhost only by default
     links:
       - mongo:mongo
       - elasticsearch:elasticsearch
@@ -16,15 +16,20 @@ services:
     environment:
       - MONGO_URI=mongodb://mongo:27017/growi
       - ELASTICSEARCH_URI=http://elasticsearch:9200/growi
-      - PASSWORD_SEED=changeme
+      - PASSWORD_SEED=ae9xxxxxxxxxxxxxxxxxxxxxxx
       # - FILE_UPLOAD=local     # activate this line if you use local storage of server rather than AWS
+      - FILE_UPLOAD=aws     # activate this line if you use local storage of server rather than AWS

もし、docker-compose.yml以外にも変更しているファイルがあれば、適宜、編集しましょう

ビルド 

$ docker-compose build

Successfully builtが表示され成功を確認

起動 

$ docker-compose up -d

これで、今まで通り接続し、ログイン出来れば完了です

v5互換形式へページ変換 

Growiへ管理者でログインすると、下記の警告が表示されるかと思います

このまま、変換リンクを押したいところですが、メンテナンスモードにしないと失敗します

左項目のアプリ設定をクリックし、右項目の最下行のメンテナンスモードを開始します

その後、v5互換形式へ変換を開始します

変換が無事完了したら、メンテナンスモードを終了しておきましょう

今回のv5へのアップグレードでは、パーマリンクが変更になったため、戸惑いましたが、自分だけのWikiだと、それほど問題ではないので、アップグレードに踏み切ったのですが、職場や仲間・サークルで運用していた場合は、しっかりと検討する必要がありそうです
アップグレードした感想としては、大半のOSSやアプリではアップグレードする度にメモリ消費が多くなったり、重くなって快適さが損なわれる場合が多いのですが、Growi v5.xでは、elasticsearchが7へ上がったこともあり、検索速度の向上や全体的な速度向上が実感でき、より快適になったのではないかと思います


See also