つまずいたところ
Capistranoを導入し、ローカルディレクトリでbundle exec cap production deployしてもデプロイされておらず、
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as 〜省略
Caused by:
Net::SSH::AuthenticationFailed: Authentication failed for user 〜省略
となり、起動しなかった。
対策①
調べてみたら、デプロイ前にunicornのkillが必要とのことだったので、
kill -QUIT cat tmp/pids/unicorn.pid
してみたら
「そのようなファイルやディレクトリはありません」
と怒られる。。
さらに調べると、Capistarnoを導入すると、unicorn.pidの所属するディレクトリが別の場所に移ってしまうため、 tmp/pids/unicorn.pid のようにパスを指定しても、Unicornのプロセスをkillできなくなるとのこと!!
そんな時は、
$ ps aux | grep unicorn
でunicorn masterと表示されているプロセスがkillすべきものとのこと。
そしてその番号を
kill -9 xxxx
killする!!!
とのことだったが、そもそもunicorn master の表記がなく、killしても「そのようなプロセスはありません」
と怒られる。。。。
そもそもkillすべきものはないようです。次の対策へ。。。
対策②
エラー文を振り返る。
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as 〜省略
Caused by:
Net::SSH::AuthenticationFailed: Authentication failed for user 〜省略
理由のところに注目。
Authentication とは認証なので、user~の認証がSSHでできていないですよ〜みたいな感じでしょうか。
おそらく認証が上手くいってない模様だったので、
awsからログアウトして、.sshフォルダに移動してから
$ ssh-add ~/.ssh/xxxx.pem
することで解決しました!!
秘密鍵の設定はきちんとやったはずなのに、上手く権限の設定ができていなかったようで。
たまにあることで、その場合このようにすれば良いと教えてもらいました。
まだまだわからないことだらけで呆然とすることが多いですが、滅多にやる作業で備忘録として。