nginx
capistrano
AWS
EC2
unicorn

capistranoより自動デプロイは正常完了したが、本番環境でhttpエラー500が返ってくる

自分用の備忘録

現象

capistranoによりデプロイは正常完了したが、本番環境でhttpエラー500が返ってくる。
ログイン画面は正常に表示されるが、その他が全部ダメ。

原因・解決策

nginxを再起動しても状況は変わらない。
unicornがおかしいのでは?とあたりをつける。
そこでunicornを落として、再度capistranoより自動デプロイしてみる。(unicornが落ちてても自動デプロイしたらunicornも起動する)

ターミナル
[ec2-user@ip-100-10-10-10 test-APP]$ kill -QUIT `cat tmp/pids/unicorn.pid` #unicornを落とすコマンド
cat: tmp/pids/unicorn.pid: そのようなファイルやディレクトリはありません
kill: 使用法: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... または kill -l [sigspec]

うまくいかない・・・。
プロセスから落としてみると・・・

ターミナル
[ec2-user@ip-100-10-10-10 test-APP]$ ps aux | grep unicorn #unicornのセッションを調べる
ec2-user 13757  0.0  0.2 110484  2104 pts/0    S+   02:18   0:00 grep --color=auto unicorn
ec2-user 26827  0.0  8.6 352560 87512 ?        Sl   Apr10   0:02 unicorn master -c /var/www/test-APP/current/config/unicorn.rb -E deployment -D                                               
ec2-user 26868  0.0 10.4 372912 106504 ?       Sl   Apr10   0:06 unicorn worker[0] -c /var/www/test-APP/current/config/unicorn.rb -E deployment -D
[ec2-user@ip-100-10-10-10 test-APP]$ kill -9 26827 #pプロセスを強制的に落とす。
[ec2-user@ip-100-10-10-10 test-APP]$ ps aux | grep unicorn #プロセスが落ちたかどうか確認
ec2-user 15012  0.0  0.2 110484  2228 pts/0    S+   02:33   0:00 grep --color=auto unicorn

これで落とせたので、自動デプロイしたらうまくいった。

参考
プロセスを終了するkillコマンドの使い方まとめ!