nginx+uwsgi 安装
------------------------- 1.编译 到这里下载 http://projects.unbit.it/downloads/-------以0.9.6.8版本为例 tar xzvf uwsgi-0.9.6.8.tar.gz cd uwsgi-0.9.6.8 make cp uwsgi /usr/bin2.配置nginx转发规则 在nginx配置文件的server段中,加上配置
# 把所有请求都重定向给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 }3.运行uwsgi 执行 uwsgi -s :9090 -w your_app_file -------------------------示例的内容可以是:
#!/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重启 启动: uwsgi --socket myapp.cgi -s :9090 --w myapp.cgi 访问:
curl http://localhost/eventlet/myapp
------------------ 获取请求中的数据
import sysdef 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 bufdef 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 '' #这个示例不在乎返回信息
----------------------------进一步
返回格式化的数据示例:
import sys,jsondef 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)