Ответ 1
Установите ClientAliveInterval и ClientAliveCountMax в /etc/ssh/sshd_config на сервере, как подсказывает выбор. У меня была точно такая же проблема с "assets: precompile" в моем развертывании, пока я не сделал это изменение.
Хорошо, поэтому я посмотрел в Интернете, и на самом деле это не похоже на то, что у многих других есть эта проблема, но, возможно, что-то еще не так с тем, что мы делаем.
Я настроил на то, чтобы довести его до того, что, по моему мнению, является полезным тестовым примером:
конфиг/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, и задача колпака выходит из строя. Я вижу, что удаленная команда заканчивается ps ps, но cap больше не замечает. Если сон равен 20, а не 240, задача колпачка работает нормально.
Очевидно, что эта задача бесполезна, но у нас есть дорогостоящие задачи, которые запускают это, и я сделал это, чтобы исключить любую вину в ssh.
Еще одна точка данных, если мы входим в поле и помещаем туда код, а затем запускаем кеп-развертывание оттуда, тогда он отлично работает.
Итак... похоже, что между ssh и capistrano происходит какое-то странное взаимодействие. Мысли?
Установите ClientAliveInterval и ClientAliveCountMax в /etc/ssh/sshd_config на сервере, как подсказывает выбор. У меня была точно такая же проблема с "assets: precompile" в моем развертывании, пока я не сделал это изменение.