Pet*_*ete 5 ruby deployment mongrel capistrano ruby-on-rails
我有一个在nginx下运行的三个mongrel集群,我使用Capistrano 2.4.3部署应用程序.当我有一个正在运行的系统时"封盖部署",行为是:
在cap deploy输出中,有这样的:
在尝试重新启动集群之前,似乎'mongrel_rails cluster :: restart'没有正确等待完全停止.如何诊断和解决此问题?
编辑:这是答案:
mongrel_cluster,在"重启"任务中,只需执行以下操作:
def run
stop
start
end
Run Code Online (Sandbox Code Playgroud)
在调用"start"之前,它不会等待或检查进程是否已退出.这是一个已知错误,提交了一个未完成的补丁.我将补丁应用于Mongrel Cluster,问题就消失了.
您可以通过在 capistrano 配方中添加以下内容来显式告诉 mongrel_cluster 配方在启动前删除 pid 文件:
# helps keep mongrel pid files clean
set :mongrel_clean, true
Run Code Online (Sandbox Code Playgroud)
这会导致它将 --clean 选项传递给 mongrel_cluster_ctl。
我回去查看了我的部署方案之一,发现我还更改了重新启动任务的工作方式。看看 mongrel 用户组中的以下消息:
以下是我的部署:重新启动任务。我承认这有点黑客行为。
namespace :deploy do
desc "Restart the Mongrel processes on the app server."
task :restart, :roles => :app do
mongrel.cluster.stop
sleep 2.5
mongrel.cluster.start
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1874 次 |
| 最近记录: |