前提条件
- 非Docker
- Mastodonは、公式の手順で構築済みであること。
制限事項
- 本手順は、CentOS 7 にて使用したものである。
- Fedora Server (28) でも使えている。
特記事項
- アップデート作業後、CSS・画像ファイル等にアクセスが出来なくなった場合(403)は、Nginxの実行ユーザを「mastodon」に切り替えることで対応可能
手順
(重要)まず、公式のリリースノートを読み、手順を確認する。
https://github.com/tootsuite/mastodon/releases
以下に示す手順を鵜呑みにせず、公式の手順通り行うこと。
だいたい共通しているものを下に示す。
- Mastodonのサービス3点セットを止める
- データベースのバックアップを取る
- Mastodon専用ユーザに切り替える
- タグ一覧から任意のバージョンに上げる
- 依存パッケージのインストールを行う
- データベースマイグレートを行う(変更なしの場合は空振りするのでOK)
- アセットのプリコンパイルを行う
- Mastodonのサービス3点セットを動かす
前準備
Mastodon3点セットを止めて、mastodonユーザになる
sudo systemctl stop mastodon-{web,sidekiq,streaming}
sudo su - mastodon
データベースバックアップ
# DBが同一ホストで動いている場合
pg_dump --username=mastodon --no-owner mastodon > mastodon.`date +%Y%m%d_%H%M%S`.pgdump
# DBのホストが違う場合
pg_dump --host=10.1.1.20 --username=mastodon --no-owner mastodon > prefix.`date +%Y%m%d_%H%M%S`.pgdump
--no-owner
オプションは必須ではない。異なる環境にデプロイする場合にオーナー指定が邪魔になることがあるので、念のため付加している。
パブリックディレクトリバックアップ
巨大になるので注意。可能ならしたほうがよいが必須ではない
# 先に、どのくらいのサイズ感か確認しておく
du -h -d 1 live/
# バックアップ(gzipかけても圧縮率80%程度な感じ)
tar -czf public.`date +%Y%m%d_%H%M%S`.tar.gz live/public
Gitでタグ指定アップデート
cd ~/live/
git fetch
git tag
git checkout vX.X.X
bundle install && yarn install
# 他に必要な手順があればここで行う(前)
RAILS_ENV=production bundle exec rails db:migrate
RAILS_ENV=production bundle exec rails assets:clobber
RAILS_ENV=production bundle exec rails assets:precompile
# 他に必要な手順があればここで行う(後)
exit
sudo systemctl start mastodon-{web,sidekiq,streaming}
データベースマイグレーションが必要ないアップデートにおいてdb:migrate
を実行した場合、何も行われず空振りする。
空振りしたところで特に害はないはずなので、ルーチンワークとして念のため実行しておくとよいかもしれない。
assets:clobber
を実行すると、生成済みのアセット(静的ファイル)を全てクリアする。
アセットのキャッシュが残りっぱなしになってディスク容量を浪費することがあるので、必要に応じて実行する。
どのバージョンからか不明だが、assets:precompile
を実行するとyarn install
も一緒に実行されるように見受けられる。
ので、前もってyarn install
する必要はないのかもしれない。
あとがき
- 自分用にメモした手順です。必要に応じて読み替えてください。
- ここ、こうしたほうがいいよ的なアドバイスを頂けると大変助かります。
以上