最近、Python Web 開発を必要とする革新的なプロジェクトを行う必要があったため、非常に多用途の Python Web フレームワークである django を勉強しました。
なぜngixが必要なのですか?
まず、Web サイトを構築するためにこれら 3 つを組み合わせる必要がある理由について説明します。たとえば、いくつかの静的リソースをリクエストする必要がある場合、Django だけを使用する場合、負荷分散を実現できません。それらをすべて処理するには Django が必要で、リクエストを適切に分散することができません。ngix を使用するだけでこの問題を解決できます (このプロジェクトでは負荷分散を考慮する必要はないようですが、パフォーマンスの向上は常に必要です)。一部の動的リクエストは構成を通じて処理し、静的リクエストは独自に処理します。さらに、Web サイト上で PHP ページを実行する必要がある場合は、PHP リクエストを Apache に分散して処理することは間違いなく良い選択です。 . ngix と apache はソケット ポートを介して通信し、処理された結果をクライアントに返します。
それでは、なぜ uwsgi が必要なのでしょうか?
WSGI は Web サーバー ゲートウェイ インターフェイスです。 Webサーバー(nginxなど)とアプリケーションサーバー(uWSGIサーバーなど)間の通信の仕様です。 uwsgi は、uwsgi プロトコルと WSGI プロトコルの両方を実装する Web サーバーです。 簡単に言うと、uwsgi を使用して、uwsgi から django を起動し、ngix がポートを介して uwsgi と通信するこのプロセスで、gjango は wsgi サーバーの機能を実現し、ngix は wsgi クライアントの機能を実現しますが、Web 上で実行されます。 , ngix はサーバー の役割を果たします (コンピューター内の多くのソフトウェア通信はクライアントサーバーモデルです。たとえば、ファイルリソースはサービスであり、アプリケーションはこのサービスを呼び出すために対応するプロトコルを実装します)。これにより、ngix と django の間での uwsgi の転送が実現します。
ngix が django と直接通信できるようにしてはどうでしょうか?
uWSGI は、wsgi プロトコルも fcgi プロトコルも使用せず、代わりに、fcgi プロトコルよりも約 10 倍高速と言われている独自の uwsgi プロトコルを作成します。
uWSGI の主な特徴は次のとおりです:
◆超高速パフォーマンス。
◆メモリ使用量が少ない (Apache2 の mod_wsgi の約半分と測定)。
◆複数のアプリ管理。
◆詳細なログ機能(アプリのパフォーマンスやボトルネックの分析に使用できます)。
◆高度なカスタマイズ可能(メモリサイズ制限、一定数のサービス後の再起動など)。
3 つの原則は次のとおりです。
<span><code>the web client <-> the web server(nginx) <-> the socket <-> uwsgi <-> Django</code></span>
デプロイメントの開始
1. ngix をインストールします sudo apt-get install ngix
私のマシンのおかげでそれにはApacheもあります
変更は次のとおりです
2. djangoをインストールしますPython独自のパッケージマネージャーeasy_installを使用してインストールします。
easy_install django 最新バージョンを自動的にインストールします
3. uwsgi をインストールしますserver {
listen 8080 default_server;
listen [::]:8080 default_server ipv6
root /var/ngix; #将根目录改为/var/ngix
index index.html index.htm;
}
│ §─ マイグレーション─s │ │ └─ __init__.py
│ §── models.py
│ §── testing.py
│ └── views.py
§── db .sqlite3
§ ── manage.py
§── myproject
│ §── django.xml
│ §── __init__.py
│ §── __init__.pyc
│ っていつ── settings.py
│ §── ─ 設定 .pyc
│ §── urls.py
| <code>apt-get install python-dev #不安装这个,下面的安装可能会失败
pip install uwsgi
如果是apt-get安装就需要 sudo apt-get install uwsgi-plugin-python
</code>
それを ngix 設定ファイルに追加する必要があります。 <uwsgi>
<socket>127.0.0.1:8630</socket>
<chdir>/var/ngix/myproject/myproject</chdir>
<pythonpath>..</pythonpath>
<module>wsgi</module>
</uwsgi>
这里需要注意的是wsgi模块,网上很多都是错误的,直接用自动生成的就行。
ngixサービスを再起動してから、uwsgiサービスを開始します
$ uwsgi -x django.xml --plugin python
する必要がありますdjango のディレクトリで実行されます~~
一日頑張ったら完了です
他に学んだことを要約しましょう: /etc/dpkg/info/ の下にある対応するインストール ファイルを削除すると、適切なサブプロセス起動エラーの問題を解決できます。削除した後は、自動削除する必要があります
最後に、配布には大きな落とし穴があります。 ! ! ! ! ! ! !
データ共有: wsgi の概念 UWSGIのコンセプト nginx と uWSGI に基づいて Ubuntu に Django をデプロイ
uwsgi をスーパーバイザー管理に引き渡す方法 unavailable-modifier-requested-0 ソリューション
uwsgi マニュアル
uwsgi を使用した Django のデプロイに関するよくある質問のまとめ
Django 中国語チュートリアル より完全な英語チュートリアルを読むことをお勧めします
上記は私が参照した情報です
上記は、ngix uwsgi django を組み合わせた Web サイト構築を内容も含めて紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。