rails6 pumaを自動起動に設定する | サーバー起動時に自動起動
Railsアプリを本番環境や検証環境で運用する場合、Pumaを手動で起動するのではなく、サーバー起動時に自動起動できるようにしておくと便利です。
Linuxでは、systemdを使用することでRailsのPumaをサービス化し、再起動時にも自動で起動させることができます。
この記事では、RailsアプリのPumaをsystemdで自動起動する方法、サービスの作成方法、起動・停止・ログ確認の手順について解説します。
環境
- 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.targetEnvironmentには、「rbenv」のPATHを指定してます。
WorkingDirectoryは、railsがあるドキュメントルートを設定してます。
rails起動
まずは、変更を読み込むためdaemonを再起動します。
systemctl daemon-reloadrailsを起動します。
sudo systemctl start railsstatusを確認してエラーがなければ、正常に起動してます。
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.targetsystemdを再読み込みする
サービスファイルを作成したら、systemdを再読み込みします。
sudo systemctl daemon-reloadPumaサービスを起動する
Pumaを起動するには、以下を実行します。
sudo systemctl start puma状態を確認します。
sudo systemctl status pumaPumaを自動起動に設定する
サーバー再起動時にPumaを自動起動させるには、以下を実行します。
sudo systemctl enable puma自動起動が有効になっているか確認します。
sudo systemctl is-enabled pumaPumaを停止・再起動する
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の指定ミスが多いため、順番に確認することが重要です。
-
前の記事
GitHub Desktop 新しいブランチを作成する 2021.11.02
-
次の記事
インストールしたremiとepelリポジトリを削除する 2021.11.03
コメントを書く