【发布时间】:2010-09-14 09:21:41
【问题描述】:
我有一个在 nginx 下运行的由三个 mongrel 组成的集群,我使用 Capistrano 2.4.3 部署应用程序。当我在有一个正在运行的系统时“限制部署”时,行为是:
- 应用程序已部署。代码更新成功。
-
在 cap deploy 输出中,有这样的:
- 执行“sudo -p 'sudo 密码:' mongrel_rails cluster::restart -C /var/www/rails/myapp/current/config/mongrel_cluster.yml"
- 服务器:["myip"]
- [myip] 执行命令
- ** [out :: myip] 停止端口 9096
- ** [out :: myip] 停止端口 9097
- ** [out :: myip] 停止端口 9098
- ** [out :: myip] 已启动端口 9096
- ** [out :: myip] 已启动端口 9097
- ** [out :: myip] 已启动端口 9098
- 我立即检查服务器,发现 Mongrel 仍在运行,并且前三个实例的 PID 文件仍然存在。
- 不久之后(不到一分钟),我发现 Mongrel 不再运行,PID 文件不见了,并且无法重新启动。
- 如果我在服务器上手动启动 mongrel,应用程序启动得很好。
'mongrel_rails cluster::restart' 似乎没有正确等待句号 在尝试重新启动集群之前。如何诊断和解决此问题?
编辑:这是答案:
mongrel_cluster,在“重启”任务中,简单地这样做:
def run
stop
start
end
在调用“start”之前,它不会等待或检查进程是否退出。这是a known bug with an outstanding patch submitted。我将补丁应用到 Mongrel Cluster,问题就消失了。
【问题讨论】:
标签: ruby-on-rails ruby deployment capistrano mongrel