Help us understand the problem. What is going on with this article?

Mastodonアップデート手順(基本)・非Docker版

前提条件

  • 非Docker
  • Mastodonは、公式の手順で構築済みであること。

制限事項

  • 本手順は、CentOS 7 にて使用したものである。
  • Fedora Server (28) でも使えている。

特記事項

  • アップデート作業後、CSS・画像ファイル等にアクセスが出来なくなった場合(403)は、Nginxの実行ユーザを「mastodon」に切り替えることで対応可能

手順

(重要)まず、公式のリリースノートを読み、手順を確認する。
https://github.com/tootsuite/mastodon/releases

以下に示す手順を鵜呑みにせず、公式の手順通り行うこと。

だいたい共通しているものを下に示す。

  1. Mastodonのサービス3点セットを止める
  2. データベースのバックアップを取る
  3. Mastodon専用ユーザに切り替える
  4. タグ一覧から任意のバージョンに上げる
  5. 依存パッケージのインストールを行う
  6. データベースマイグレートを行う(変更なしの場合は空振りするのでOK)
  7. アセットのプリコンパイルを行う
  8. 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する必要はないのかもしれない。

あとがき

  • 自分用にメモした手順です。必要に応じて読み替えてください。
  • ここ、こうしたほうがいいよ的なアドバイスを頂けると大変助かります。

以上

kumasun
くまさん学習帳 PHP, PgSQL, MySQL, Arduino, RasPi など
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした