Walk by faith code, hack, curious

mod_wsgi

什么是mod_wsgi?
mod_wsgi的目的就是能够利用apache的module特性来实现托管那些支持Python WSGI接口的python应用程序.这个module完全能够承担线上正式网站的托管.还有
自己管理的私人网站.

运行机制:

当使用mod_wsgi来托管一个Wsgi应用的时候.其中一个主要的运行机制能够被使用.
那就是’嵌入式’,mod_wsgi和mod_python采用同样简单的方式来运行.就是在一个
普通的Apache的子进程的上下文中运行.Wsgi在这个模式下,会和这个apache下其他的应用,
比如基于php或者perl的module的应用来共享同一个进程.

另外一种模式就是Apache2.X在Unix上的’deamon’模式.这个模式的运行和fastcgi/scgi的运行机制是一样的.利用单一进程来运行wsgi应用.取保于fastcgi/scgi的是,并不是一个单独的进程或者wsgi适配器来管理这个wsgi应用.
所有的事情都是完全由mod_wsgi来自动管理的.

因为如果wsgi应用是选择了deamon模式的话,它完全是运行在自己的进程中的.这个和普通的那些服务于静态文件或者php程序或perl程序的进程来说,从数量来说就减少了很多.
(Daemon processes may if required also be run as a distinct user ensuring that WSGI applications cannot interfere with each other or access information they shouldn’t be able to.)
注意的是尽管mod_wsgi和fastcgi/scgi有点类似的功能.并不意味着完全只是替换来运行python的应用.强调的是,mod_wsgi不是给那些在一个apache的实例下超载的虚拟空间主机配置设计的,
如果说上面的那种情况,我感觉fastcgi更加适合.

服务性能:

mod_wsgi模块完全使用c语言实现,直接和apache还有python 应用接口打交道.以至于,在现有的情况下,在很小的内存下性能完爆mod_python,或者 FASTCGI/SCGI/CGI或者基于一些代理的解决方案.
尽管嵌入式能够更加性能突出,但是daemon模式是最安全的方式.为什么呢.因为除了嵌入式外,要想获得更多的性能提升,必须打开apache的MPM设定,而这个设定完全是为了服务静态资源和php应用而设定的.如果说MPM设定对于托管的应用来说不合适,这个时候的性能简直无法接受.

另外,不要总是致力于apache的配置上,对于一个大型的程序来说,别总想着到底使用那种模式更加爽,还是应该多关注一下自己的代码或者数据库访问.

支持的应用:

基于wsgi接口的应用都支持.很多的python web开发框架都支持wsgi接口.
Major Python web frameworks and toolkits which are known to work include CherryPy, Django, Pylons, TurboGears, Pyramid, web.py, Werkzeug, Web2Py and Zope. Major Python web applications which are known to work include MoinMoin, PyBlosxom and Trac.

 

哪里能够得到帮助:

1,先读文档

  1. 安装文档
  2. 开发指导
  3. 文档目录

2,Hello world例子

 

to be continued.

translated from : [http://code.google.com/p/modwsgi/wiki]