Rails pumaをsystemdで動かす


Ruby on Railsの標準のWebサーバ「puma」ですがCentOSなどのLinux上で本番稼働させる場合は、systemdにすることでプロセスを管理が簡単になります。

systemdの概要については拙著「systemd」をご参照ください。

🍣 pumaのsystemdの設定ファイル

puma用のsystemdの設定ファイルのサンプルです。

[Unit]
Description=Puma HTTP Server
After=network.target
[Service]
# Foreground process (do not use --daemon in ExecStart or config.rb)
Type=simple
# Preferably configure a non-privileged user
# User=
# Specify the path to your puma application root
WorkingDirectory=/var/app/
# Helpful for debugging socket activation, etc.
Environment=RAILS_ENV=production
# The command to start Puma
ExecStart=/var/app/sbin/puma -C config.rb
Restart=always
[Install]
WantedBy=multi-user.target

😀 Railsにsbin/pumaを準備

Railsのプロジェクト側で次のコマンドを実行し、sbin/pumaを生成します。

bundle binstubs puma --path ./sbin

🍄 使い方

# puma.serviceのロード
systemctl daemon-reload
# ブート時に puma.serviceを起動
systemctl enable puma.service
# puma.serviceの起動
systemctl start puma.service
# puma.serviceのステータスチェック
systemctl status puma.service
# puma.serviceの再起動
systemctl restart puma.service

🐡 参考リンク

📚 おすすめの書籍