文具丼のMastodnを更新(1.3.3 -> 1.4.1) のつづき
やったこと
文具丼 - https://co-mastdn.ga - v1.4.1をv1.4.2、v1.4.3と連続でアップデートを行いました。
環境
- AWS EC2
- Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-72-generic x86_64)
- ドメインはfreenom.com
- メール送信はSendgrid
- Non-Docker Mastodon
- 作業前のバージョンは$ v1.4.1
アップグレードノートを読む
例によってアップグレードノートを読みます。
このリリースでは、相互参照整合性を確保するためのデータベースレベルの制約が追加されています。以前は、競合状態とRubyコードベースの要求タイムアウトのために、間違ったレコードが残っていた可能性がありました。制約の違反が既に存在する場合、Postgresは制約を作成できないため、マイグレーションの前に実行する必要のある不正なレコードをデータベースでクリーンアップするためのレーキタスクを作成しました。
何らかの理由で、プロセスでデータベース移行を実行せずにコードを最初にデプロイできない場合(例:Capistranoデプロイメント)、rakeタスクのコードをRailsコンソールに単純にコピーして実行できます。
Postgresが外部キーの作成をどのように実行するかによって、マストドン活動が同時に起こっていると、移行は「デッドロック」で失敗する可能性があります。このような場合は、移行中にMastodonへのユーザーアクセスを無効にすることをお勧めします。これは1分以上かかることはありません。
「移行中にMastodonへのユーザーアクセスを無効にすることをお勧めします。これは1分以上かかることはありません。」
うちのサーバは53ユーザですので、それほど更新頻度が高くないと判断して特に通知せずにアップグレードしました。
作業
sshログインすると、ubuntuパッケージのお知らせが来てたので、pt-get のアップグレード。
$ ssh co-mastdn.ga
:
50 packages can be updated.
0 updates are security updates.
:
apt-get update && apt-get upgrade
$ sudo apt-get update -y
$ sudo apt-get upgrade -y
マストドンユーザに切り替えて、最新コードを落としてきます。
$ sudo su - mastodon
$ cd live
$ git branch
* (HEAD detached at v1.4.1)
master
production
$ git fetch
remote: Counting objects: 233, done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 233 (delta 181), reused 184 (delta 181), pack-reused 46
Receiving objects: 100% (233/233), 99.16 KiB | 0 bytes/s, done.
Resolving deltas: 100% (190/190), completed with 105 local objects.
From https://github.com/tootsuite/mastodon
0d23c81..947887f master -> origin/master
2cf7e64..ccdb1ff skylight -> origin/skylight
* [new tag] v1.4.3 -> v1.4.3
* [new tag] v1.4.2 -> v1.4.2
$ git checkout v1.4.2
M public/favicon.ico
Previous HEAD position was 8963f8c... Bump version to 1.4.1
HEAD is now at bb91104... Fix regression from #3748 - properly set defaultColumns (#3750)
mastodon@co-mastdn:~/live$ git branch
* (HEAD detached at v1.4.2)
master
production
アップグレードのノートに書いてあるコマンドを打っていきます。
bundle install --path=vendor/bundle
yarn install
RAILS_ENV=production bundle exec rails mastodon:maintenance:prepare_for_foreign_keys
RAILS_ENV=production bundle exec rails db:migrate
RAILS_ENV=production bundle exec rails assets:precompile
RAILS_ENV=production bundle exec rails r Rails.cache.clear
各サービスを再起動して、アクセスしてみると
$ sudo systemctl restart mastodon-*.service
$ sudo systemctl restart nginx
ところが!
ログインはできるのですが、ローカルタイムラインと連合タイムラインが500 internal errorを吐いて表示してくれませんでした。
あわててアップグレードノートを見返しましたが、特に何もかいてありません。
そこでv1.4.3を見てみると、
これは修正プログラムのリリースです
残念なことにv1.4.2の直後に、プルリクエストの1つから回帰が通知されました。これは、マストドン・ソーシャルとグリッチ・ソーシャルで1週間テストしていたにもかかわらず、早期に気付かなかった。これは、通知された直後に修正された重要なプライバシーバグ(#3752)です。
特別なアップグレード手順は必要ありません。このリリースは、v1.4.2と同じです。コードのみを更新する必要があります。
これか!と思い、v1.4.3にcheckoutして再起動してみました。
$ git checkout v1.4.3
M public/favicon.ico
Previous HEAD position was bb91104... Fix regression from #3748 - properly set defaultColumns (#3750)
HEAD is now at 947887f... Bump version to 1.4.3
mastodon@co-mastdn:~/live$ git branch
* (HEAD detached at v1.4.3)
master
production
mastodon@co-mastdn:~/live$
mastodon@co-mastdn:~/live$
mastodon@co-mastdn:~/live$ sudo systemctl restart mastodon-*.service
mastodon@co-mastdn:~/live$ sudo systemctl restart nginx
因果関係までは調べてませんが、ローカルタイムラインも連合タイムラインも表示されるようになりました。