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/puma.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

🚌 参考リンク

📚 おすすめの書籍

🖥 サーバについて

このブログでは「Cloud Garage」さんのDev Assist Program(開発者向けインスタンス無償提供制度)でお借りしたサーバで技術検証しています。 Dev Assist Programは、開発者や開発コミュニティ、スタートアップ企業の方が1GBメモリのインスタンス3台を1年間無料で借りれる心強い制度です!(有償でも1,480円/月と格安)