🤢

Django+nginx+gunicornで502 BAD GATEWAY【原因解明手段まとめ】

2021/12/26に公開

この記事では、AWSのEC2で、Django+nginx+gunicornで構築をしようとしたところ、IPアドレスにアクセスしたら、「502 BAD GATEWAY」が出てしまった時の、原因の検証方法をまとめます。

個人的にですが、502エラーの原因は意外と、設定ファイルのパスが違うとかプロジェクト名が違うとかが多い気がするので、どこが原因かさえわかって仕舞えばこちらのものです。

具体的な対処法の説明はないので、それぞれの原因に対する対処法は、別で検索してみてください。

Nginxの起動確認

まずはNginxが起動しているか確認します。コマンドでスタートしてエラーが出なくても、何らかの理由で勝手に止まっていたりするので確認します。
サーバ内で以下のコマンドを実行します。

$ systemctl status nginx

出力結果の中に以下の記述があればOKです。

Active: active (running) since Sun 2021-12-26 11:22:47 UTC; 16min ago

逆に以下のような記述が入っている場合は、nginxが起動していません。

gunicorn.service: Failed to execute command: No such file or directory

Gunicornの起動確認

Gunicornの確認は、Nginxの時と全く同じで、以下のコマンドを実行してください。

$ systemctl status gunicorn

出力結果もNginxの時と同じなので、割愛します。

LOGを確認

上の2つを行なって、2つともしっかりと起動している場合は、LOGを確認するしかないと思います。
AWSのEC2でubuntuをしている場合は、/var/log/~~の中にLOGがデフォルトで入っていると思います。
なので、以下のコマンドでログを出力して確認してみてください。
以下のコマンドでLOGがない場合は、一旦一番上のディレクトリに入って、varとかlogっていうフォルダを探してください。

$ less /var/log/nginx/error.log

出てきたLOGのそれっぽい部分をコピーしてそのまま検索すれば、先人たちが助けてくれている思います。

おしまい

Discussion