1.4 uwsgi 入门

python的web项目 使用 bash脚本调用uwsgi命令运行


1背景知识

基于Python的Web项目部署起来真是头痛,常见的部署方法有:
◆fcgi:用spawn-fcgi或者框架自带的工具对各个project分别生成监听进程,然后和http服务互动。
◆wsgi:利用http服务的mod_wsgi模块来跑各个project。
无论哪种都很麻烦,apache的mod_wsgi配置起来麻烦,内存占用还大,如果要加上nginx作为 静态页面的服务器那就更麻烦了;
如果Python中能有个什么东西像php-cgi一样监听同一端口,进行统一管理和 负载平衡,那真是能省下大量的部署功夫。这就是uwsgi为什么会诞生!

2介绍

uWSGI,既不用wsgi协议也不用fcgi协议,而是自创了一个uwsgi的协议,据说该协议大约是fcgi协议的10倍那么快。
uWSGI的主要特点如下:
◆超快的性能。
◆低内存占用(实测为apache2的mod_wsgi的一半左右)。
◆多app管理。
◆详尽的日志功能(可以用来分析app性能和瓶颈)。
◆高度可定制(内存大小限制,服务一定次数后重启等)。



WSGI是一种Web服务器网关接口。它是一个Web服务器(如nginx)与应用服务器(如uWSGI服务器)通信的一种规范。

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就类似这么配置:

 
 
  1. location / {  
  2.   include uwsgi_params  
  3.   uwsgi_pass 127.0.0.1:9090  

这就是把所有url传给9090端口的uwsgi协议程序来互动。再到project目录建立myapp.py,使得application调用框架的wsgi接口,比如web.py就是:

 
 
  1. ......  
  2. app = web.application(urls, globals())  
  3. appapplication = app.wsgifunc() 

再比如django就是:

 
 
  1. .......  
  2. from django.core.handlers.wsgi import WSGIHandler  
  3. application = WSGIHandler() 

然后运行uwsgi监听9090,其中-w后跟模块名,也就是刚才配置的myapp

 
 
  1. uwsgi -s :9090 -w myapp 

运行网站发现已经部署完成了。


也就是  

  1. 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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值