亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

使用Nginx+uWsgi實現Python的Django框架站點動靜分離

2020-01-04 17:35:35
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了使用Nginx+uWsgi實現Python的Django框架站點動靜分離的部署實例,即靜態由Nginx處理而Python頁面由Django自帶的HTTP服務器處理,需要的朋友可以參考下
 

由于:

Django處理靜態文件不太友好;
以后有可能需要處理php或者其他資源的請求;

所以考慮結合nginx,使用nignx做它擅長的路由分發功能;同時做動靜分離,即Http請求統一由Nginx進行分發,靜態文件由Nginx處理,并返回給客戶端;而動態的請求,則分發到uWsgi,由uWsgi再分發給Django進行處理。即客戶端 <-> nginx <-> socket <-> uwsgi <-> Django

一、環境

系統:centOS 6

  • python: 2.7(注意:Django要在2.7版本或以上的python來 )
  • nginx
  • uswgi

所以,安裝前,先在控制臺輸入python —version查看當前python的默認版本,如果在2.7以下,則修改默認版本。(詳見附錄)

二、安裝nginx、uWsgi

安裝

nginxsudo yum install nginx

安裝

pipsudo yum install python-pip

安裝

uWsgisudo pip uwsgi


三、測試nginx、uWsgi
1. 測試nginx啟動測試nginx,看是否安裝成功啟動 sudo service nginx start然后在瀏覽器中,輸入ip地址,看是否出現nginx的歡迎頁面,出現則說明安裝成功
2. 測試uWsgi在服務器上做任意目錄下(一般在home下的某一目錄),新建test.py,如下:

# test.pydef application(env, start_response):    start_response('200 OK', [('Content-Type','text/html')])    return "Hello World"

啟動以Http方式訪問的uWsgi,在test.py同一目錄下,輸入如下命令行(8001是監聽的端口,可以改成你想要的端口)

uwsgi --http :8001 --wsgi-file test.py

然后在瀏覽器中,輸入ip地址:8001,看是否響應hello world,是則說明安裝成功
P.S. 由于開始時,uwsgi的安裝使用了錯誤的python版本,所以在我的服務器上,uwsgi正確地可執行命令暫時是:/usr/src/download/uwsgi-2.0.10/uwsgi即完整的命令行是(本文所有的uwsgi命令同此):/usr/src/download/uwsgi-2.0.10/uwsgi --http :8001 --wsgi-file test.py
--http :8001 --wsgi-file test.py至此,uwsgi和nginx安裝成功。接下來把nginx、uwsgi、django關聯起來。在它們的協作之下,達到我們想要的目標。

四、連接Django和uWsgi
如上uWsgi的測試那樣,uWsgi監聽8001端口,并把請求分發給test.py,python會執行這個文件,如果我們把test.py分給Django的入口文件,那么就實現了Django和uWsgi的連接。所以,要做的事情有兩步:

在項目目錄下創建wsgi.py文件
啟動uWsgi,使用它的wsgi-file指向wsgi.py

wsgi.py內容如下:

"""WSGI config for WHPAIWechat project.It exposes the WSGI callable as a module-level variable named ``application``.For more information on this file, see https://docs.djangoproject.com/en/1.8/howto/deployment/wsgi/"""import osfrom django.core.wsgi import get_wsgi_applicationos.environ.setdefault("DJANGO_SETTINGS_MODULE", "WHPAIWechat.settings")application = get_wsgi_application()

