k3NGuru
@k3NGuru
Сис.админ.КО., подающий надежды кодер :)

Как заставить Puma запускать сайт Ruby on Rails автоматически?

Здравствуйте.

У меня такая проблема. Есть сайт на RoR, все это крутится на Ubuntu 12.04 LTS. Сайт работает на nginx+puma.
Так вот при выключении сервера, nginx, ror стартуют автоматически, а вот Puma не хочет, nginx отдает 404 ошибку.
Разрабы сказали, что нужно выполнить такую шайтан команду:

cd /srv/www/myapp/current && ( RACK_ENV=production ~/.rvm/bin/rvm default do bundle exec puma -C /srv/www/myapp/shared/puma.rb )


После чего стартует Puma и сайт поднимается.
Так вот как мне добавить данный скрипт в автозагрузку? Или сделать sh скрипт и поместить его в rc.local или же у Puma есть свой автостартер?
  • Вопрос задан
  • 1432 просмотра
Решения вопроса 2
@askhat
Можно написать init скрипт с этой командой. Или воспользоваться foreman. Или запланировать в cron через whenever по ключевому слову :reboot.
IMHO foreman - лучший вариант.

Gemfile
...
gem 'foreman'
...

Procfile
web: bundle exec puma -e $RAILS_ENV -p 5000 -S ~/puma -C config/puma.rb

.env
$RAILS_ENV="production"
Ответ написан
viktorvsk
@viktorvsk
Что значит, подымаются nginx и ror? Что такое ror, это не пума?
Вообще есть заметчальная вещь для таких дел: mmonit.com/monit
Но рубисты еще любят https://github.com/burke/zeus

В итоге у вас будет файл
/etc/monit/conf.d/puma.monit

с содержимым вроде:
process puma
  with pidfile /path/to/pid/file 
  start program = "/bin/su -u deployer -c 'cd /srv/www/myapp/current && ( RACK_ENV=production ~/.rvm/bin/rvm default do bundle exec puma -C /srv/www/myapp/shared/puma.rb )'
  stop program = "..."
  group puma
"

И монит сам будет следить, что б процесс всегда работал (потому что бывает, что процесс отваливается при работе, а не только после ребута)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы