【AWS】自動デプロイで502 Bad Gateway


はじめに

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

その後確認したところ問題なく自分のアプリが表示されました!
解決までの手順は以上になります。