Назад | Перейти на главную страницу

Как запустить Rails из сценария оболочки в Debian?

На данный момент мне не нужно возиться с пассажиром или капистрано. Я просто хочу запускать рельсы при загрузке на порт 3000. Я попытался воспроизвести это руководство для узла сколько мог бегать по рельсам:

Я railsup сценарий в /etc/init.d/ это выглядит примерно так:

#!/bin/sh
export PATH=$PATH:/usr/local/bin

case "$1" in
  start)
   cd /root/rails_app; /usr/local/rvm/gems/ruby-2.0.0-p247/bin/rails server -d -p 3005
  ;;
  # starting other stuff
*)

Я также включил это в update-rc.d

Я заставил его работать, но только если я запустил скрипт вручную - он не запускается при загрузке. Есть ли причина, почему ../bin/rails недоступен при загрузке?

Я полагаю, есть что-то о рубиновых путях \ rvm \ rails, о которых я не знаю? Есть ли способ использовать для этого crontab @reboot?

С помощью init.d

Благодаря новой системе распараллеливания System-V вы иметь добавить НАЧАЛЬНАЯ ИНФОРМАЦИЯ часть в верхней части вашего скрипта.

Посмотри на /etc/init.d/README и попробуйте добавить это в начало вашего скрипта:

#! /bin/sh

### BEGIN INIT INFO
# Provides:          rails
# Required-Start:    $local_fs $remote_fs
# Required-Stop:
# X-Start-Before:    rmnologin
# Default-Start:     2 3 4 5
# Default-Stop:
# Short-Description: Start Rails on port 3000
### END INIT INFO

С помощью cron (и запустить как собственный пользователь)

Вы могли бы запустить свой демон при каждой перезагрузке с определенным cron синтаксис:

crontab -l |
   sed '$a@reboot /usr/bin/rail-or-other-bin -arg1 -arg2 -port 3000' |
   crontab

Предупреждение выполнение этой команды (crontab без аргументов и stdin из трубы) изменит ваш crontab! Видеть man crontab!

... и попробуйте это без последнего crontab перед:

crontab -l |
   sed '$a@reboot /usr/bin/rail-or-other-bin -arg1 -arg2 -port 3000'

Преимущество этого заключается в том, что демон запускается в пользовательской среде, и ошибки запуска будут отправляться вам по почте обычным способом cron.

Скрипт вообще работает? Я бы попробовал добавить:

echo RAILSUP >/tmp/railsup.log

Если это действительно так, проверяли ли вы журналы, чтобы узнать, в чем ошибка при попытке запуска при загрузке? Лично я бы запустил это в strace и записал все действия в файл для проверки, как только вы войдете в систему. Это, вероятно, даст некоторую подсказку.

это действительно так, вы проверили журналы, чтобы узнать, в чем ошибка при попытке запуска при загрузке? Лично я бы запустил это в strace и записал все действия в файл для проверки, как только вы войдете в систему. Это, вероятно, даст некоторую подсказку.