我创建了一个web.py应用程序,现在它已准备好部署,我想运行在不在web.py的内置web服务器上。我希望能够在不同的webservers,Apache或IIS上运行它,而不必更改我的应用程序代码。如果我理解正确,这就是WSGI应该进入的地方。
但是,我不明白为了让我的应用程序可以在WSGI服务器上部署,我必须做些什么?大多数例子假设你使用的是Pylons/Django/other-framework,你只需运行一些魔术命令来修复所有的东西。
从我所了解的(非常简短的)web.py文档,而不是运行web.application(...).run()
,我应该使用web.application(...).wsgifunc()
。然后什么?使用WSGI部署一个Web.py应用程序,几台服务器
回答
准确地说,您需要做什么来托管它与特定的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
反之,如果你不必使用FASTCGI,SCGI或AJP适配器的服务器,如lighttpd的,Nginx的或切诺基,那么你需要使用“flup”包在这些语言不可知的接口和WSGI之间提供一个桥梁。这涉及使用相同的WSGI应用程序对象调用flup函数,而不需要使用桥接器,而不需要类似mod_wsgi或Phusion Passenger那样的东西。对于这个显示的细节:
http://trac.saddi.com/flup/wiki/FlupServers
重要的是构建Web应用程序,以便它在其自身包含的模块集。要使用特定的服务器,请根据需要创建单独的脚本文件,以在该服务器所需的内容和应用程序代码之间建立桥梁。您的应用程序代码应始终位于Web服务器文档目录之外,并且只有充当桥接的脚本文件才会在服务器文档目录中(如果适用)。
截至2009年7月21日,有在the webpy install site一个更全面的安装指南中,讨论flup,FastCGI的,阿帕奇多。我还没有尝试它,但它似乎更详细。
下面是使用CherryPy的WSGI服务器的两个托管应用程序的一个例子:
#!/usr/bin/python from web import wsgiserver import web # webpy wsgi app urls = ( '/test.*', 'index' ) class index: def GET(self): web.header("content-type", "text/html") return "Hello, world1!" application = web.application(urls, globals(), autoreload=False).wsgifunc() # generic wsgi app def my_blog_app(environ, start_response): status = '200 OK' response_headers = [('Content-type','text/plain')] start_response(status, response_headers) return ['Hello world! - blog\n'] """ # single hosted app server = wsgiserver.CherryPyWSGIServer( ('0.0.0.0', 8070), application, server_name='www.cherrypy.example') """ # multiple hosted apps with WSGIPathInfoDispatcher d = wsgiserver.WSGIPathInfoDispatcher({'/test': application, '/blog': my_blog_app}) server = wsgiserver.CherryPyWSGIServer(('0.0.0.0', 8070), d) server.start()
- 1. 部署多个web应用程序在同一台服务器
- 2. 将应用程序Insights位部署到另一台服务器
- 3. 如何使用uwsgi部署两个web.py应用程序?
- 4. 在mod_python上部署WSGI应用程序
- 5. 在多台服务器上部署Ruby on Rails应用程序
- 6. 如何在一台服务器上设置多个WSGI应用程序?
- 7. 使用git在远程服务器上部署应用程序
- 8. 致命错误:将zend应用程序一台服务器部署到另一台服务器
- 9. 将应用程序服务器部署到服务器
- 10. 使用MSDeploy将控制台应用程序部署到DMZ服务器
- 11. WSO2应用服务器 - REST服务,部署为应用程序或服务?
- 12. 如何使用webpack dev服务器部署Webpack应用程序?
- 13. 部署Web应用程序到Tomcat服务器使用Maven
- 14. 如何使用capistrano将多个应用程序部署到同一服务器?
- 15. 在WSo2上部署多个WebService应用程序应用程序服务器
- 16. WCF服务应用程序部署
- 17. 部署Silverlight RIA服务应用程序
- 18. 如何在同一台服务器上多次部署asp.net web应用程序?
- 19. 在同一台服务器上部署ASP.net Ajax 1.0和3.5 Web应用程序
- 20. 在apache2上使用wsgi部署Flask应用程序时出错
- 21. Capistrano一次部署一台服务器
- 22. 将ClickOnce应用程序部署到多个服务器
- 23. 在一个活着的服务器上部署一个java EE应用程序
- 24. 如何部署并将实体服务器作为控制台应用程序进行部署并使用topops
- 25. 如何使任何服务器可配置WSGI应用程序?
- 26. 在同一台服务器上的几个java web应用程序
- 27. 部署japplet客户端服务器应用程序到外部服务器
- 28. VS,跨几个Windows服务器部署c#控制台应用程序的快速方法
- 29. Azure Cloud Service主机内部部署应用程序服务器
- 30. 部署到另一台服务器
好了,所以有做它没有一般的方式。可怜。我只需要写一堆适配器。 无论如何,谢谢! – carlpett 2009-07-06 13:25:52