rails6 pumaを自動起動に設定する | サーバー起動時に自動起動

  • 作成日 2021.11.02
  • 更新日 2026.06.10
  • rails
rails6 pumaを自動起動に設定する | サーバー起動時に自動起動

Railsアプリを本番環境や検証環境で運用する場合、Pumaを手動で起動するのではなく、サーバー起動時に自動起動できるようにしておくと便利です。

Linuxでは、systemdを使用することでRailsのPumaをサービス化し、再起動時にも自動で起動させることができます。

この記事では、RailsアプリのPumaをsystemdで自動起動する方法、サービスの作成方法、起動・停止・ログ確認の手順について解説します。

関連記事 rails6 nginx + pumaを使用する

環境

  • OS CentOS Linux release 7.9.2009 (Core)
  • Ruby 2.7.2
  • Rails 6.1.1
  • rbenv 1.1.2-40-g62d7798

service作成

「/etc/systemd/system」配下に「rails.service」というファイルを以下の内容で作成します。

[Unit]
Description=RailsApp
After=network.target

[Service]
Type=simple
Environment="PATH=/home/username/.rbenv/shims:/home/username/.rbenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
WorkingDirectory=/home/username/railsApp
ExecStart=/home/username/railsApp/bin/rails s
Restart=always

[Install]
WantedBy=default.target

Environmentには、「rbenv」のPATHを指定してます。

WorkingDirectoryは、railsがあるドキュメントルートを設定してます。

rails起動

まずは、変更を読み込むためdaemonを再起動します。

systemctl daemon-reload

railsを起動します。

sudo systemctl start rails

statusを確認してエラーがなければ、正常に起動してます。

systemctl status rails

最後に自動起動に登録して完了です。

sudo systemctl enable rails

停止する場合は、以下を実行して下さい。

sudo systemctl stop rails

Pumaをsystemdで自動起動する

RailsのPumaをサーバー起動時に自動起動したい場合は、systemdのサービスファイルを作成します。

sudo vi /etc/systemd/system/puma.service

以下のように記述します。

[Unit]
Description=Puma HTTP Server
After=network.target

[Service]
Type=simple
User=deploy
WorkingDirectory=/var/www/sample_app
Environment=RAILS_ENV=production
ExecStart=/bin/bash -lc 'bundle exec puma -C config/puma.rb'
Restart=always

[Install]
WantedBy=multi-user.target

systemdを再読み込みする

サービスファイルを作成したら、systemdを再読み込みします。

sudo systemctl daemon-reload

Pumaサービスを起動する

Pumaを起動するには、以下を実行します。

sudo systemctl start puma

状態を確認します。

sudo systemctl status puma

Pumaを自動起動に設定する

サーバー再起動時にPumaを自動起動させるには、以下を実行します。

sudo systemctl enable puma

自動起動が有効になっているか確認します。

sudo systemctl is-enabled puma

Pumaを停止・再起動する

Pumaを停止する場合は以下です。

sudo systemctl stop puma

再起動する場合は以下です。

sudo systemctl restart puma

設定変更後はrestartで反映します。

Pumaのログを確認する

systemdで起動したPumaのログは、journalctlで確認できます。

sudo journalctl -u puma -f

直近のログだけ確認する場合は以下です。

sudo journalctl -u puma -n 100

自動起動しない場合の確認ポイント

Pumaが自動起動しない場合は、以下を確認します。

・WorkingDirectoryのパスが正しいか
・Userに指定したユーザーが存在するか
・bundle exec puma が実行できるか
・RAILS_ENVが正しいか
・config/puma.rbが存在するか
・systemctl enable puma を実行しているか

まずは手動で以下を実行して、Pumaが起動できるか確認します。

cd /var/www/sample_app
RAILS_ENV=production bundle exec puma -C config/puma.rb

まとめ

RailsのPumaを自動起動するには、systemdでサービス化します。

sudo systemctl daemon-reload
sudo systemctl start puma
sudo systemctl enable puma
sudo systemctl status puma

「rails puma 自動起動」や「puma systemd」の設定では、サービスファイルのWorkingDirectory、User、RAILS_ENV、ExecStartの指定ミスが多いため、順番に確認することが重要です。