1

There are many things I do not understand, so my question may be silly.
I want to run a puma ror server as a systemd service at centos 7. Use ruby installed using rvm.
My puma_test.service file is:

[Unit]
Description=Puma application server
After=network.target

[Service]
WorkingDirectory=/var/www/test_app
Environment=RAILS_ENV=development

PIDFile=/var/www/shared/pids/puma.pid
ExecStart=/usr/local/rvm/gems/ruby-2.2.1/gems/bundler-1.9.4/bin/bundle exec puma -e development -b unix:///var/www/shared/pids/puma.sock --pidfile /var/www/shared/pids/puma.pid

[Install]
WantedBy=multi-user.target

but when I run it, it does not work. I get error (from journalctl):

  kwi 18 22:56:15 vps150852.ovh.net systemd[1]: Starting Puma application server...
kwi 18 22:56:15 vps150852.ovh.net systemd[1]: Started Puma application server.
kwi 18 22:56:15 vps150852.ovh.net bundle[2072]: /usr/bin/env: ruby: No such file or directory
kwi 18 22:56:15 vps150852.ovh.net systemd[1]: puma_test.service: main process exited, code=exited, status=127/n/a
kwi 18 22:56:15 vps150852.ovh.net systemd[1]: Unit puma_test.service entered failed state.

when I run i /usr/www/test_app

/usr/local/rvm/gems/ruby-2.2.1/gems/bundler-1.9.4/bin/bundle exec puma -e development -b unix:///var/www/shared/pids/puma.sock --pidfile /var/www/shared/pids/puma.pid

everything works fine, but I am probably doing something wrong

1 Answers1

0

Looks like you need to load rvm when you run your task. systemd run in shell, not in bash, your bashrc will not be loaded

Pavel Evstigneev
  • 4,918
  • 31
  • 21