Daemonize puma

2024-06-21 rails ruby

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サーバも立ててみたりしても面白そうです。