ということで、1.3.3 から 1.4.1 に更新したのでその時の記録。
これをやるために jail で動かしているといっても過言ではない。
基本的なやり方としてはこうです。
・現状の環境をバックアップして、コピーを作成。
・コピー側を v1.4.1 に更新。
・nginx の接続先を v1.4.1 に切り替える。
・v1.3.3 のほうは止めて、環境自体は何かあった時のために残しておく。
まず、すべてのアーカイブを取ります。
親ホスト環境で
バックアップが完了したら、とりあえずふたたび動かしておきます。
次に、更新用の環境を新規に作ります。
とりあえず、DBとredisとminio は今までのものにつなぐことにします。
先ほどアーカイブした mastodon_web をもとに、あらたにmastodon_web2を作成します。
Jails in zone mastodon
STATUS JID NIC IP Jailname
------ ---- ------ --------------- --------------------------------------------
DR 10 em0 192.168.0.41 mastodon_db
DR 5 em0 192.168.0.43 mastodon_minio
DR 11 em0 192.168.0.42 mastodon_redis
DR 12 em0 192.168.0.40 mastodon_web
DS N/A em0 192.168.0.44 mastodon_web2
DR 9 em0 192.168.0.45 naumanni
$ sudo qjail start -z mastodon mastodon_web2
Jail successfully started mastodon_web2
$ sudo qjail list -z mastodon
Jails in zone mastodon
STATUS JID NIC IP Jailname
------ ---- ------ --------------- --------------------------------------------
DR 10 em0 192.168.0.41 mastodon_db
DR 5 em0 192.168.0.43 mastodon_minio
DR 11 em0 192.168.0.42 mastodon_redis
DR 12 em0 192.168.0.40 mastodon_web
DR 13 em0 192.168.0.44 mastodon_web2
DR 9 em0 192.168.0.45 naumanni
あとは、新たに作ったmastodon_web2 に入って作業します。
できました。あとはdbの更新と assets の precompile です。
準備完了。
一旦user mastodon から抜けて、root で nginx の設定を変えます。
/usr/local/etc/nginx/mastodon.conf の中で、mastodon_web になっているところを mastodon_web2 に変更します。
テストして大丈夫だったら動かしていきます。
最後に、 mastodon_web に入って、 nginx の設定も修正します。
上と同様に、/usr/local/etc/nginx/mastodon.conf の中で、mastodon_web になっているところを mastodon_web2 に変更してrestartします。
こっちがわの mastodo-*は古いバージョンなので、とりあえず、このままで止めておきましょう。
まとめ:
普通に手順通りやれば、どっぱまるところはほとんどありません。
1.3系列から1.4系列に上がる際に、 bootsnap と cld3 が追加されたため、FreeBSDで動かないという問題が発生していましたが、v1.4.1 で解決できたのでよかったです。
作業をしてくださった方々、ありがとうございました。
はまりどころ:
・qjail create -a する際に、領域を zfs で確保しているとちょっとおかしなことになりますが、強引にmvしてしまったら動いてます。なんとなく、これは qjail のバグのような気もする。
・追加で protobuf を入れないと、bundle install の途中でこけます。
・nginx は別の jail で動かしたほうがいい気がしてきた。今更ですが。