Как автоматически создать работника восстановления при загрузке? - PullRequest
5 голосов
/ 02 января 2012

Хорошо, я делаю свое первое приложение для ruby. Кто знает, что перенести все на «производство», чертовски сложно. До сих пор я изо всех сил пытался настроить пассажиров, заставить его запускаться при запуске, а затем заставить redis запускаться при запуске.

Моя последняя задача при запуске - добавить 1 работника. Прямо сейчас я должен войти в ssh и запустить команду rake rake workers:start. Очевидно, что это плохо, когда я хочу закрыть ssh .. поэтому я просто не знаю, как и каким будет следующий шаг.

Я попытался скопировать конфигурацию по умолчанию для resque на config.ru, и он просто взорвал Пассажира ошибками. Я также заглянул в реску-пул, о котором говорили некоторые люди, но это у меня над головой.

все, что мне нужно сделать, это добавить 1 работника при загрузке. Это не значит, что серьезное приложение, настолько простое, лучше всего подойдет к этому моменту.

Ответы [ 2 ]

7 голосов
/ 13 ноября 2012

Я не использую драгоценный камень бога, потому что (1) я видел проект, который был очень поражен сложностью представленной им установки, и (2) я лично очень доволен стандартным Linux (Ubuntu) инструменты, которые обрабатывают такие вещи.

Для запуска рабочих Resque при загрузке

У меня есть этот код в моем /etc/rc.local файле. У меня в системе есть пользователь deploy :

# Start Resque
su -l deploy -c "/home/deploy/start-resque-workers"
su -l deploy -c "/home/deploy/start-resque-webui"

Затем в этих сценариях я настроил среду ruby ​​и запустил задачу rake:

# Load RVM into a shell session *as a function*
if [[ -s "$HOME/.rvm/scripts/rvm" ]] ; then
  # First try to load from a user install
  source "$HOME/.rvm/scripts/rvm"
elif [[ -s "/usr/local/rvm/scripts/rvm" ]] ; then
  # Then try to load from a root install
  source "/usr/local/rvm/scripts/rvm"
else
  printf "ERROR: An RVM installation was not found.\n"
fi

# Use rvm to switch to the default ruby. 
rvm use default

# Now launch the app
cd /home/deploy/app-name-here/current
nohup rake QUEUE=* RAILS_ENV=production environment resque:work &

Я использую этот тип установок годами, и это хорошо. Серверы не терпят крах. Мне пока не нужны накладные расходы на установку другой системы (например, драгоценного камня) для наблюдения за этими другими серверами.

Кроме того, я использую камень-капистрано для перезапуска рабочих при развертывании.

4 голосов
/ 02 января 2012

В производстве вы должны использовать бог для наблюдения за вашими процессами. Даже если этот проект небольшой, я настоятельно рекомендую потратить ваше время и настроить его.

Еще один большой обязательный это Capistrano .

Итак, если бы вы использовали Бога, вот файл конфигурации , который поможет вам.

Вы также можете попробовать запланировать rake resque:work при запуске системы, используя правильный скрипт в /etc/init.d/ или /etc/init/ или в другом (зависит от того, какую систему вы используете). Я попробовал это некоторое время назад, и я сдался (не помню почему).

Я понимаю, что этот мой ответ не совсем то, что вы ищете прямо сейчас. Но представьте себе: если все настроено, развертывание следующей версии так же просто, как запуск rake deploy на вашей машине для разработки. И он позаботится о том, чтобы вытащить ваш код из репозитория, запустить миграцию, перезапустить рабочих и веб-серверы, а что нет.

...