python的web项目 使用 bash脚本调用uwsgi命令运行
1背景知识
2介绍
uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。
Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。
uwsgi同WSGI一样是一种通信协议,而uWSGI是实现了uwsgi和WSGI两种协议的Web服务器。
uwsgi协议是一个uWSGI服务器自有的协议,它用于定义传输信息的类型(type of information),每一个uwsgi packet前4byte为传输信息类型描述,它与WSGI相比是两样东西。
有了uWSGI为什么还需要nginx?
nginx具备优秀的静态内容处理能力,然后将动态内容转发给uWSGI服务器,这样可以达到很好的客户端响应。
正式开工 配置
Nginx的整体配置说来话长,这里不再多说,假设已经明白Nginx的基本配置,那么uwsgi就类似这么配置:
- location / {
- include uwsgi_params
- uwsgi_pass 127.0.0.1:9090
- }
这就是把所有url传给9090端口的uwsgi协议程序来互动。再到project目录建立myapp.py,使得application调用框架的wsgi接口,比如web.py就是:
- ......
- app = web.application(urls, globals())
- appapplication = app.wsgifunc()
再比如django就是:
- .......
- from django.core.handlers.wsgi import WSGIHandler
- application = WSGIHandler()
然后运行uwsgi监听9090,其中-w后跟模块名,也就是刚才配置的myapp
- uwsgi -s :9090 -w myapp
运行网站发现已经部署完成了。
也就是
- uwsgi -s :9090 -w myapp
这样就监听了9090端口,所有发到这个端口的socket包会触发myapp的操作
至于uWsgi的参数:
uWsgi官方文档http://projects.unbit.it/uwsgi/wiki/Doc
uWsgi运行参数说明 :http://heipark.iteye.com/blog/1847421
参考 http://developer.51cto.com/art/201010/229615.htm