この記事は初学者がエラーになったときの対処法を記載したものになります。
同じ初学者の方は、一度記事を全部読んで同じ症状に当てはまる場合実行してみてください。
現状
現在私は、1つのrailsアプリケーションを作り、AWSのEC2、Mysql、Nginx、Capistrano等を使い自動デプロイを行う際に置きたエラーになります。
エラー症状
##原因
私の場合、デプロイ後に
kill -QUIT `cat tmp/pids/unicorn.pid`
上記のコマンドを訳もわからずに実行した結果表示されました。
(上記コマンドは、ユニコーンの停止を行うコマンドです。)
エラー解説
We're sorry, but something went wrong.
If you are the application owner check the logs for more information.
とは、
bundle exec cap production deploy
を行いましたが、unicornもしくはnginxにエラーが起こっている場合に起こる可能性のあるエラーになります。
私の場合デプロイを行ったのにもかかわらず、unicornサーバーを落とした為エラーになりました。
また、このエラーはlogに残らない場合もあります。
##解決策
エラーの原因がunicorn,Nginxどちらにあるかわからない為、両方を再起動させましょう。
まず、unicornのサーバーがまだ可動しているか確認を行います。
ps aux | grep unicorn
(unicornのサーバー状態を調べるコマンド)
実行後↓
ec2-user 7263 0.0 8.6 335420 87328 ? Sl 16:34 0:02 unicorn master
ec2-user 7341 0.0 9.6 349224 97032 ? Sl 16:34 0:00 unicorn worker[0]
ec2-user 7763 0.0 0.2 110540 2092 pts/3 S+ 17:14 0:00 grep
※見られたくない部分もある為カットしている部分あります。
サーバーが停止している場合1行しか出てこないです。
unicorn masterの行にある左から2番目の番号(7263)を
kill 7263
kill -9 7263
どっちでも良い
にて停止してください。
その後
Nginxを再起動させます。
sudo service nginx reload
(リロードさせるコマンド)
実行後↓
Stopping nginx: [ OK ]
Starting nginx: [ OK ]
※下記コマンドは行わなくても大丈夫です。
ついでにMysqlも再起動させときます。
sudo service mysqld restart
(リロードさせるコマンド)
実行後↓
Stopping mysqld: [ OK ]
Starting mysqld: [ OK ]
その後
bundle exec cap production deploy
(自動デプロイさせるコマンド)
以上でエラーは解除されると思います。