nginx+uwsgi で Django プロジェクトを開始するための詳細な手順

nginx+uwsgi で Django プロジェクトを開始するための詳細な手順

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 を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Ubuntu で django+nginx+uwsgi を構築するための詳細なチュートリアル
  • Django+uwsgi+Nginxのベストプラクティスをオンラインで詳細に解説
  • Django uwsgi Nginx の実稼働環境への詳細な展開
  • Centos に Django サービス nginx+uwsgi をデプロイする方法
  • Django+Uwsgi+Nginxによる本番環境導入の徹底解説
  • Django+Uwsgi+Nginxの本番環境導入の詳細説明
  • nginx+uwsgi で Django をデプロイする際のすべての問題を解決する (要約)
  • Django+Uwsgi+Nginx で本番環境のデプロイメントを実装する方法

<<:  Vueは視覚的なドラッグページエディタを実装します

>>:  MySQL 5.7.11 zip インストールと設定方法のグラフィックチュートリアル

推薦する

インデックススキャンを使用したMySQLソート

目次sakilaをインストールするインデックススキャンソートテーブル構造インデックススキャンをソート...

フレックスレイアウトは、1行あたりの固定行数と適応レイアウトを実現します。

この記事では、1行あたりの固定行数+アダプティブレイアウトを実現するフレックスレイアウトを紹介し、皆...

CSS フレキシブルレイアウト FLEX、メディアクエリ、モバイルクリックイベントの実装

フレックスレイアウト定義: Flexレイアウトの要素は、 Flex 、または略して「コンテナー」と呼...

docker を使って sonarqube を構築する方法

目次1. Dockerをインストールする2. ソナーイメージをインストールする3. ソナーを使ってコ...

Alibaba Cloud Ubuntu 16.04 が IPSec サービスを構築

IPSec の概要IPSec (インターネット プロトコル セキュリティ): ネットワーク層と適用さ...

MySQL インデックスの一般的な問題の概要

Q1: データベースにはどのようなインデックスがありますか?メリットとデメリットは何ですか? 1. ...

Xshell を使用して VMware 上の Linux 仮想マシンに接続する (グラフィック手順)

はじめに: 最近 Hadoop プラットフォームの構築を勉強し始めたので、ローカルマシンに VMwa...

MySQLはtruncateコマンドを使用してデータベース内のすべてのテーブルを素早くクリアします

1. まずSELECT文を実行して、すべての切り捨て文を生成します。ステートメント形式: selec...

チャットバブル効果を実現するCSS

1. レンダリングJD効果シミュレーション効果 2. 原則高さと幅が0のボックスを用意しますこのボ...

Firefoxでリンクをクリックしたときに点線の枠線を削除する方法

今日、ブラウザの互換性の問題にいくつか遭遇しました。そのうちの 1 つは奇妙に感じました。Firef...

ウェブサイトのテキストはまだデザインする必要がありますか?

多くの人が、ウェブサイト上のテキストはデザインする必要があるのか​​と疑問に思うかもしれません。多く...

MySQLストアドプロシージャにおけるカーソル(DECLARE)の原理と使い方の詳細な説明

この記事では、例を使用して、MySQL ストアド プロシージャにおけるカーソル (DECLARE) ...

MySQLデータベースパラダイムの詳細な説明

序文:データベースパラダイムについてはよく耳にしていましたが、詳細まで理解したことはありませんでした...

mysql 5.6.23 winx64.zip インストール詳細チュートリアル

WindowsにMySQLの圧縮バージョンをインストールする方法の詳細については、以下を参照してくだ...

HTMLエリアタグの詳しい説明

<area> タグは、イメージ マップ内の領域を定義します (注: イメージ マップはク...