好吧,所以,我在网上看了一下,看起来并不是很多其他人都有这个问题,但是我们正在做的事情可能还有别的问题。
我已经将它提炼为我认为有用的测试用例:
配置/ deploy.rb:
## Excerpt
task :big_delay, :roles => :web do
run "sleep 480"
run "echo Meow Meow Meow"
end
和stupid_script.sh:
#!/bin/sh
ssh foo 'sleep 480; echo Meow Meow Meow'
其中foo是我们部署到的同一服务器的名称。
当我运行这两个时,它应该连接到另一个盒子,8分钟不做任何事情,然后吐出一些无用的文本并完成。
stupid_script工作,cap任务失败。 我看到远程命令用ps xf完成,但是cap似乎不再注意了。 如果睡眠是20而不是240,则cap任务正常。
显然这个任务是超级无用的,但是我们确实在部署时运行了昂贵的东西来触发这个,我已经做了这个以排除任何对ssh的责任。
另一个数据点,如果我们进入框中并将代码放在那里然后从那里运行cap deploy,那么它可以正常工作。
所以......在ssh和capistrano之间似乎有一些奇怪的相互作用。 想法?
答案 0 :(得分:11)
在choover建议的服务器上的/ etc / ssh / sshd_config中设置ClientAliveInterval和ClientAliveCountMax。在我的部署中,我遇到了与“资产:预编译”完全相同的问题,直到我进行了更改。