我創建了一個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. 在多臺服務器上部署Ruby on Rails應用程序
- 3. 如何在一臺服務器上設置多個WSGI應用程序?
- 4. 致命錯誤:將zend應用程序一臺服務器部署到另一臺服務器
- 5. 部署Web應用程序到Tomcat服務器使用Maven
- 6. 如何使用webpack dev服務器部署Webpack應用程序?
- 7. 如何使用capistrano將多個應用程序部署到同一服務器?
- 8. 在同一臺服務器上部署ASP.net Ajax 1.0和3.5 Web應用程序
- 9. 如何在同一臺服務器上多次部署asp.net web應用程序?
- 10. 部署Silverlight RIA服務應用程序
- 11. 將ClickOnce應用程序部署到多個服務器
- 12. 在一個活着的服務器上部署一個java EE應用程序
- 13. 在同一臺服務器上的幾個java web應用程序
- 14. VS,跨幾個Windows服務器部署c#控制檯應用程序的快速方法
- 15. 使log4j記錄器在部署在同一臺服務器上的多個應用程序中可見
- 16. 部署到另一臺服務器
- 17. 將反應應用程序部署到webpack服務器
- 18. 哪個平臺主要用於生產服務器來開發和部署「應用程序服務」
- 19. 將ASP.NET應用程序部署到遠程服務器
- 20. Eclipse +遠程OC4J服務器 - 部署應用程序
- 21. 如何在另一個應用程序中運行web.py服務器
- 22. 如何在Weblogic應用程序服務器上部署SpringBoot應用程序?
- 23. 什麼是Grails應用程序部署的最佳應用程序服務器?
- 24. 部署兩臺Azure的應用程序服務相同的應用程序服務計劃
- 25. 我們可以在同一個應用程序服務器中部署兩個struts2應用程序嗎?
- 26. 使用Web服務部署Web應用程序後出現「java.lang.NoSuchMethodError」
- 27. 使用ASP.NET Web應用程序部署WCF服務
- 28. 從同一臺機器開發和部署Rails應用程序
- 29. 帶一臺RabbitMQ服務器的多個ServiceStack應用程序
- 30. C#控制檯應用程序部署
好了,所以有做它沒有一般的方式。可憐。我只需要寫一堆適配器。 無論如何,謝謝! – carlpett 2009-07-06 13:25:52