ホームページ  >  記事  >  バックエンド開発  >  ngix uwsgi djangoを組み合わせたウェブサイトの構築

ngix uwsgi djangoを組み合わせたウェブサイトの構築

WBOY
WBOYオリジナル
2016-08-08 09:23:491119ブラウズ

最近、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;
}
ツールがインストールされたら、django プロジェクトを自動的に生成できる pycharm を使用してプロジェクトの構成を開始できます。 django admin を実行する必要がない場合、py は対応するプロジェクト ファイルを生成します

。 ── __init__.py

│ §─ マイグレーション─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>
を使用します ソケットはローカルマシンの 8630 ポートです


それを ngix 設定ファイルに追加する必要があります。




<uwsgi>
    <socket>127.0.0.1:8630</socket>
    <chdir>/var/ngix/myproject/myproject</chdir>
    <pythonpath>..</pythonpath>
    <module>wsgi</module>
</uwsgi>
这里需要注意的是wsgi模块,网上很多都是错误的,直接用自动生成的就行。
uwsgiはngixに付属のモジュールです

ngixサービスを再起動してから、uwsgiサービスを開始します

$ uwsgi -x django.xml --plugin python

する必要がありますdjango のディレクトリで実行されます~~

一日頑張ったら完了ですngix uwsgi djangoを組み合わせたウェブサイトの構築

他に学んだことを要約しましょう: /etc/dpkg/info/ の下にある対応するインストール ファイルを削除すると、適切なサブプロセス起動エラーの問題を解決できます。削除した後は、自動削除する必要があります

最後に、配布には大きな落とし穴があります。 ! ! ! ! ! ! !

データ共有: wsgi の概念 UWSGIのコンセプト nginx と uWSGI に基づいて Ubuntu に Django をデプロイ

uwsgi をスーパーバイザー管理に引き渡す方法 unavailable-modifier-requested-0 ソリューション

uwsgi マニュアル uwsgi を使用した Django のデプロイに関するよくある質問のまとめ Django 中国語チュートリアル より完全な英語チュートリアルを読むことをお勧めします

上記は私が参照した情報です

上記は、ngix uwsgi django を組み合わせた Web サイト構築を内容も含めて紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。