car*_*ett 6 python wsgi web.py
我已经创建了一个web.py应用程序,现在它已经可以部署了,我希望不在web.py的内置Web服务器上运行.我希望能够在不同的Web服务器,Apache或IIS上运行它,而无需更改我的应用程序代码.如果我理解正确的话,这就是WSGI应该进入的地方.
但是,我不明白为了使我的应用程序可以在WSGI服务器上部署,我必须做些什么呢?大多数示例假设您正在使用Pylons/Django/other-framework,您只需运行一些魔法命令即可修复所有内容.
根据我对(非常简短的)web.py文档的理解,而不是运行web.application(...).run(),我应该使用web.application(...).wsgifunc().然后什么?
使用特定的WSGI托管机制托管它所需的确切内容因服务器而异.
对于Apache/mod_wsgi和Phusion Passenger的情况,您只需要提供一个WSGI脚本文件,其中包含一个名为"application"的对象.对于web.py 0.2,这是使用适当的参数调用web.wsgifunc()的结果.对于web.py 0.3,您改为使用web.application()返回的对象的wsgifunc()成员函数.有关这些的详细信息,请参阅mod_wsgi文档:
http://code.google.com/p/modwsgi/wiki/IntegrationWithWebPy
如果您不得不为Lighttpd,nginx或Cherokee等服务器使用FASTCGI,SCGI或AJP适配器,那么您需要使用'flup'包来提供这些语言无关接口和WSGI之间的桥梁.这涉及使用上面相同的WSGI应用程序对象调用flup函数,例如mod_wsgi或Phusion Passenger将直接使用而无需桥接.有关详细信息,请参阅:
http://trac.saddi.com/flup/wiki/FlupServers
重要的是构建Web应用程序,使其位于自己的自包含模块集中.要使用特定服务器,请根据需要创建单独的脚本文件,以便在服务器要求和应用程序代码之间建立桥接.您的应用程序代码应始终位于Web服务器文档目录之外,并且只有充当网桥的脚本文件才会在服务器文档目录中(如果适用).