RaspberryPiでrailsのアプリを運用したかったのですが、普段使っているPassengerが対応していない(=自分でビルドが必要)ようなので、pumaを直接デーモン化して立ち上げることにしました。 公式のサンプルを自分の環境向けにカスタマイズしています。
/etc/systemd/system/puma.service
を以下の内容で作成します。
[Unit]
Description=Puma HTTP Server
After=network.target
[Service]
Type=notify
WatchdogSec=10
User=piuser
WorkingDirectory=/var/www/myapp/current
Environment="RAILS_ENV=production"
ExecStart=/home/piuser/.rbenv/shims/puma -C /var/www/myapp/current/config/puma.rb
Restart=always
[Install]
WantedBy=multi-user.target
rootユーザで以下のコマンドを実行します。
systemctl daemon-reload
systemctl enable puma
systemctl start puma
小規模なアプリならこれで全然問題なさそうです。どれくらいのアクセスまで耐えられるのか負荷テストもやってみたいところですし、RaspberryPiを複数台使ってロードバランサとかDBサーバも立ててみたりしても面白そうです。