[Capistrano] deployが途中で止まってしまう場合の対処方法

Capistranoでdeployが途中で止まってしまう場合の対処方法をメモ。

最近、RailsアプリケーションをCapistranoで配備するときに、「assets:precompile」あたりでdeployの処理が止まってしまい、その後一向に処理が進まないということが頻発するようになりました。

このあと一向に処理が進みません。何度か試していると、たまーに配備が成功することも。

以前から「assets:precompile」の処理に非常に長い時間がかかっていたので、おそらく何かしらがタイムアウトしているのではないかと思い調べたところ、Stack Overflowで以下のページを見つけました。

このページによると、SSHの接続が切れてしまっている可能性があるから、アプリケーション配備先サーバのSSHの設定を変更してみるとよいとのこと。

試しに、配備先サーバにSSHでログインし、「/etc/ssh/sshd_config」を以下のように編集しました。

ClientAliveIntervalという設定値は、SSH接続の状態を確認するためのパケットを送る間隔を指定するもの。

デフォルトではパケットを送らない設定になっているので、明示的に間隔を指定することで、deploy処理に時間がかかっている場合でもSSh接続を維持することができるみたいです。

設定変更後、実際に再度Railsアプリケーションの配備を実行したところ、今度は無事正常にアプリケーションを配備することができました。

めでたしめでたし。