我創建了一個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