suwa3/まともに起動

Created Sat, 14 Mar 2020 13:00:00 +0000

ようやく、まともにマストドンを起動して動かすことができたので
作業ログをここに残します。
感動を通り越して若干うんざりです😢

経緯

EC2上にdocker-compose で SNS の運用をしていましたが、CPU使用率が100%のまま下がらない状態が続いているため EC2 のローカルへ移行することにしました。 まずは CPU をなんとかする。

条件

  • データは死守する
  • 移行対象は docker-compose on EC2 (まともに ssh ログインできない)
  • アプリケーションのバージョン追従はしていない。
  • t2.micro 縛り(可能な限り)

今後のTODO

  • 現状の設定ファイルは Docker 用のためEC2用に全部書き直し
  • 最終的に DB のバージョンを変更する必要あり

懸念点

  • dump データが途中から明らかに容量が小さい。データ壊れている疑惑あり。

など、諸々の問題を抱えながらも一つ一つ潰して、構築を済ませることができました!とても勉強になりました。

以下、CPU をなんとかした作業ログです。

swapの設定

まず、swapの設定をしました。
以前やったことがあったので その時のblog を参考に、そのままコピペでいけました。

Docker上の不要なファイルをローカルに移動

  1. ubuntu ユーザーの ~/ 直下に dump を移動
  2. ファイルの権限変える chmod
  3. scp -i ~/.ssh/**.pem *****@3.***.6.***:/home/ubuntu/dump-latest.sql.gz /Users/a_ishizuka/tmp/

■ CPUQuota の設定

CPU の張り付きを防ぐために、CPUQuota の設定をして CPU 使用率の制限を行いました。
コントロールグループの変更 Red Hat Enterprise Linux 7 | Red Hat Customer Portal

cd /etc/systemd/system
vim mastodon-sidekiq.service
[Service]
CPUQuota=20%

serviceコマンドで起動

$ service mastodon-sidekiq start
$ service mastodon-streaming start
$ sercive mastodon-web start

Postgresの権限

ブラウザで開いたら
HTTP ERROR 500

アプリケーションにまでは到達しているけれども..
原因を探るために
journalctl コマンドを打ったあと、ブラウザにアクセスしてみる。

$ journalctl -f
Mar 14 07:59:08 ip-172-31-35-77 bundle[13608]: [dfe98d74-fa3c-4814-b923-951e77ec5cc9] method=GET path=/about format=html controller=AboutController action=show status=500 error='ActionView::Template::Error: PG::InsufficientPrivilege: ERROR:  permission denied for relation site_uploads

Postgresの権限周りでerrorしているっぽい。
DBに繋げて再現してみる。

$ psql -U mastodon mastodon_production
mastodon_production=> \d
mastodon_production=> SELECT * FROM site_uploads limit 1;
ERROR:  permission denied for relation site_uploads

権限が足りていないみたいなので
mastodonユーザーに権限を与えます。

ロールにテーブルやビューなどに対する権限を追加する(GRANT)

GRANT 権限 ON 対象 IN SCHEMA public TO 誰に

$ sudo su postgres
$ psql mastodon_production
mastodon_production=# GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO mastodon;
GRANT

「実行したい場所に移動してから」
と、いうのがミソでした。

表示されるようになりました。
様子を見つつチューニングしていきたいです。