nginx+uwsgi+django は、私たちがよく使用する Django デプロイメント方法です。フロントエンド サーバーとして、nginx はすべてのクライアント リクエストを受信する役割を担います。リクエストされた静的ファイルは、静的ファイルの処理能力に優れ、パフォーマンスが最適化され、高い同時実行性をサポートする nginx サーバー自体によって処理されます。uWSGI サーバーは、nginx を提供するために使用されるサポート サーバーです。nginx は、リクエストされた動的ファイルを uWSGI に渡して処理します。 uWSGI は、uwsgi、wsgi、http プロトコルを実装します。uwsgi プロトコルは、フレームワーク (django) とサーバー間のインターフェイスを定義する uWSGI のカスタム プロトコルです。 1. プロジェクト環境をインストールする システム環境: Ubuntu 16.04 Python環境: python3.5.2 Django バージョン: django1.11.7 Nginx 環境: nginx_1.10.3 仮想環境: virtualenv15.1.0 uwsgi バージョン: uwsgi2.0.17.1 プロジェクトの仮想環境をインストールして入力します。 sudo apt-get 仮想環境をインストールします 仮想環境 -p python3 env_my_project ソース env_my_project/bin/activate pip インストール -r 要件.txt 2. プロジェクトの構成と運用テスト プロジェクト構成ファイルを変更します。 cp my_project/settings_local.py.example my_project/settings_local.py es 構成ファイルを変更します。 rs_es/es_settings.py の例 rs_es/es_settings.py wsgi.py: インポートOS django.core.wsgi から get_wsgi_application をインポートします os.environ.setdefault("DJANGO_SETTINGS_MODULE", "my_project.settings_local") アプリケーション = get_wsgi_application() プロジェクト実行テスト: python manage.py collectstatic # 静的ファイルを収集する python manage.py makemigrations python manage.py 移行 python manage.py runserver 0.0.0.0:8001 3. NGINXとUWSGI関連の設定 sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/my_project sudo ln -s /etc/nginx/sites-available/my_project /etc/nginx/sites-enabled/ sudo vim /etc/nginx/sites-enabled/my_project nginx の設定: アップストリーム my_project{ サーバー unix:///var/run/my_project.sock; } サーバー{ listen 8001; //サービスポート番号サービスはnginxとuwsgi通信を介して開始されます server_name 192.168.xx.xx; //nginxプロキシのIP 文字セット utf-8; # 最大アップロードサイズ クライアントの最大ボディサイズは10Mです。 # メディア以外のすべてのリクエストを Django サーバーに送信します。 位置 / { uwsgi_pass my_project; /etc/nginx/uwsgi_params を含めます。 } 場所 /static/ { ルート /home/ubuntu/my_project; } } Uwsgi 設定: sudo mkdir /var/log/uwsgi sudo chmod -R 777 /var/log/uwsgi uwsgi.ini: [uwsgi] chdir=/home/ubuntu/my_project ホーム=/home/ubuntu/my_project/env_my_project モジュール=my_project.wsgi:アプリケーション ソケット=/var/run/my_project.sock chmod-ソケット = 666 マスター=True プロセス = 5 最大リクエスト数=5000 # 終了時に環境をクリアする 真空=真 pidファイル=/var/run/my_project.pid デーモン化=/var/log/uwsgi/my_project.log # git pull はサービスを自動的に再起動します touch-reload=.git/index 4. 皇帝モード監視とuwsgiのシステム自動起動を構成する エンペラーモードのリスニングを設定する sudo mkdir /etc/uwsgi sudo mkdir /etc/uwsgi/vassals sudo ln -s /home/ubuntu/my_project/uwsgi.ini /etc/uwsgi/vassals/ システムは自動的にuwsgiを起動します sudo vim /etc/rc.local /usr/local/bin/uwsgi --emperor /etc/uwsgi/vassals 5. uwsgi経由でDjangoサービスを開始する uwsgiを起動する uwsgi --ini uwsgi.ini nginxを再起動する sudo サービス nginx を再起動 Djangoサービスを開始する sudo uwsgi --reload /var/run/my_project.pid この時点で、ブラウザのngnixからIPとポートプロキシを介してサービスにアクセスできます。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
>>: MySQL 5.7.11 zip インストールと設定方法のグラフィックチュートリアル
関数の起源最近、水平スクロール バーを必要とする H5 に取り組んでいました。いくつかのドキュメント...
視覚効果が非常に美しく、訪問者に強い印象を残すことがわかります。さらに、重要なポイントが強調され、訴...
MySQL エラー: パラメータ インデックスが範囲外です (1 > パラメータ数、つまり 0...
この記事では、VMware Workstation 14 Pro (仮想マシン) にシステムをインス...
なぜログを読む必要があるのでしょうか?たとえば、コンテナの起動に失敗したがプロンプトが表示されない場...
序文最近、仮想マシンを使用して Ubuntu 18.04 をインストールしました。クローン作成後、I...
この記事では、Vueの具体的なコード例を参考までに紹介します。具体的な内容は以下のとおりです。必要:...
目次間違い1: データの列が多すぎる誤解2: 共同クエリが多すぎる誤解3: ENUMの代わりにSET...
この記事では、動的な点と線の効果を実現するためのJavaScriptキャンバスの具体的なコードを参考...
この記事の例では、WeChatアプレットの水平スクロールと垂直スクロールを実現するための具体的なコー...
目次クエリの背景1. クエリをいいね2. JSON関数クエリ3. 共同インデックスクエリ4. 全文イ...
1. 質問:最近、挿入操作を行っています。MySQLのバージョンは5.7です。挿入は成功しますが、エ...
dockerスタックによってデプロイされたイメージサービスを使用すると、イメージを入力した後、理論的...
Mysql Workbench はオープンソースのデータベース クライアントです。このオープンソース...
目次1. 需要背景2. 最適化計画3. 具体的な実施3.1 フロントエンドコード3.2 背景コード4...