本当にどうでもいいメモなどをたまに書く程度。

Debian stretch で Mastodon インスタンスを立て直した

日付:

前回、Ubuntu で Mastodon インスタンスを立てたのだが、さすがにメモリが 1GB では明らかに不足していて、Mastodon のバージョンアップに際して assets:precompile するだけで30分以上かかるという有様だった。
その上 CloudAtCost が長期間ダウンしたため、もう少しまともな環境で立て直すことに。

vpsRus の VPS で、カタログスペックはこんな感じ。

  • 2.5 USD / 月
  • CPU 2仮想コア
  • メモリ 2GB (vswap 2GB)
  • HDD 200GB
  • 月間転送量 1TB
  • 場所 イリノイ州シカゴ (ping rtt 200ms 前後)
  • OpenVZ

国内業者と比べると 1/4 以下のお値段。
シカゴにしては ping rtt がちょっと遅い。あとディスク I/O が結構遅い。たぶんユーザー詰め込んでるからだが、こんな値段でこれだけメモリ使えるなら我慢できる。


というわけで Mastodon を入れていく。
前回と比べるとプロダクションガイドも大幅に更新されており、それに従っていけば問題ない。
今回はプロダクションガイド #385に従うが、Nginx ではなく Apache を使う。
前回は rbenv を使わなかったが、今回は使う。


早い話:

  • redis-server と PostgreSQL がすんなりいかない。
  • redis-server は apt でのインストール時にエラーが出るので、/etc/systemd/system/redis.service の「ReadWriteDirectories=-/var/run/redis」から「/var」を削除して apt -f install。
  • PostgreSQL はデータベース template1 を encoding=’UTF8′ で作り直す。

node.js、yarn のリポジトリを追加、インストールしていく。プロダクションガイドは Ubuntu 16.04 ベースで書かれているが、Debian stretch も apt はプロダクションガイド通りに実行していい。

ただ、redis-server のインストールでエラーが出る。
これは /var/run が /run へのシンボリックリンクであることによるものらしく、/lib/systemd/system/redis-server.service の次の行を修正すればいい。

ReadWriteDirectories=-/var/run/redis

ReadWriteDirectories=-/run/redis
% sudo apt -f install

PostgreSQL の template1 が SQL_ASCII なのでうまくいかない。なので template1 を UTF8 で作り直す。

% sudo -u postgres psql
update pg_database set datistemplate=false where datname='template1';
drop database template1;
create database template1 with template='template0' encoding='UTF8';
update pg_database set datistemplate=true where datname='template1';
\q

バッドノウハウ!

comments powered by Disqus