詳解Django+Uwsgi+Nginx 實現(xiàn)生產(chǎn)環(huán)境部署
uwsgi介紹
uWSGI是一個Web服務(wù)器,它實現(xiàn)了WSGI協(xié)議、uwsgi、http等協(xié)議。Nginx中HttpUwsgiModule的作用是與uWSGI服務(wù)器進(jìn)行交換。
要注意 WSGI / uwsgi / uWSGI 這三個概念的區(qū)分。
WSGI是一種Web服務(wù)器網(wǎng)關(guān)接口。它是一個Web服務(wù)器(如nginx,uWSGI等服務(wù)器)與web應(yīng)用(如用Flask框架寫的程序)通信的一種規(guī)范。
uwsgi是一種線路協(xié)議而不是通信協(xié)議,在此常用于在uWSGI服務(wù)器與其他網(wǎng)絡(luò)服務(wù)器的數(shù)據(jù)通信。
而uWSGI是實現(xiàn)了uwsgi和WSGI兩種協(xié)議的Web服務(wù)器。
uwsgi協(xié)議是一個uWSGI服務(wù)器自有的協(xié)議,它用于定義傳輸信息的類型(type of information),每一個uwsgi packet前4byte為傳輸信息類型描述,它與WSGI相比是兩樣?xùn)|西。
安裝uwsgi
pip install uwsgi
uwsgi不支持windows
測試啟動
創(chuàng)建測試文件并寫入:
def application(environ, start_response):
status = '200 OK'
output = 'Hello World! powerde by wsgi'
response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output.encode('utf8'),]
執(zhí)行命令:
uwsgi --http :8080 --file test.py
瀏覽器訪問該端口,正常情況下能得到輸出。
用 uwsgi 啟動django
uwsgi --http :8080 --file django_project/wsgi.py
頁面能訪問,但是靜態(tài)文件無法加載,需要
uwsgi --http :8080 --file django_project/wsgi.py --static-map=/static=static
靜態(tài)文件就能加載了。
參數(shù)說明:
- http 這個就和 runserver 一樣指定 IP 端口
- file 這個文件就里有一個反射,如果你在調(diào)用他的時候沒有指定Web Server就使用默認(rèn)的
- static 做一個映射,指定靜態(tài)文件
uwsgi配置文件啟動django項目
uwsgi 支持的參數(shù)還挺多的,可以將他們寫在配置文件中。在項目同級目錄創(chuàng)建 uwsgi.ini 文件:
# uwsig使用配置文件啟動 [uwsgi] # 項目目錄 chdir=/opt/webvirtcloud/ # 指定項目的application module=webvirtcloud.wsgi:application # 指定sock的文件路徑 socket=/tmp/uwsgi.sock # 進(jìn)程個數(shù) workers=5 pidfile=/tmp/uwsgi.pid # 指定IP端口 http=0.0.0.0:8080 # 如果和ngxin結(jié)合,本行注釋掉 # 指定靜態(tài)文件 static-map=/static=/opt/webvirtcloud/static # 啟動uwsgi的用戶名和用戶組 uid=root gid=root # 啟用主進(jìn)程 master=true # 自動移除unix Socket和pid文件當(dāng)服務(wù)停止的時候 vacuum=true # 序列化接受的內(nèi)容,如果可能的話 thunder-lock=true # 啟用線程 enable-threads=true # 設(shè)置自中斷時間 harakiri=30 # 設(shè)置緩沖 post-buffering=4096 # 設(shè)置日志目錄 daemonize=/var/log/uwsgi.log
更多參數(shù)可見: https://uwsgi-docs.readthedocs.io/en/latest/Options.html
執(zhí)行命令: uwsgi --ini uwsgi.ini ,命令都不再用shell終端,即使斷開shell連接,頁面仍然能訪問。
那要如何關(guān)閉或重啟它呢?
uwsgi --stop /tmp/uwsgi.pid
配置nginx
找到Nginx的配置文件,用虛擬域名的就在虛擬域名里寫:
server {
listen 80;
server_name localhost;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8080; //必須和uwsgi中socket的設(shè)置一致
client_max_body_size 35m;
}
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 使用Nginx+uWsgi實現(xiàn)Python的Django框架站點(diǎn)動靜分離
- 解決nginx+uwsgi部署Django的所有問題(小結(jié))
- Django + Uwsgi + Nginx 實現(xiàn)生產(chǎn)環(huán)境部署的方法
- 詳解Django+Uwsgi+Nginx的生產(chǎn)環(huán)境部署
- nginx+uwsgi啟動Django項目的詳細(xì)步驟
- Centos部署django服務(wù)nginx+uwsgi的方法
- Django uwsgi Nginx 的生產(chǎn)環(huán)境部署詳解
- Nginx+Uwsgi+Django 項目部署到服務(wù)器的思路詳解
- centos7下基于nginx+uwsgi部署Django項目的實現(xiàn)
相關(guān)文章
python安裝oracle擴(kuò)展及數(shù)據(jù)庫連接方法
這篇文章主要介紹了python安裝oracle擴(kuò)展及數(shù)據(jù)庫連接方法,較為詳細(xì)的分析了Python下載oracle擴(kuò)展及Windows、Linux環(huán)境下的安裝步驟、操作技巧及注意事項,需要的朋友可以參考下2017-02-02
基于python實現(xiàn)把圖片轉(zhuǎn)換成素描
這篇文章主要介紹了基于python實現(xiàn)把圖片轉(zhuǎn)換成素描,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-11-11
python+pyqt實現(xiàn)12306圖片驗證效果
這篇文章主要為大家詳細(xì)介紹了python+pyqt實現(xiàn)12306圖片驗證效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-10-10
Python Selenium XPath根據(jù)文本內(nèi)容查找元素的方法
這篇文章主要介紹了Python Selenium XPath根據(jù)文本內(nèi)容查找元素的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12

