質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
87.20%
Django

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

uWSGI

uWSGIは、PythonでWebサービスを動かすアプリケーションサーバの一つです。WSGI(Web Server Gateway Interface)アプリケーションコンテナの一種で、WSGIに則ったDjangoやFlaskなどで動かすことができます。

nginx

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

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

解決済

Docker上のNginxとDjangoをuwsgiで接続したい(ローカル環境)

nmty
nmty

総合スコア14

Django

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

uWSGI

uWSGIは、PythonでWebサービスを動かすアプリケーションサーバの一つです。WSGI(Web Server Gateway Interface)アプリケーションコンテナの一種で、WSGIに則ったDjangoやFlaskなどで動かすことができます。

nginx

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

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

2回答

0評価

0クリップ

1130閲覧

投稿2021/07/11 06:54

編集2021/07/11 14:14

内容

Windows10にVirtualBoxでUbuntuをインストールし、
そのUbuntu上にNginxとPython(Django)のコンテナを作成しました。

Nginxコンテナのポートは80を使用し、
Pythonコンテナのポートを8001を使用し、

http://localhost:80 にアクセスすると、Python(Django)のコンテナに接続し、
Djangoの最初の画面(ロケットの画面)を出そうとしたいのですが、うまく接続されません。

http://localhost:80 にアクセスするとNginxの画面が表示され、
http://localhost:8001にアクセスすると、**接続がリセットされました**、という
Firefoxのエラー画面が表示されている。

詳細

・今回はdocker-composeを使用せずに環境構築しており、docker-composeを使用したやり方では1度こちらの(記事)を参考にDjangoの最初の画面まで確認はしたことがありますが、

今回は特に、uwsgiあたりの設定方法がわからず、そのあたりで接続がうまくいっていないと感じており、docker-composeを使用しない場合のuwsgiの設定方法を教えていただきたく投稿いたしました。

使用しているDockerイメージ
※Nginx:alpine
※Python:Python3.7-slim-buster

少し気になるエラー
今回のuwsgiと関係があるかはわかりませんが、Pythonコンテナ上でsystemctlを起動させようとすると以下のエラーが出ていることが少し気になっています。

$ systemctl System has not been booted with systemd as init system (PID 1). Can't operate. Failed to connect to bus: Host is down

追記
uwsgiの設定ファイル、手順を追記しました。情報が少なく申し訳ございませんでした。

①Nginx側の設定
・nginx/conf.d/defalt.conf

upstream django { ip_hash; server python:8001; } server { listen 8000; server_name 127.0.0.1; charset utf-8; location /static { alias /static; } location / { uwsgi_pass django; include /etc/nginx/uwsgi_params; } } server_tokens off;

②Python側の設定
・uwsgi.service (/etc/systemd/system/uwsgi.service)

[Unit] Description = uWSGI After = syslog.target [Service] ExecStartPre =/bin/sh -c "/bin/systemctl set-environment DO_DAEMON_PROCESS=1" ExecStart = /usr/local/bin/uwsgi --ini /opt/app/myapp/uwsgi.ini --logto /var/log/wsgi/myapp.log Restart=always KillSignal=SIGQUIT Type=notify StandardError=syslog NotifyAccess=all [Install] WantedBy=multi-user.target

・uwsgi.ini(/opt/app/myapp/uwsgi.ini)

[uwsgi] socket = 127.0.0.1:8001 chdir = /opt/app/myapp module = myapp.wsgi process = 4 threads = 1

uwsgi_params(/opt/app/myapp/uwsgi_params)

uwsgi_param QUERY_STRING $query_string; uwsgi_param REQUEST_METHOD $request_method; uwsgi_param CONTENT_TYPE $content_type; uwsgi_param CONTENT_LENGTH $content_length; uwsgi_param REQUEST_URI $request_uri; uwsgi_param PATH_INFO $document_uri; uwsgi_param DOCUMENT_ROOT $document_root; uwsgi_param SERVER_PROTOCOL $server_protocol; uwsgi_param REQUEST_SCHEME $scheme; uwsgi_param HTTPS $https if_not_empty; uwsgi_param REMOTE_ADDR $remote_addr; uwsgi_param REMOTE_PORT $remote_port; uwsgi_param SERVER_PORT $server_port; uwsgi_param SERVER_NAME $server_name;

以上

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

attakei

2021/07/11 07:27

どういう設定・コマンドでnginx,uwsgiを起動しているかの情報が無いので、 答えるのがすごい困難な気がします。 以下の情報を掲載しておくと、回答が付きやすいと思います。 - nginxのconf (最低限今回設定しているserverディレクティブの部分) - uwsgiの起動時設定 (コマンド/設定ファイル)
hentaiman

2021/07/11 07:29

設定などの情報が一切掲載されていないので今のままでは何がダメなのかさっぱり分かりません 設定と設定手順と実施した手順を見易くまとめてその内容を質問文を編集して記載してみてください 回答できる人が出てくるかもしれません
nmty

2021/07/11 08:30

情報を追加致しました。アドバイスありがとうございました。

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Django

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

uWSGI

uWSGIは、PythonでWebサービスを動かすアプリケーションサーバの一つです。WSGI(Web Server Gateway Interface)アプリケーションコンテナの一種で、WSGIに則ったDjangoやFlaskなどで動かすことができます。

nginx

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

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです