アリクラウド:に基づいてCentOSの1708年4月7日、Pythonの3.6.1、Djangoの2.0.2、uWSGI 2.0.15、nginxの1.12.2
まず、簡単な紹介は
なぜジャンゴ+ uWSGI + nginxのを使用する理由?どのように展開前に、私たちが最初に把握しなければなりません知っていますか?だから、より多くの我々は?何であるかを知っておく必要があり
区別を小文字に注意を払う、いくつかの概念を明確にするため。
- WSGI -フルネーム
Python Web Server Gateway Interface
、すなわちPython
サーバーゲートウェイインターフェイス
のためPython
の言語定義Web
のサーバおよびWeb
アプリケーションやWeb
インターフェース間の単純なユニバーサルアプリケーションフレームワークが
WSGI
。ただ、通信プロトコル、より詳細な情報である、ウィキペディアを参照してくださいWSGI
。
人気のポイント私が処理するために多くの時間を費やすPythonプログラムを書くためにしたくなかったTCP
接続、HTTP
その上の要求と応答を、そして、
彼は統一されたインターフェイス(すなわちにそれらのすべてを取ったWSGI
後、専門のWebサーバーによって。)(uWSGI等)
とWebアプリケーションフレームワーク(Django
達成するために、など) 。
だけでなく、開発のしきい値を減らすだけでなく、時間を節約できます。 - uWSGIは -
uWSGI
の実現であるWSGI
、Webサーバーの契約uWSGI
処理HTTP
応答解析等を、とに変身WSGI
合意ので、我々は書くWeb
ことがuwsgiに渡された情報を処理できるアプリケーションやWebアプリケーションフレームワークを- 。
uwsgi
達成することであるWSGI
合意を、情報伝送のタイプを定義する独自の内部サーバプロトコル、
実装するためのWSGI
他のネットワークサーバのサーバのデータ通信プロトコル。
基本的な概念を理解したら、理由を知っDjango+uWSGI. Django
ているアプリケーションフレームワーク、彼は開発者がしながら、ビジネスのコードを書くことに集中できるよう、私たちは、基本的な作業の多くを行う助け実現するプロトコルのサーバーを、両方の組み合わせのみを一緒に、アプリケーションが役割を果たすことができる。理論的には、このセットで、使用するサーバーにデプロイすることができます。そして、我々はまた、追加したいもちろん、ので、その理由をあなたには、いくつかを行うことができませんすることができなかった、またはにより良いものを。に比べて、HTTPサーバーのパフォーマンスのために設計され、高い安定性の利点として使用することができ、より少ないメモリの所有権を持つロードバランサとそう使用して、キャッシュのパフォーマンスの問題である最大の理由の一つ。わずかなサイトは、多くのトラフィックがある場合は、当然のことながら、要件を満たしているが、ケースには、あなたは、高い並列性を必要とする、としてに比べて優れた高並行性の利点。加えて、より高いセキュリティをもたらすことができますあなたがすることができ、経由せず、そうでも多くのパフォーマンスが向上し、動的コンテンツを扱うことに集中。コンテンツにアクセスすることができ、それぞれの任務を要約して動作します。クライアントを受け取ります 要求、要求はにリクエストを提唱し、ある場合には、要求が静的なコンテンツ静的コンテンツ、動的コンテンツに直接返送された場合、接続されている私たちにPython
Web
uWSGI
WSGI
Web
Python
Nginx
Nginx
uWSGI
Nginx
Apache
反向代理,
HTTP
Nginx
uWSGI
Nginx
Nginx
Apache
Nginx
直接处理静态内容
uWSGI
uWSGI
Nginx
Nginx, epoll, about Nginx.
Nginx
uWSGI
uWSGI
Django
Python
処理のための手続き。
知っているDjango
、uWSGI
、Nginx
彼らは何であり、なぜ知っている必要がありますDjango+uWSGI+Nginx
後に、それが展開サーバーにすることができます。
第二に、プロジェクトの展開
-
サーバーの展開では
Python 3.6
とDjango 2.0.2
-
マック端末入力でアリクラウドサーバー接続
$ SSH [email protected]
、
root
ユーザー名は、xxx.cn
サーバーのドメイン名またはIPアドレスです。 -
nginxのをインストールします。
# yum install epel-release # yum install python-devel nginx
-
ピップuwsgiをインストールし使用してください>>>
pip3 install uwsgi --upgrade
-
UWSGIとnginxの設定ファイルとプロジェクトのルートディレクトリに直接設定
コンフィギュレーションファイルは、展開中に1回だけ必要とされているので、直接サーバー構成で、より適切であろう。もちろん、あなたはまた、ローカルプロジェクトファイルに新しいフォルダに対応する設定ファイルを作成し、設定を書き込むことができます。しかし、設定ファイルにパスをメモサーバーですパスの終わり。
uwsgi.iniをプロファイルuWSGI。詳細については、以下を参照してくださいuWSGIの設定を。
[uwsgi] #使用HTTP访问的端口号, 使用这个端口号是直接访问了uWSGI, 绕过了Nginx http = :8010 #与外界连接的端口号, Nginx通过这个端口转发给uWSGI socket = 127.0.0.1:8001 #是否使用主线程 master = true # 项目在服务器中的目录(绝对路径) chdir = /project_dir/ # Django's wsgi 文件目录 wsgi-file = project_name/wsgi.py # 最大进程数 processes = 4 #每个进程的线程数 threads = 2 #状态监听端口 stats = 127.0.0.1:9191 # 退出时自动清理环境配置 vacuum = true #目录下文件改动时自动重启 touch-reload = /project_dir #Python文件改动时自动重启 #py-auto-reload = 1 #后台运行并把日志存到.log文件 daemonize = /project_dir/uWSGI.log
-
Nginx
これは、2つの構成ファイルが必要です。uwsgi_params
ファイルとproject_name.conf
ファイル1、uwsgi_paramsで直接ファイル倉庫をダウンロードすることができます。2、project_name.conf nginx.confをコピーして、設定ファイルを変更し、最初のnginx.confファイルの場所を探します。
Nginx
git
# nginx -t
それはのようなものを出力します:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
3、新しい
project_name.conf
ファイルは、コピーしnginx.conf
た情報にすべてのファイルをproject_name.conf
。そして置き換えるserver
部分を。server { #把nginx.conf这一部分内容替换掉 ... }
ファイルの後に置き換えます。
# For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * Official Russian Documentation: http://nginx.org/ru/docs/ user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; # Load dynamic modules. See /usr/share/nginx/README.dynamic. include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' ¦ ¦ ¦ ¦ ¦ '$status $body_bytes_sent "$http_referer" ' ¦ ¦ ¦ ¦ ¦ '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; # Load modular configuration files from the /etc/nginx/conf.d directory. # See http://nginx.org/en/docs/ngx_core_module.html#include # for more information. include /etc/nginx/conf.d/*.conf; #下面的部分是替换之后的配置 # the upstream component nginx needs to connect to upstream django { # 连接到Django的端口号, 和uwsgi.ini文件中端口一致. 127.0.0.1说明只允许本地转发 server 127.0.0.1:8001; # for a web port socket (we'll use this first) } # configuration of the server server { # 端口号, 客户端通过这个端口连接到Nginx listen 80; # 服务器地址 server_name pefami.cn; # substitute your machine's IP address or FQDN # 编码 charset utf-8; #日志文件在服务器中的路径 access_log /project_dir/nginx_access.log; error_log /project_dir/nginx_error.log; # 上传文件最大体积限制 client_max_body_size 75M; # adjust to taste # Django media文件路径 location /media { alias /project_dir/media; # your Django project's media files - amend as required } # Django 静态文件路径 location /static { alias /project_dir/static; # your Django project's static files - amend as required } # Finally, send all non-media requests to the Django server. location / { uwsgi_pass django; include /project_dir/uwsgi_params; # the uwsgi_params file you installed } } }
-
後、設定ファイル、サーバー限り、次が実行されているサーバーにアップロードし、プロジェクト全体を構成しました。
uWSGI
そして、Nginx
その上でこれに注意を払う必要があります:
アリクラウドサーバー内の対応するポートを開くと、上部の構成で使用されるような8001
及び80
それ以外のポートが。クライアントがサーバーに接続できません。 -
スタート
uWSGI
# uwsgi --ini uwsgi.ini
また、直接uWSGIを起動し、設定ファイルを必要としない、あなたは次のようにuwsgi.iniファイルを設定する必要があります。
# uwsgi --http :8001 --chdir /project_dir/project_name --home=/path/to/env --module project_name.wsgi
ここで
--home
指定されvirtualenv
ていない場合は、パスを除去することができます。 -
スタートnginxの
# nginx -c /project_dir/static/project_name.conf
-
起動が完了した後は、ネットワークポートの状態を確認することができます
# netstat -nltp
通常、次回同様の印刷、次の情報が表示されuwsgiとnginxのはのサービスです。
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 18977/./src/redis-s tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4752/nginx: master tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1117/sshd tcp 0 0 127.0.0.1:32000 0.0.0.0:* LISTEN 969/java tcp 0 0 127.0.0.1:8001 0.0.0.0:* LISTEN 8989/uwsgi tcp 0 0 127.0.0.1:9191 0.0.0.0:* LISTEN 8989/uwsgi tcp 0 0 0.0.0.0:8010 0.0.0.0:* LISTEN 8989/uwsgi tcp6 0 0 :::3306 :::* LISTEN 1145/mysqld
-
ここでは、展開の全体のプロセスは完了です。
-
また、変更されたファイルの後、nginxのは、再起動する必要があります。
# nginx -s reload
著者:KenZhangCnの
リンク:https://www.jianshu.com/p/a13307242ca3
出典:ジェーン・ブック
著者によって予約ジェーン帳の著作権は、いかなる形で再現され、承認を得るために、作者に連絡して、ソースを明記してください。