nginx+webpy配置

  以前搞app時候學的webpy,一直用的自帶webserver,最近研究nginx一段時間,決定兩者結合玩一下~html

  把搭建的要點總結下,說不定哪天還得用——其實平時手挺懶的...python

  1 必備模塊和背景知識nginx

   pcre,flup,nginx,webpy,spawn-fcgiweb

     pcre是nginx安裝前提;安裝pcre後configur enginx時帶--with-pcre=path,path爲pcre源碼路徑(不是安裝路徑哦)。apache

   fastcgi , 通訊規範,規定了通訊的方式、協議;而wsgi是接口規範,規定了函數定義、調用,至關於一組 Python API,提供了對 FastCGI (及其它)協議的支持。django

   spawn-fcgi , fastcgi進程管理器,最初是lighttpd的子模塊,lighttpd也是一個與nginx相似的http server,做用等同於其它http server中的fastcgi模塊;只不過它實現的比較好、在某些狀況下的效能會比較高,因此被你們分離出來普遍使用,以至獨立出來做爲一個項目。因此就有了apache+spawn-fcgi、nginx+spawn-fcgi等.瀏覽器

     flup, 一個用python寫的web server,也就是cgi中所謂的Server/Gateway,它負責接受lighttpd轉發的請求,並調用你寫的程序 (application),並將application處理的結果返回到apache/lighttpd.cookie

     web.py,應該說有了上面的東西你就能夠開始編寫你的web程序了,可是問題是你就要本身處理瀏覽器的輸入輸出,還有cookie、session、模板等各類各樣的問題了,web.py的做用就是幫你把這些工做都作好了,它就是所謂的web framework,另一個出名的是django,不過感受太複雜了,web.py差很少就夠用了(目前web.py對session的支持不是太好)。session

  他們關係以下,app

  

2 配置過程

   通通略,見參考文獻2和3

 

3 源碼註解

  大致請參考4,研讀中請務必弄清楚幾個知識點:進程會話,粘滯位,dup2函數等,不然會被不少非核心代碼搞蒙。

  其實,核心的代碼就在這,

close(FCGI_LISTENSOCK_FILENO);
dup2(fcgi_fd, FCGI_LISTENSOCK_FILENO);
close(fcgi_fd);  

以後的exec操做,子進程都會繼承FCGI_LISTENSOCK_FILENO,而後會在這上面accept(這天然是flup操做wsgi了),而後會寫回accept的句柄,nginx就會受到響應的。

 

參考文獻:

1 nginx配置大全中文   http://my.oschina.net/duxuefeng/blog/34880

2 webpy官方配置建議  http://webpy.org/cookbook/fastcgi-nginx.zh-cn

3 一箇中文配置示例   http://blog.csdn.net/five3/article/details/7732832

4 spawn-fcgi源碼     http://chenzhenianqing.cn/articles/936.html

相關文章
相關標籤/搜索