Python Web 程序使用 uWSGI 部署
WSGI是什么?
WSGI,全稱 Web Server Gateway Interface,或者 Python Web Server Gateway Interface ,是為 Python 語言定義的 Web 服務器和 Web 應用程序或框架之間的一種簡單而通用的接口。自從 WSGI 被開發出來以后,許多其它語言中也出現了類似接口。
WSGI 的官方定義是,the Python Web Server Gateway Interface。從名字就可以看出來,這東西是一個Gateway,也就是網關。網關的作用就是在協議之間進行轉換。
WSGI 是作為 Web 服務器與 Web 應用程序或應用框架之間的一種低級別的接口,以提升可移植 Web 應用開發的共同點。WSGI 是基于現存的 CGI 標準而設計的。
很多框架都自帶了 WSGI server ,比如 Flask,webpy,Django、CherryPy等等。當然性能都不好,自帶的 web server 更多的是測試用途,發布時則使用生產環境的 WSGI server或者是聯合 nginx 做 uwsgi 。也就是說,WSGI就像是一座橋梁,一邊連著web服務器(如 nginx),另一邊連著Python的應用程序Application。但是呢,這個橋的功能很弱,有時候還需要別的橋來幫忙才能進行處理。
uWSGI
uWSGI 是一個(巨大的) C 應用,所以你需要一個 C 編譯器(比如 gcc 或者 clang)和 Python 開發版頭文件。
uWSGI是一個Web服務器,它實現了WSGI協議、uwsgi、http等協議。Nginx中HttpUwsgiModule的作用是與uWSGI服務器進行交換。
uWSGI 安裝
環境
SystemOS: CentOS-7.5_x64
Python: 3.6
virtual: Anaconda3
安裝
# 在虛擬環境中直接安裝
$ 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 可以添加多個參數
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