-
-
Save arteezy/5d53d99f6ee617fae1f0db0576fdd418 to your computer and use it in GitHub Desktop.
[Unit] | |
Description=Puma Rails Server | |
After=network.target | |
[Service] | |
Type=simple | |
User=deploy | |
WorkingDirectory=/home/deploy/app/current | |
ExecStart=/home/deploy/.rbenv/bin/rbenv exec bundle exec puma -C /home/deploy/app/shared/config/puma.rb | |
ExecStop=/home/deploy/.rbenv/bin/rbenv exec bundle exec pumactl -S /home/deploy/app/shared/tmp/pids/puma.state stop | |
TimeoutSec=15 | |
Restart=always | |
[Install] | |
WantedBy=multi-user.target |
is this only for one rails app?
@ukazap yes for the one in /home/deploy/app/current
For whatever reason I had to use ExecStart=/bin/bash -lc 'bundle exec puma -C {deploy_dir}/shared/config/puma/production.rb'
in my puma.service
, otherwise i was getting the error below. Interestingly enough, i never noticed until i was tailing the logs because it was just immediately relaunching so i didn't even notice
Oct 24 08:33:37 puma[14012]: [14012] - Gracefully shutting down workers...
Oct 24 08:33:37 puma[14012]: On worker shutdown...
Oct 24 08:33:37 puma[14012]: On worker shutdown...
Oct 24 08:33:37 puma[18850]: Command stop sent success
Oct 24 08:33:37 puma[14012]: On worker shutdown...
Oct 24 08:33:37 puma[14012]: [14012] - Gracefully shutting down workers...
Oct 24 08:33:37puma[14012]: bundler: failed to load command: puma (/var/www/spar/releases/20181024082043Z/vendor/bundle/ruby/2.5.0/bin/puma)
Oct 24 08:33:37 ipuma[14012]: Errno::ECHILD: No child processes
Oct 24 08:33:37 puma[14012]: /var/www/spar/shared/vendor/bundle/ruby/2.5.0/gems/puma-3.12.0/lib/puma/cluster.rb:38:in `waitpid'
Oct 24 08:33:37 puma[14012]: /var/www/spar/shared/vendor/bundle/ruby/2.5.0/gems/puma-3.12.0/lib/puma/cluster.rb:38:in `block in stop_workers'
Oct 24 08:33:37 puma[14012]: /var/www/spar/shared/vendor/bundle/ruby/2.5.0/gems/puma-3.12.0/lib/puma/cluster.rb:38:in `each'
Oct 24 08:33:37 puma[14012]: /var/www/spar/shared/vendor/bundle/ruby/2.5.0/gems/puma-3.12.0/lib/puma/cluster.rb:38:in `stop_workers'
Oct 24 08:33:37 puma[14012]: /var/www/spar/shared/vendor/bundle/ruby/2.5.0/gems/puma-3.12.0/lib/puma/cluster.rb:391:in `block in setup_signals'
Oct 24 08:33:37 puma[14012]: /var/www/spar/shared/vendor/bundle/ruby/2.5.0/gems/puma-3.12.0/lib/puma/cluster.rb:515:in `rescue in run'
Oct 24 08:33:37puma[14012]: /var/www/spar/shared/vendor/bundle/ruby/2.5.0/gems/puma-3.12.0/lib/puma/cluster.rb:478:in `run'
Oct 24 08:33:37 puma[14012]: /var/www/spar/shared/vendor/bundle/ruby/2.5.0/gems/puma-3.12.0/lib/puma/launcher.rb:184:in `run'
Oct 24 08:33:37 puma[14012]: /var/www/spar/shared/vendor/bundle/ruby/2.5.0/gems/puma-3.12.0/lib/puma/cli.rb:78:in `run'
Oct 24 08:33:37 puma[14012]: /var/www/spar/releases/20181024082043Z/vendor/bundle/ruby/2.5.0/gems/puma-3.12.0/bin/puma:10:in `<top (required)>'
Oct 24 08:33:37 i puma[14012]: /var/www/spar/releases/20181024082043Z/vendor/bundle/ruby/2.5.0/bin/puma:23:in `load'
Oct 24 08:33:37 puma[14012]: /var/www/spar/releases/20181024082043Z/vendor/bundle/ruby/2.5.0/bin/puma:23:in `<top (required)>'
Oct 24 08:33:37 systemd[1]: puma.service: Main process exited, code=exited, status=1/FAILURE
Oct 24 08:33:37 systemd[1]: puma.service: Failed with result 'exit-code'.
Oct 24 08:33:37 systemd[1]: Stopped puma.
-- Subject: Unit puma.service has finished shutting down
actually i just figured it out, it was the ExecStop
declaration that was causing it, once i removed that, i had proper restarts
blah, because i'm using sockets. puma's own documentation is correct https://github.com/puma/puma/blob/master/docs/systemd.md
Thank you! This was a life saver.
Thank you so much for this.
I made some modification to mine.
Puma Service Configuration
[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=deploy
# The path to the your application code root directory
WorkingDirectory=/home/deploy/my-app
# The command to start Puma
ExecStart=/home/deploy/.rbenv/shims/puma -C /home/deploy/my-app/config/puma.rb
# The command to stop Puma
ExecStop=/home/deploy/.rbenv/shims/puma -S /home/deploy/my-app/config.puma.rb
# Path to PID file so that systemd knows which is the master process
PIDFile=/home/deploy/my-app/tmp/pids/puma.pid
# Should systemd restart puma?
# Use "no" (the default) to ensure no interference when using
# stop/start/restart via `pumactl`. The "on-failure" setting might
# work better for this purpose, but you must test it.
# Use "always" if only `systemctl` is used for start/stop/restart, and
# reconsider if you actually need the forking config.
Restart=always
[Install]
WantedBy=multi-user.target
Hey I did the same but that prompt me to enter password I am not sure what the password is .... Can anyone help me on this ?
You saved my life! After 5 hours of trying I found this! Thanks!