Я бегаю 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, работают нормально. Это единственный, от которого у меня болит голова ...
Я попытался создать простой сценарий 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
Это выполняется каждую минуту и перезагружает сервер в случае сбоя. Достаточно хорошо для меня!