はじめに
AWSの手動デプロイ時点ではうまくいっていたものの自動デプロイ後に502 Bad Gatewayのエラーに遭遇しました。
解決に至った手順を紹介したいと思います。
原因究明
エラーログの確認①
ターミナル(EC2内)
[ec2-user@ip-〇〇 nicecosme]$ sudo less /var/log/nginx/error.log
unix:/var/www/nicecosme/shared/tmp/sockets/unicorn.sock failed (2: No such file or directory)
unicorn.sockがない…?
エラーログの確認②
ターミナル(EC2内)
[ec2-user@ip-〇〇 nicecosme]$ cd current
-bash: cd: current: No such file or directory
移動できない。currentディレクトリが作成されてないのか。
sharedディレクトリはどうなっているのかも確認してみました。
ターミナル(EC2内)
[ec2-user@ip-〇〇 nicecosme]$ cd shared
-bash: cd: shared: No such file or directory
やはりsharedディレクトリも作成されていない模様です。
ここで1つ前のディレクトリに戻り、中身を確認してみることにしました。
ディレクトリの中身の確認
1つ前のディレクトリに戻ってみる
ターミナル(EC2内)
[ec2-user@ip-〇〇 nicecosme]$ cd /var/www/
ディレクトリの中身を確認
ターミナル(EC2内)
[ec2-user@ip-〇〇 www]$ ls
niceCOSME nicecosme
アプリが…2つ…?
niceCOSMEに移動してみる
ターミナル(EC2内)
[ec2-user@ip-〇〇 www]$ cd niceCOSME
niceCOSMEの中身を確認
ターミナル(EC2内)
[ec2-user@ip-〇〇 niceCOSME]$ ls
current releases repo revisions.log shared
currentディレクトリもsharedディレクトリもこっちにあった!
自動デプロイの準備の際に記述したものの中で思い当たるものがあったので該当のファイルを修正してみます。
解決法
deploy.rbを修正
スクールのカリキュラムでアプリ名を書くように指示されていた部分をリポジトリ名に変えてみました。
config/deploy.rb
set :application, 'niceCOSME’
を
config/deploy.rb
set :application, 'nicecosme'
に変更し、GitHubにコミット→プッシュ。
ローカルで自動デプロイを実行
ターミナル(ローカル)
% bundle exec cap production deploy
その後確認したところ問題なく自分のアプリが表示されました!
解決までの手順は以上になります。