啟動以Http方式訪問uWsgiuwsgi --http :8000 --chdir /home/jiayandev/WHPAIWechat/ --wsgi-file WHPAIWechat/wsgi.py
瀏覽器訪問 ip地址:8000,加上必要的路由,即可訪問之前寫好的python程序:例如[http://112.74.73.31:8000/wechat/call]
P.S. 你是否關注到,啟動uwsgi即可,而無需再啟動Django了?

五、連接uWsgi和nginx
接下來,打通 uWsgi和 nginx之間的連接,它們是通過socket來連接的。第四節所講的鏈接 swgi和Django,我們用瀏覽器訪問是能得到正確的響應的,說明連接成功。那么只要在nginx上,實現某些規則下,把前端的請求轉發到此端口即可。要做的事情非常簡單,即配置nginx的配置文件即可,一般在 /etc/nginx/conf.d/default.conf中。這里,我只設置幾條簡單的規則

url包含.css、.js等服務器特定目錄,設置根目錄
以上都不匹配的的訪問分發到uwsgi上的, nginx轉發給uswgi處理

更多規則可以視業務情況而定,完整的配置如下:

upstream django {  server 127.0.0.1:8000; # 注意8000是上述uwsgi監聽的端口}server {  listen    80 default_server;  server_name _;  #charset koi8-r;  #access_log logs/host.access.log main;  # Load configuration files for the default server block.  include /etc/nginx/default.d/*.conf;  location = /404.html {    root  /usr/share/nginx/html;  }  # redirect server error pages to the static page /50x.html  #  error_page  500 502 503 504 /50x.html;  location = /50x.html {    root  /usr/share/nginx/html;  }  location ~ /.html$ {        root /usr/share/nginx/html/front;        index index.html index.htm;  }   location ~ /.(png|jpg|jpeg|css|img|js|flv|swf|download|eot|svg|ttf|woff|woff2|otf)$ {        root /usr/share/nginx/html/front;  }  # 以上都不匹配的的訪問分發到uwsgi上  location / {    include    /etc/nginx/uwsgi_params; #詳細看下文    uwsgi_pass   django;  }  * # PHP分到 9000端口**  #  #location ~ /.php$ {  #  root      html;  #  fastcgi_pass  127.0.0.1:9000;  #  fastcgi_index index.php;  #  fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;  #  include    fastcgi_params;  #}*}

同時,uswgi_param內容如下,照抄即可

uwsgi_param QUERY_STRING    $query_string;uwsgi_param REQUEST_METHOD   $request_method;uwsgi_param CONTENT_TYPE    $content_type;uwsgi_param CONTENT_LENGTH   $content_length;uwsgi_param REQUEST_URI    $request_uri;uwsgi_param PATH_INFO     $document_uri;uwsgi_param DOCUMENT_ROOT   $document_root;uwsgi_param SERVER_PROTOCOL  $server_protocol;uwsgi_param REMOTE_ADDR    $remote_addr;uwsgi_param REMOTE_PORT    $remote_port;uwsgi_param SERVER_PORT    $server_port;uwsgi_param SERVER_NAME    $server_name;

配置完成后,重啟或者reload nginx配置即可生效
重啟:

sudo service nginx restart

reload:

sudo service nginx reload

然后直接訪問,看看有什么不一樣:
http://youIP/front/index.html
http://youIP/statics/index.html
http://youIP/(加上路由信息),例如 http://112.74.73.31/wechat/call
我們這里主要先關注訪問django,如果http://112.74.73.31/wechat/call返回的信息跟第四節的一樣,說明nginx和uwsgi也連接起來了,至此,nginx、uwsgi、django順利連接完成。

六、優化uwsgi的啟動
第三節、第四節介紹的啟動uwsgi服務時,我們都是使用命令行的方式啟動和設置參數的,這樣不好記,有可能會忘記參數 等等。這里介紹另一種設置參數的方式,即用配置文件記錄uwsgi的參數,啟動時,從配置文件里加載參數。參數如下

#WHPAIWechat_uwsgi.ini[uwsgi]socket = 127.0.0.1:8000chdir = /home/jiayandev/WHPAIWechat/wsgi-file = WHPAIWechat/wsgi.pyprocesses = 4threads = 2master=True #設置此參數,有一個主進程pidfile= pidfile/project-master.pid #主進程id寫入文件里vacuum=True #退出時,清理環境daemonize = uwsgi.log #守護進程的方式運行,log日志存在此log文件里

啟動uwsgi命令變成uwsgi WHPAIWechat_uwsgi.ini


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
伊人久久久久久久久久| 亚洲欧美日韩爽爽影院| 国产精品一区二区三区久久久| 亚洲的天堂在线中文字幕| 久久亚洲影音av资源网| 欧美在线亚洲一区| 在线成人激情视频| 在线观看欧美日韩国产| 97精品视频在线播放| 国产精品视频午夜| 国产精品久久久久久av福利软件| 日韩av最新在线| 国产va免费精品高清在线观看| 亚洲欧美日韩精品| 欧美日韩国产一区二区| 奇米4444一区二区三区| 中文字幕无线精品亚洲乱码一区| 最近日韩中文字幕中文| 久久久91精品| 国产丝袜一区视频在线观看| 欧美视频在线观看 亚洲欧| 成人黄色免费看| 日av在线播放中文不卡| 欧美理论电影网| 欧美成人免费在线观看| 91在线观看免费高清完整版在线观看| 黑人巨大精品欧美一区免费视频| 亚洲精品国偷自产在线99热| 亚洲欧美日韩久久久久久| 最近的2019中文字幕免费一页| 91亚洲精品一区二区| 日韩精品视频在线观看免费| 国产精品视频久| 国产色婷婷国产综合在线理论片a| 亚洲视频在线观看| 欧美风情在线观看| 国产视频自拍一区| 欧美日韩日本国产| 91久久国产精品| 欧美午夜片在线免费观看| 久久久久久久久久久久久久久久久久av| 欧美老少做受xxxx高潮| 国产成人综合精品在线| 亚洲成人精品在线| 96pao国产成视频永久免费| 78色国产精品| 亚洲精品日韩丝袜精品| 日韩精品在线观看一区二区| 久久久久成人精品| 91精品国产99久久久久久| 欧美视频在线观看 亚洲欧| 国产精品扒开腿做爽爽爽视频| 成人av资源在线播放| 懂色av影视一区二区三区| 中文字幕亚洲无线码在线一区| 国产视频丨精品|在线观看| 国产精品盗摄久久久| 久久亚洲国产精品成人av秋霞| 成人天堂噜噜噜| 久久精品国产欧美激情| 久久精品影视伊人网| 欧美日韩亚洲天堂| 欧美高清电影在线看| 国产伊人精品在线| 都市激情亚洲色图| 亚洲欧洲偷拍精品| 国产精品v日韩精品| 久久久久久久久国产精品| 亚洲最大av在线| 国产成+人+综合+亚洲欧美丁香花| 日本久久久久亚洲中字幕| 色偷偷噜噜噜亚洲男人| 欧美精品videofree1080p| 日韩高清av在线| 91精品久久久久久久久不口人| 日韩免费在线免费观看| 亚洲精品视频免费| 555www成人网| www高清在线视频日韩欧美| 亚洲国产成人在线视频| 欧美一级淫片videoshd| 日韩欧美中文字幕在线观看| 奇米影视亚洲狠狠色| 国产精品日韩在线| 欧美国产日韩一区二区在线观看| 热99久久精品| 丝袜美腿亚洲一区二区| 国产精品久久久久久久9999| 亚洲aⅴ日韩av电影在线观看| 亚洲精品日韩丝袜精品| 国产精品吹潮在线观看| 亚洲色图35p| 日韩av免费观影| 国产精品第七影院| 亚洲综合中文字幕在线观看| 欧美精品做受xxx性少妇| 亚洲自拍欧美另类| 欧洲日韩成人av| 欧美在线观看视频| 黑人巨大精品欧美一区二区免费| 亚洲男人天堂古典| 亚洲欧洲在线视频| 成人亚洲综合色就1024| 欧美诱惑福利视频| 欧美孕妇与黑人孕交| 久久久国产视频| 久久亚洲精品一区| 欧美激情精品久久久久久大尺度| 欧美激情在线一区| 亚洲男人的天堂在线播放| 国产精品久久久久高潮| 日韩成人小视频| 欧美成人免费网| 欧美午夜丰满在线18影院| 欧美日韩人人澡狠狠躁视频| 亚洲性生活视频在线观看| 国产精品青草久久久久福利99| 欧美肥老妇视频| 91精品久久久久久久久不口人| 久久这里只有精品视频首页| 欧美电影在线观看网站| 日本高清+成人网在线观看| 91情侣偷在线精品国产| 亚洲第一中文字幕| 日韩免费在线看| 国产精品一区二区久久久| 日韩成人在线免费观看| 日韩欧美国产高清91| 欧美日韩美女在线观看| 久久精品亚洲国产| 亚洲第一av在线| 久久露脸国产精品| 日本一区二三区好的精华液| 亚洲欧洲中文天堂| 疯狂做受xxxx欧美肥白少妇| 精品国产一区二区三区久久狼黑人| 成人av资源在线播放| 亚洲视频网站在线观看| 欧美日韩国产影院| 亚洲精品www久久久久久广东| 日韩精品免费综合视频在线播放| 久久福利视频导航| 欧美日韩日本国产| 成人深夜直播免费观看| 97在线日本国产| 欧美性受xxxx黑人猛交| 亚洲色图色老头| 欧美肥老太性生活视频| 亚洲精品久久久久久久久久久久久| 欧美人成在线视频| 91精品在线观看视频| 国产精品极品美女粉嫩高清在线| 久久精品视频va| 亚洲综合在线小说| 亚洲a级在线观看| 国产视频精品自拍| 青青久久av北条麻妃黑人| 国产专区欧美专区| 欧美日韩精品国产| 亚洲乱码av中文一区二区| 2020国产精品视频| 日韩在线精品视频| 欧美网站在线观看| 亚洲精品国产精品乱码不99按摩|