================== 網上別人的理解 ===================python
http://www.douban.com/note/13508388/nginx
一、Apache/lighttpd: 至關於一個request proxy,根據配置,把不一樣的請求轉發給不一樣的server處理,例如靜態的文件請求本身處理,這個時候它就像一個web server,對於fastcgi/python這樣的請求轉發給flup這樣的Server/Gateway進行處理
二、flup: 一個用python寫的web server,也就是cgi中所謂的Server/Gateway,它負責接受apache/lighttpd轉發的請求,並調用你寫的程序 (application),並將application處理的結果返回到apache/lighttpd
三、fastcgi: apache/lighttpd的一個模塊,雖然flup能夠做爲一個獨立的web server使用,可是對於瀏覽器請求處理通常都交給 apache/lighttpd處理,而後由apache/lighttpd轉發給flup處理,這樣就須要一個東西來把apache/lighttpd跟flup聯繫起來,這個東西就是fastcgi,它經過環境變量以及socket將客戶端請求的信息傳送給flup並接收flup返回的結果
四、web.py: 應該說有了上面的東西你就能夠開始編寫你的web程序了,可是問題是你就要本身處理瀏覽器的輸入輸出,還有cookie、session、模板等各類各樣的問題了,web.py的做用就是幫你把這些工做都作好了,它就是所謂的web framework,另一個出名的是django,不過感受太複雜了,web.py差很少就夠用了
五、WSGI : 除了flup Server/Gateway外還有不少其餘人的寫的Server/Gateway, 這個時候就會出問題了,若是你在flup上寫了一個程序,如今因爲各類緣由你要使用xdly了,這個時候你的程序也許就要作不少痛苦的修改才能使用 xdly server了,WSGI就是一個規範,他規範了flup這個服務應該怎麼寫,應該使用什麼方式什麼參數調用你寫的程序(application)等,固然同時也規範你的程序應該怎麼寫了,這樣的話,只要flup跟xdly都遵照WSGI的話,你的程序在兩個上面均可以使用了,flup就是一個WSGI serverweb
================== 我本身的理解 ================apache
一、wsgi是一種協議,python和webserver通信的協議。django
二、fastcgi是cgi的改進版,是webserver和程序通信的協議,wsgi是在fastcgi的基礎上定製化的(wsgi特爲python服務)也就是說 nginx + fastcgi + wsgi + python纔是完整的流程。其中fastcgi和wsgi都是獨立實現的。好比python的flup就是wsgi的一種實現。瀏覽器
三、fastcgi是一種cgi,是web服務器和應用程序交互的標準,wsgi是在fastcgi的層次之上的東西服務器
四、WSGI是python的接口規範,這個規範是針對WEB服務器和python應用(框架等)的交互的。FASTCGI則是二者底層的通訊協議的規範。 cookie
五、而uwsgi則是集成了fastcgi和wsgi的功能,簡化了這一步session
=================== uwsgi的部署 ====================app
既然如此貌似uwsgi是最牛逼的,以前用nginx + tornado用到內傷了,此次研究下若是nginx + uwsgi + python 下邊單開一個文章寫部署