轉:nginx上用fastcgi配置python環境

來源:互聯網
上載者:User
nginx上用fastcgi配置python環境(一)  

2010-09-02 17:39:15|  分類: Apache/Nginx |  標籤:wsgi  flup  fcgi  python  nginx   |字型大小大中小 訂閱

        費了2天的功夫,翻閱了無數的中文、英文資料,終於搞定。寫下此文留待以後翻閱用

     本文環境,centOS 5.4 ,Nignx-0.8.49, Python 2.6.5
=====================================================================================       WSGI是Python應用程式或架構和Web伺服器之間的一種介面,已經被廣泛接受, 它已基本達成它了可移植性方面的目標。        WSGI 沒有官方的實現, 因為WSGI更像一個協議. 只要遵照這些協議,WSGI應用(Application)都可以在任何實現(Server)上運行, 反之亦然。
     WSGI具體實現有很多種方法,網上有很多的用python寫的架構,比如facebook的tornado,我用的是flup,具體的介紹可以到 http://pypi.python.org/pypi/flup/1.0。
     對於WSGI的深入理解可以參考本部落格的另一篇文章:       http://blog.163.com/sky20081816@126/blog/static/16476102320108254032278/
     cd /usr/local/src     wget http://pypi.python.org/packages/2.5/f/flup/flup-1.0-py2.5.egg#md5=3c9368437e9bffb950c6cce54425d32f     tar -xzvf flup-1.0.3.dev-20100525.tar.gz     cd     flup-1.0.3.dev-20100525     python setup.py install     到此flup安裝完畢===================================================================================== 以上是準備工作,下面正式開始   配置nginx,找到nginx.conf 添加一段如下代碼 server  {    listen  8000;   server_name test.com;    location /    {       #fastcgi_pass  unix:/tmp/python-cgi.sock;(注1)      fastcgi_pass  127.0.0.1:8008; (注意這裡的連接埠和上面的listen的8000連接埠要不一樣,否則會報地址已佔用的錯)      fastcgi_param SCRIPT_FILENAME "";      fastcgi_param PATH_INFO $fastcgi_script_name;      include fcgi.conf;    }  }
注1:這裡最好是用127.0.0.1:8000代替,這樣的話就沒有存取權限的限制,如果用的是python-cgi.sock,還得chmod 777 python-cgi.sock才可以,不然的話瀏覽器會出現505的內部錯誤。
 引用原文如下:A Web server can connect to a FastCGI server in one of two ways: It can use either a Unix domain socket (a “named pipe” on Win32 systems), or it can use a TCP socket. What you choose is a manner of preference; a TCP socket is usually easier due to permissions issues.

 然後我們再寫一個fcgi.py,代碼如下#!/usr/bin/python# encoding : utf-8
from flup.server.fcgi import WSGIServer
def myapp(environ, start_response):    start_response('200 OK', [('Content-Type', 'text/plain')])    return ['Hello World!\n']
if __name__  == '__main__':   WSGIServer(myapp,bindAddress=('127.0.0.1',8008)).run()(注2)  注2,看到了嗎,這裡的bindAddress 的值是一個元組,這個是WSGIServer的原始碼要求這麼寫的,而且它的值對應的是上面fastcgi-pass的值
然後我們就可以運行python fcgi.py --method=prefork/threaded minspare=50 maxspare=50 maxchildren=1000 (注3)注3:後面的那些參數相當於php-cgi後面的參數,但是具體的用途還需要進一步探索
運行到這了,我們就可以在瀏覽器裡面敲: http://localhost:8000如果返回 Hello World,恭喜你,邁出了nginx 運行python的第一步
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.