Настройка Thin, Bundler и Ubuntu

У меня есть очень простое приложение на Ruby, использующее Thin и Bundler, которое мне нужно наклеить на коробку Ubuntu.

Я установил Ruby, bundler и т. Д. На сервер, но у меня проблемы с запуском самого приложения.

По сути, мне нужен хороший способ запуска, остановки и перезапуска приложения через Capistrano.

Мой скрипт init.d выглядит примерно так:

DAEMON=/home/ubuntu/apps/my_app/shared/bundle/ruby/1.8/bin/thin
SCRIPT_NAME=/etc/init.d/thin
CONFIG_PATH=/etc/thin

# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0

case "$1" in
  start)
        cd /home/ubuntu/apps/my_app/current && bundle exec thin start -d -C /etc/thin/my_app.yml
        ;;
  stop)
        cd /home/ubuntu/apps/my_app/current && bundle exec thin stop -d -C /etc/thin/my_app.yml
        ;;
  restart)
        cd /home/ubuntu/apps/my_app/current && bundle exec thin restart -d -C /etc/thin/my_app.yml
        ;;
  *)
        echo "Usage: $SCRIPT_NAME {start|stop|restart}" >&2
        exit 3
        ;;
esac

Это приводит к:

/home/ubuntu/apps/my_app/shared/bundle/ruby/1.8/gems/thin-1.3.1/lib/thin/daemonizing.rb:51:in `daemonize': uninitialized constant Thin::Daemonizable::Daemonize (NameError)

Бег sudo bundle exec thin start из корня приложения на сервере работает просто отлично (хотя и не как демон).

Следовательно, как я могу настроить это приложение так, чтобы оно запускалось как демон и могло управляться через скрипт init.d / monit и т. Д.?

1 ответ

Решение

Вы могли бы создать binstubs. с их помощью init-скрипт должен быть похож на любой другой. тонкий просто нуждается в параметре --damonize, если вы не указали его в файле thin.yaml. С thin install thin создает для вас init-скрипт

BUNDLE УСТАНОВИТЬ --BINSTUBS

Если вы используете флаг --binstubs в комплекте установки (1), Bundler автоматически создаст каталог (по умолчанию это app_root/bin), содержащий все исполняемые файлы, доступные в гемах в комплекте.

После использования --binstubs bin/rspec spec/my_spec.rb идентичен пакету exec rspec spec / my_spec.rb.

http://gembundler.com/man/bundle-exec.1.html

На основании этих функций это работает для меня:

bundle install --binstubs
./bin/thin install
/etc/init.d/thin start
Другие вопросы по тегам