nginx+uwsgi 安裝
-------------------------
1.編譯
到這裏下載 http://projects.unbit.it/downloads/ html
-------以0.9.6.8版本爲例 tar xzvf uwsgi-0.9.6.8.tar.gz cd uwsgi-0.9.6.8 make cp uwsgi /usr/bin
# 把全部請求都重定向給uwsgi處理 location / { include uwsgi_params uwsgi_pass 127.0.0.1:9090 }或
# 將指定的url重定向個uwsg的 location ^~ /your_dir/your_cgi { include uwsgi_params uwsgi_pass 127.0.0.1:9090 }
#!/usr/bin/python #hello.py import web urls = ( '/(.*)', 'hello' ) app = web.application(urls, globals()) class hello: def GET(self, name): if not name: name = 'World' return 'Hello, ' + name + '!' application = app.wsgifunc()nginx配置
location ^~ /eventlet/cgi { include uwsgi_params; uwsgi_pass 127.0.0.1:9090; }nginx重啓
curl http://localhost/eventlet/myapp python
------------------ 獲取請求中的數據 nginx
import sys def read_obj(env): if 'wsgi.input' in env: return env['wsgi.input'] else: return sys.stdin #獲取HTTP POST數據 def get_http_post_data(env): content_length = int(env['CONTENT_LENGTH']) buf = read_obj(env).read(content_length) #buf就是post的參數,固然仍是個字符串 return buf #獲取HTTP GET數據 def get_http_get_data(env): buf = env['QUERY_STRING'] return buf def application(env, start_response): start_response('200 OK',[('Content-Type','text/html')]) http_post_data = get_http_post_data(env) http_get_data = get_http_get_data(env) return '' #這個示例不在意返回信息
----------------------------進一步 web
返回格式化的數據示例: shell
import sys,json def read_obj(env): if 'wsgi.input' in env: return env['wsgi.input'] else: return sys.stdin #獲取HTTP POST數據 def get_http_post_data(env): content_length = int(env['CONTENT_LENGTH']) buf = read_obj(env).read(content_length) #buf就是post的參數,固然仍是個字符串 return buf #獲取HTTP GET數據 def get_http_get_data(env): buf = env['QUERY_STRING'] return buf def application(env, start_response): start_response('200 OK',[('Content-Type','text/html')]) http_post_data = get_http_post_data(env) http_get_data = get_http_get_data(env) #返回格式化數據,json很好用:-) reply_json = {'code':0,'msg':'this is a demo return str'} return json.dumps(reply_json)