我正在努力supervisord
让 Redis 和其他软件正常运行。但是,我无论如何也去不了resque-web
工作。
这是我要包含的 .ini:
[程序:resque] 命令 = /usr/local/rvm/gems/ruby-2.0.0-p195/bin/resque-web 自动启动=true 自动重启=true 用户=root stdout_logfile=/var/lib/resque/stdout.log stderr_logfile=/var/lib/resque/stderr.log
不幸的是,当我运行时,service supervisor restart
我在日志中收到以下内容supervisord
:
INFO 退出:resque(退出状态 127;非预期)
根据谷歌代码 127是“未找到命令”。但是,如果我手动运行该命令,resque-web 服务器会正常启动并输出以下内容:
[2013-05-24 00:03:09 -0600] 正在启动“resque-web”... [2013-05-24 00:03:09 -0600] 尝试端口 5678...
还值得注意的是,当/var/lib/resque/stderr.log
Supervisord 尝试启动 resque-web 时,我看到了以下内容:
/usr/bin/env: ruby_noexec_wrapper:没有此文件或目录
所以我被难住了。我在supervisord上配置的所有其他软件都运行正常。只有这个让我头疼...
编辑1
因此,我尝试创建一个简单的 bash 脚本来解决这个问题,现在我在文件中得到了不同的错误stderr.log
。我包含的 .ini 被更改为command=/usr/local/bin/resque-web
在/usr/local/bin/resque-web
/bin/bash #!/bin/bash 源 /usr/local/rvm/environments/default 救援网
错误
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 也没有定义 EVN['HOME'] (ArgumentError) 来自 /usr/local/rvm/gems/ruby-2.0.0-p195/gems/vegas-0.1.11/lib/vegas/runner.rb:66:in `初始化' 来自 /usr/local/rvm/gems/ruby-2.0.0-p195/gems/resque-1.24.1/bin/resque-web:13:in `new' 来自 /usr/local/rvm/gems/ruby-2.0.0-p195/gems/resque-1.24.1/bin/resque-web:13:in `' 来自 /usr/local/rvm/gems/ruby-2.0.0-p195/bin/resque-web:23:in `load' 来自 /usr/local/rvm/gems/ruby-2.0.0-p195/bin/resque-web:23:in `' 来自 /usr/local/rvm/gems/ruby-2.0.0-p195/bin/ruby_noexec_wrapper:14:in `eval' 来自 /usr/local/rvm/gems/ruby-2.0.0-p195/bin/ruby_noexec_wrapper:14:in `'
答案1
嗯,看来,supervisor 无法与 resque-web 配合使用,因为它是一个守护进程。解决方案是创建/etc/cron.d/resque
并放入以下内容:
外壳=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/rvm/gems/ruby-2.0.0-p195/bin 主页=/ * * * * * 根目录 resque-web
它每分钟运行一次,如果服务器崩溃则重新启动。对我来说已经足够好了!