前回、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
バッドノウハウ!