Rails4+capistrano3で自動デプロイする際に
とてもとてもつまずいていたので、備忘録的に残しときます。
結論から言うと長い処理の途中で「ssh connection closed」されちゃったら、
「set :pty, true」されているか確認しましょう。というお話。
対象
「コンソールで手動ではデプロイできるんだけど、自動化(サーバ起動時、定期実行等)したら、
assets:compileでずっと止まったままなんだけど、どうしたら良いの」な人
環境
Linux(Amazon Linux)
Rail 4.0.*
Capistrano 3.1
1. sshd_configにClientAliveIntervalを設定する
SSHコマンドでKeepAliveするにはどうすればいいのでしょうか
http://takuya-1st.hatenablog.jp/entry/20110429/1304102944
私のケースではClientAliveIntervalだけ設定でいけました
vi /etc/ssh/sshd_config
ClientAliveInterval 60
2. deploy.rbにset :pty, trueを追加
Capistrano3を最後にもう一度だけ懇切丁寧にまとめてみる
http://chroju89.hatenablog.jp/entry/2014/04/12/215628
vi deploy.rb 以下をを追記 set :pty, true
3. It's ready!
以上の設定を適用した所で、deployさせてみます。
すると「assets:compile」の途中で一度cpu使用率が1桁台になります。
すわ「コネクションが切れたか!」状態になるかと思いますが、
数秒~数十秒後に復活(?)しますので、killせずにお待ちください。