webアプリケーションに外部のクライアントから入りたいが 入れない
AWSのEC2にDjangoのディレクトリ一式をデプロイし、静的IPアドレスを使って外部のクライアントからwebアプリケーションを立ち上げたいのですが うまくいきません。
実際に入ってみるとNginx Error!とブラウザに表示されます。
そのため、nginxとgunicornの設定を確認したところ gunicornに問題がありそうだと気づきました。
Linux
1 ps as | grep gunicorn 2 31001 7158 0000000000000000 0000000000000000 0000000000000000 0000000180000000 S+ pts/0 0:00 grep --color=auto gunicorn
本来でしたら、直前に
Linux
1gunicorn --bind 127.0.0.1:8000 QuntumGun.wsgi -D
としているので、DjangoとGunicornが結びつき うまく行けば
Linux
1 ps as | grep gunicorn 2 3xxxx/bin/gunicorn --bind 127.0.0.1:8000 QuntumGun.wsgi -D 41001 7158 0000000000000000 0000000000000000 0000000000000000 0000000180000000 S+ pts/0 0:00 grep --color=auto gunicorn
などと表示されると思うのですが、一向にうまくいかず困っております。
nginxはどうなっているのか
画像に載せた通り、nginx error!と出ていますので、nginxに問題があると思ったのですが
Linux
1$ systemctl status nginx.service 2 3● nginx.service - The nginx HTTP and reverse proxy server 4 Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled) 5 Active: active (running) since 日 2021-01-31 12:48:01 JST; 5min ago 6 Process: 7034 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS) 7 Process: 7030 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS) 8 Process: 7029 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS) 9 Main PID: 7036 (nginx) 10 CGroup: /system.slice/nginx.service 11 ├─7036 nginx: master process /usr/sbin/nginx 12 └─7038 nginx: worker process
とあるように、nginx自体には問題ないのかなと言う認識です。
なぜこのような問題が発生したのか
ローカルでDjangoファイルを書き換え、その内容をリモートリポジトリに反映させたのち EC2側で
git
1git pull
を行いました。
しかし、ローカルで変更したDjangoスクリプトがEC2に反映されていたにもかかわらず 実行してもブラウザに変更内容が反映されなかったため
Linux
1pkill gunicorn 2 3gunicorn --bind 127.0.0.1:8000 QuantumGun.wsgi -D
としました。
その結果上記のような状態になりました。
いつもありがとうございます
普段、完全独学でプログラミングを勉強しております。
これが継続できるのは teratailにいる皆様の回答のおかげです。
どうか、今回も皆様のお力をお貸しいただけないでしょうか。
どうぞよろしくお願いいたします。
修正
nginxの設定について書きます。
# For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * Official Russian Documentation: http://nginx.org/ru/docs/ user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; # Load dynamic modules. See /usr/share/nginx/README.dynamic. include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for" "$request_body"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; # Load modular configuration files from the /etc/nginx/conf.d directory. # See http://nginx.org/en/docs/ngx_core_module.html#include # for more information. include /etc/nginx/conf.d/*.conf; server { listen 80; server_name xxxxxxxx; root /usr/share/nginx/html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location /static { alias /usr/share/nginx/html/static; } location /media { alias /usr/share/nginx/html/media; } location / { proxy_set_header Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://127.0.0.1:8000; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
また、そもそもgunicornが起動していないのではと言う指摘についてですが、
gunicorn --bind 127.0.0.1:8000 QuantumGun.wsgi -D
を入力しているので、Gunicornは起動していると言う認識です。
修正 20210206
頂いた指摘を元に、追記いたします。
axよりauxの方が分かりやすいとご指摘いただきました。必要ないかもしれませんが、念のため記載しておきます。
Linux
1$ ps aux | grep gunicorn 2xxx_xxx+ 21742 0.0 0.0 119436 928 pts/0 S+ 02:47 0:00 grep --color=auto gunicorn
また、gunicornのプロジェクトディレクトリの場所についてもご質問いただきました。以下で回答になっているかどうか分かりませんが、載せておきます。
Linux
1$ which gunicorn 2~/QuantumGun/bin/gunicorn 3