これは
pumaをcentos7のsystemdで起動させたメモです。
スニペット
/etc/systemd/system/puma.service
[Unit]
Description=Puma HTTP Server
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/rails
Environment=RAILS_ENV=production
ExecStart=/usr/local/rvm/bin/rvm-exec 2.2.3 bundle exec puma -b tcp://0.0.0.0 -e production -p 80
TimeoutSec=300
Restart=always
[Install]
WantedBy=multi-user.target
実行
# systemctl enable puma.service
# systemctl start puma.service
# systemctl status puma.service
● puma.service - Puma HTTP Server
Loaded: loaded (/etc/systemd/system/puma.service; enabled; vendor preset: disabled)
Active: active (running) since 金 2016-06-03 10:43:04 JST; 10min ago
Main PID: 6125 (ruby)
CGroup: /system.slice/puma.service
└─6125 puma 3.4.0 (tcp://0.0.0.0,tcp://0.0.0.0:80) [rails]
6月 03 10:43:04 localhost.localdomain systemd[1]: Started Puma HTTP Server.
6月 03 10:43:04 localhost.localdomain systemd[1]: Starting Puma HTTP Server...
6月 03 10:43:05 localhost.localdomain rvm-exec[6125]: Puma starting in single mode...
6月 03 10:43:05 localhost.localdomain rvm-exec[6125]: * Version 3.4.0 (ruby 2.2.3-p173), codename: Owl Bowl Brawl
6月 03 10:43:05 localhost.localdomain rvm-exec[6125]: * Min threads: 8, max threads: 250
6月 03 10:43:05 localhost.localdomain rvm-exec[6125]: * Environment: production
6月 03 10:43:10 localhost.localdomain rvm-exec[6125]: * Listening on tcp://0.0.0.0
6月 03 10:43:10 localhost.localdomain rvm-exec[6125]: * Listening on tcp://0.0.0.0:80
6月 03 10:43:10 localhost.localdomain rvm-exec[6125]: Use Ctrl-C to stop
メモ
- ExecStartの一番初めのコマンドはフルパスで記述する必要がある
- パスをつけないとsystemdがエラーを出して起動しない
- WorkingDirectoryでカレントパスを明示できる
- bundlerを使っている場合カレントパスが重要なので指定が必要
- プロセスをデーモンに明示的にする必要はない
- systemdが勝手にバックグラウンドにしてくれるっぽい
- 設定ファイルを変更したら
systemctl daemon-reload
を実行しないと反映されない - rvmを使ってるのでrvm-execでRubyのバージョンを指定する必要がある