ようやく、まともにマストドンを起動して動かすことができたので
作業ログをここに残します。
感動を通り越して若干うんざりです😢
経緯
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上の不要なファイルをローカルに移動
- ubuntu ユーザーの
~/
直下に dump を移動 - ファイルの権限変える
chmod
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
「実行したい場所に移動してから」
と、いうのがミソでした。
表示されるようになりました。
様子を見つつチューニングしていきたいです。