Python Web 程序使用 uWSGI 部署
WSGI是什么熊昌?
WSGI掂为,全稱 Web Server Gateway Interface,或者 Python Web Server Gateway Interface ,是為 Python 語言定義的 Web 服務(wù)器和 Web 應(yīng)用程序或框架之間的一種簡單而通用的接口昂勒。自從 WSGI 被開發(fā)出來以后,許多其它語言中也出現(xiàn)了類似接口舟铜。
WSGI 的官方定義是戈盈,the Python Web Server Gateway Interface。從名字就可以看出來深滚,這東西是一個Gateway奕谭,也就是網(wǎng)關(guān)。網(wǎng)關(guān)的作用就是在協(xié)議之間進行轉(zhuǎn)換痴荐。
WSGI 是作為 Web 服務(wù)器與 Web 應(yīng)用程序或應(yīng)用框架之間的一種低級別的接口血柳,以提升可移植 Web 應(yīng)用開發(fā)的共同點。WSGI 是基于現(xiàn)存的 CGI 標準而設(shè)計的生兆。
很多框架都自帶了 WSGI server 难捌,比如 Flask,webpy鸦难,Django根吁、CherryPy等等。當(dāng)然性能都不好合蔽,自帶的 web server 更多的是測試用途击敌,發(fā)布時則使用生產(chǎn)環(huán)境的 WSGI server或者是聯(lián)合 nginx 做 uwsgi 。也就是說拴事,WSGI就像是一座橋梁沃斤,一邊連著web服務(wù)器(如 nginx),另一邊連著Python的應(yīng)用程序Application刃宵。但是呢衡瓶,這個橋的功能很弱,有時候還需要別的橋來幫忙才能進行處理牲证。
uWSGI
uWSGI 是一個(巨大的) C 應(yīng)用哮针,所以你需要一個 C 編譯器(比如 gcc 或者 clang)和 Python 開發(fā)版頭文件。
uWSGI是一個Web服務(wù)器坦袍,它實現(xiàn)了WSGI協(xié)議十厢、uwsgi、http等協(xié)議键闺。Nginx中HttpUwsgiModule的作用是與uWSGI服務(wù)器進行交換寿烟。
uWSGI 安裝
環(huán)境
SystemOS: CentOS-7.5_x64
Python: 3.6
virtual: Anaconda3
安裝
# 在虛擬環(huán)境中直接安裝
$ pip install uwsgi
uWSGI hello world
hello_world.py
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"]
啟動
uwsgi --http 0.0.0.0:8000 --wsgi-file hello_world.py
使用瀏覽器訪問http://ip:8000
啟動 uwsgi 可以添加多個參數(shù)
uwsgi --socket 127.0.0.1:3031 --wsgi-file uwsgi.py --master --processes 4 --threads 2 --stats 127.0.0.1:8001
將配置文件集中寫在配置文件中
uwsgi.ini
[uwsgi]
socket = 127.0.0.1:3031
chdir = /home/foobar/myproject/
pythonpath = ..
processes = 4
threads = 2
stats = 127.0.0.1:9191