我有一个在nginx下运行的三个mongrels群集,我使用Capistrano 2.4.3部署应用程序。当我在运行系统时进行“cap deploy”时,其行为如下:Capistrano没有正确地重新启动Mongrel群集
- 该应用程序已部署。代码已成功更新。
在帽部署输出,有这样:
- 执行“命令-p '须藤密码:' mongrel_rails簇::重启-C /无功/网络/轨道/ MyApp的/当前/配置/ mongrel_cluster.yml”
- 服务器:[ “MYIP”]
- [MYIP]执行命令
- ** [出:: MYIP]停止端口9096
- ** [出:: MYIP]停止港口9097
- ** [出:: MYIP]停止端口9098
- ** [出:: MYIP]已经开始端口9096
- ** [出:: MYIP]已经开始端口9097
- ** [出:: MYIP]已经开始端口9098
- 我立即检查服务器上,发现杂种仍在运行,以及PID文件仍在为前三个实例。
- 不久后(不到一分钟),我发现Mongrel不再运行,PID文件不见了,并且重启失败。
- 如果我手动启动服务器上的mongrel,应用程序启动就好了。
好像“mongrel_rails集群::重启”尝试在集群的重新启动之前未正确等待一个句号 。如何诊断和解决此问题?
编辑:这里的答案:
mongrel_cluster,在“重启”任务,只要做到这一点:
def run
stop
start
end
它没有做任何等待或检查,看看该程序前退出调用“开始”。这是a known bug with an outstanding patch submitted。我将这个补丁应用于Mongrel Cluster,问题消失了。
这是正确的道路。看到我的编辑问题:有一个修补mongrel_cluster修补行为的补丁。 – Pete 2008-10-02 16:53:12