djangoはなぜuwsgiとnginxの協力が必要なのか


前言
初めてdjango+nginx+uwsgiのオンライン配置を始めた友达は、このかなり面倒な感じがすると信じています.いろいろな設定、パラメータ、エラーを報告しています.私は centosサーバーでdjangoのオンライン配置を始めたばかりの时、いつも疑問を持っていました.私はこの言葉を使ってdjangoプログラムを実行することができますか?
# nohup     ,&      ,80       
nohup python manage.py runserver 0.0.0.0:80 &

すでにオンライン配備が完了しているようですが、なぜnginx uwsgi djangoが必要なのでしょうか.答えは簡単です.性能が足りず、セキュリティが足りず、効率が足りないので、uwsgiとnginxを組み合わせてwebフレームワーク(django)を導入する必要があります.
Web開発の2つのブロック
Web開発の2つのブロック、webサーバとwebフレームワーク1.Webサーバの役割:1)リクエストメッセージを解析し,フレームワークプログラムを呼び出してリクエストを処理する.2)組織はメッセージに応答し,コンテンツをクライアントに返す.2.webフレームワークの役割:1)ルーティング(urlに基づいて対応する処理関数を見つける).2)処理関数で業務の処理を行う.サーバとクライアント間の接続はウェブサーバによって維持され、ウェブサーバはリクエストを受信した後、リクエストおよび関連パラメータをウェブフレームワークに渡し、フレームワークがコンテンツを生成し、生成したコンテンツをウェブサーバに渡す.
djangoとnginxは何に属しますか
nginxはwebサーバであり、djangoはwebフレームワークである.django
DO NOT USE THIS SERVER IN A PRODUCTION SETTING. It has not gone through security audits or performance tests. (And that’s how it’s gonna stay. We’re in the business of making Web frameworks, not Web servers, so improving this server to be able to handle a production environment is outside the scope of Django.)
djangoのドキュメントによると、djangoの役割はフレームワークにすぎず、サーバではなく、セキュリティの問題、HTTPのパフォーマンスの問題などに関心を持っていないことがわかります.だから私たちはもっと専門的なHTTPサーバーが必要です.2.nginxクライアント要求を受け入れ、接続を確立し、応答を転送するプログラム.外部ブラウザは設定したurlでnginxにアクセスし,nginxはブラウザから送信されたhttpリクエストを受信し,解析を行う.は、nginxが設定した静的ファイルディレクトリの下のブラウザが要求した静的ファイルを直接返します.でnginxはリクエストをuwsgiに転送し、uwsgiはリクエストを受信した後にパケットを処理し、wsgiが許容できるフォーマットに変換してwsgiに送り、wsgiはリクエストの要求に応じて対応するアプリケーションのファイル(ある関数)を呼び出して処理し、処理が完了するとwsgiはそれをuwsgiが受信できるフォーマットにパッケージし、uwsgiに渡し、uwsgiは受信してnginxに転送し、nginxは最終的にブラウザに戻ります.
WSGI,uWSGI,uwsgiって何ですか
1.WSDIは、TCPプロトコルと同様に、パケットでもサーバでもないプロトコルです.WebサーバとWebアプリケーションがどのように通信するかを定義します.WebサーバとWebフレームワークがWSDIプロトコルを満たす限り、それらは互いに組み合わせて使用することができます.だからWSDIはpythonのモジュール、フレームワークなどの具体的な機能ではなく、プロトコル、約束にすぎません.2.uWSGI自体は携帯型のwebサーバであり、もちろん他のappに接続するミドルウェアを作ることもできるので、私たちは一般的にそれらの前にもっと専門的なHTTPサーバであるnginx、つまり上述したようにしています.uWSGIを使うだけでは性能が足りず、セキュリティが足りない場合があります.nginxは長時間検証されたより良いサーバです.3.uwsgiもプロトコルであり、uwsGI内部に適用され、バイナリメソッドを使用して他のモジュールと通信します.
uwsgi+nginx導入djangoのメリット
1.nginxは、djangoおよびuwsgiよりも優れた静的リソースを処理します.2.nginxは接続を最適化し、負荷を等化することができ、1つのuwsgiが足りない場合があり、同時にアクセス量が数百に達するとあまりよくない可能性があります.3.セキュリティを向上させ、プログラムはブラウザに直接アクセスできないが、nginxを通じてあるインタフェースを開放し、uwsgi自体はイントラネットインタフェース(127.0.0.0.1)であり、nginxにセキュリティ制限を加えることでプログラムを保護するのに有利である.待って...
リファレンス
[1]https://www.kawabangga.com/posts/2941 [2]https://blog.csdn.net/CHENYAoo/article/details/83055108?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2 [3]https://blog.csdn.net/weixin_43274829/article/details/85060214?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1