문제

Web.py 애플리케이션을 만들었고 이제 배포 할 준비가되었으므로 Web.py의 내장 된 Webserver에서 실행하고 싶습니다. 응용 프로그램 코드를 변경하지 않고도 다른 웹 서버, Apache 또는 IIS에서 실행할 수 있기를 원합니다. 내가 올바르게 이해한다면 WSGI가 들어올 예정인 곳입니다.
그러나 WSGI 서버에서 응용 프로그램을 배포 할 수 있도록하는 데 있어야하는 일이 무엇인지 이해가 안 돼요? 대부분의 예는 Pylons/Django/Other-Framework를 사용하고 있다고 가정합니다. 여기서 모든 것을 수정하는 Magic Command를 실행합니다.
내가 이해하는 것에서 (아주 간단한) web.py 문서, 실행 대신 web.application(...).run(), 나는 사용해야한다 web.application(...).wsgifunc(). 그 다음엔?

도움이 되었습니까?

해결책

특정 WSGI 호스팅 메커니즘으로 호스팅하기 위해 정확히해야 할 일은 서버에 따라 다릅니다.

Apache/mod_wsgi 및 Phusion 승객의 경우 '응용 프로그램'이라는 개체가 포함 된 WSGI 스크립트 파일 만 제공하면됩니다. web.py 0.2의 경우, 이것은 적절한 인수를 가진 web.wsgifunc ()를 호출 한 결과입니다. web.py 0.3의 경우 대신 wsgifunc () wsgifunc () 멤버 함수를 사용하여 web.application ()에 의해 반환됩니다. 이에 대한 자세한 내용은 mod_wsgi 문서를 참조하십시오.

http://code.google.com/p/modwsgi/wiki/integrationwithwebpy

대신 LightTPD, Nginx 또는 Cherokee와 같은 서버에 FASTCGI, SCGI 또는 AJP 어댑터를 사용해야하는 경우 해당 언어의 비율 인터페이스와 WSGI 사이의 브리지를 제공하기 위해 'flup'패키지를 사용해야합니다. 여기에는 mod_wsgi 또는 Phusion 승객과 같은 것이 다리없이 직접 사용할 수있는 것과 동일한 WSGI 응용 프로그램 개체가있는 FLUP 기능을 호출하는 것이 포함됩니다. 이에 대한 자세한 내용은 다음을 참조하십시오.

http://trac.saddi.com/flup/wiki/flupservers

중요한 것은 웹 애플리케이션이 자체적으로 포함 된 모듈 세트에 있도록 구성하는 것입니다. 특정 서버에서 작업하려면 서버가 요구하는 내용과 응용 프로그램 코드를 브리지를 위해 필요한 별도의 스크립트 파일을 만듭니다. 애플리케이션 코드는 항상 웹 서버 문서 디렉토리 외부에 있어야하며 브리지 역할을하는 스크립트 파일 만 서버 문서 디렉토리에 있어야합니다.

다른 팁

2009 년 7 월 21 일 현재, Webpy 설치 사이트, 그것은 논의합니다 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()
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top