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

Добавление resque-web в Supervisord

Я бегаю supervisord чтобы поддерживать Redis и другое программное обеспечение в рабочем состоянии. Однако я не могу, хоть убей, получить resque-web работать.

Это .ini, который я включаю:

[program:resque]
command=/usr/local/rvm/gems/ruby-2.0.0-p195/bin/resque-web
autostart=true
autorestart=true
user=root
stdout_logfile=/var/lib/resque/stdout.log
stderr_logfile=/var/lib/resque/stderr.log

К сожалению, когда я бегу service supervisor restart Я получаю следующее в supervisord журнал:

INFO exited: resque (exit status 127; not expected)

Согласно Google код 127 "Команда не найдена". Однако, если я запустил эту команду вручную, сервер resque-web загрузится нормально с выводом:

[2013-05-24 00:03:09 -0600] Starting 'resque-web'...
[2013-05-24 00:03:09 -0600] trying port 5678...

Также стоит отметить, что в /var/lib/resque/stderr.log когда supervisord пытается запустить resque-web:

/usr/bin/env: ruby_noexec_wrapper: No such file or directory

Так что я в тупике. Все остальные программы, которые я настроил на supervisord, работают нормально. Это единственный, от которого у меня болит голова ...

Редактировать 1

Я попытался создать простой сценарий bash, чтобы обойти это, и теперь получаю другую ошибку в stderr.log файл. Включенный мной .ini изменен на command=/usr/local/bin/resque-web

/ USR / местные / бен / resque-web

#!/bin/bash
source /usr/local/rvm/environments/default
resque-web

ошибка

usr/local/rvm/gems/ruby-2.0.0-p195/gems/vegas-0.1.11/lib/vegas/runner.rb:82:in `app_dir': nor --app-dir neither EVN['HOME'] defined (ArgumentError)
        from /usr/local/rvm/gems/ruby-2.0.0-p195/gems/vegas-0.1.11/lib/vegas/runner.rb:66:in `initialize'
        from /usr/local/rvm/gems/ruby-2.0.0-p195/gems/resque-1.24.1/bin/resque-web:13:in `new'
        from /usr/local/rvm/gems/ruby-2.0.0-p195/gems/resque-1.24.1/bin/resque-web:13:in `'
        from /usr/local/rvm/gems/ruby-2.0.0-p195/bin/resque-web:23:in `load'
        from /usr/local/rvm/gems/ruby-2.0.0-p195/bin/resque-web:23:in `'
        from /usr/local/rvm/gems/ruby-2.0.0-p195/bin/ruby_noexec_wrapper:14:in `eval'
        from /usr/local/rvm/gems/ruby-2.0.0-p195/bin/ruby_noexec_wrapper:14:in `'

Что ж, похоже, что супервизор не будет работать с resque-web, поскольку это демонизированный процесс. Решением было создать /etc/cron.d/resque и поместите в него следующее:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/rvm/gems/ruby-2.0.0-p195/bin
HOME=/
* * * * * root resque-web

Это выполняется каждую минуту и ​​перезагружает сервер в случае сбоя. Достаточно хорошо для меня!