🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Gunicorn

Gunicorn (Green Unicorn)は、Rubyのunicornをベースに開発されたUNIX向けのPython製HTTPサーバです。他のライブラリとの依存関係がないため、容易にインストールして使用できます。

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

1回答

2664閲覧

GunicornとDjangoが結びついておらず、サーバーを起動してもwebアプリケーションを動かせない

Murasaki_PurPle

総合スコア37

Gunicorn

Gunicorn (Green Unicorn)は、Rubyのunicornをベースに開発されたUNIX向けのPython製HTTPサーバです。他のライブラリとの依存関係がないため、容易にインストールして使用できます。

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2021/01/31 04:28

編集2021/02/05 18:49

webアプリケーションに外部のクライアントから入りたいが 入れない

AWSのEC2にDjangoのディレクトリ一式をデプロイし、静的IPアドレスを使って外部のクライアントからwebアプリケーションを立ち上げたいのですが うまくいきません。
実際に入ってみるとNginx Error!とブラウザに表示されます。
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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yu_1985

2021/01/31 12:47

nginxの設定を貼ってください。 また、そもそもgunicornが起動されてないのでは? gunicornを起動してみてほしいのと、できないのならエラーメッセージなりログの内容なりを確認して必要であれば質問に追記する形で貼ってください。
Murasaki_PurPle

2021/01/31 13:10

nginxの設定ファイルの中身を貼り付けました。 また、gunicornの軌道に関してですが gunicorn --bind 127.0.0.1:8000 QuantumGun.wsgi -D と言うコマンドを入れているので、すでに起動していると言う認識です。
Murasaki_PurPle

2021/01/31 13:23

nginxの設定部分に誤りがあったため訂正いたしました。
yu_1985

2021/01/31 14:55

psコマンドの出力結果が読みづらいのでps aux の結果をgrepしたほうがよいです。 nginxの設定はわかりましたが、gunicornのプロジェクトのディレクトリはどこに配置されていてどういう構成になっていますか?
yu_1985

2021/01/31 14:55

あと、ServerNameのところのIPは念の為マスクしておいたほうが無難です…。
Murasaki_PurPle

2021/02/05 18:45

回答が遅くなってしまい申し訳ございませんでした。 以下、頂いた質問に対する回答です。 >psコマンドの出力結果が読みづらいのでps aux の結果をgrepしたほうがよいです。 >gunicornのプロジェクトのディレクトリはどこに配置されていてどういう構成になっていますか? 質問文を編集しました。 >ServerNameのところのIPは念の為マスクしておいたほうが無難です…。 ご指摘ありがとうございます... ガバガバすぎて、反省しました。完了後Elastic IPを変更して対応しようと思います。
guest

回答1

0

やっぱりgunicornが起動してないですね。
なのでまずはgunicornが起動していない原因を切り分けてください。

あと、それはプロジェクトのディレクトリじゃなくてgunicornの実行ファイルのパスです。
nginxは起動していますがgunicornというか、gunicornと連携させているdjangoのディレクトリがどこにあるのか、nginxの設定と一致しているか、というのを確認したかったので。
ただ、そもそもgunicornが起動していないのでまず最初の問題はそちらです。

何かしらメッセージなり、どこかにログなり出ていませんか?

投稿2021/02/05 20:35

yu_1985

総合スコア7588

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問