2014-01-14 3 views
2

프론트 엔드 웹 서버로 CherryPy가있는 Python Bottle 응용 프로그램을 실행하는 웹 사이트 (Amazon EC2 인스턴스에서 실행)가 있습니다.CherrPy를 웹 서버로 사용하고 Bottle을 여러 가상 호스트를 지원하는 응용 프로그램으로 사용하는 방법은 무엇입니까?

이제 다른 도메인 이름이 이미 등록 된 다른 웹 사이트를 추가해야합니다. 비용을 줄이기 위해 기존 웹 사이트 호스트를 활용하고 싶습니다.

분명히 가상 호스트가 해결책입니다.

나는 아파치 mod_wsgi가 트릭을 할 수 있다는 것을 알고있다. 하지만 저는 CherryPy를 대체하고 싶지 않습니다.

나는 많은 것을 봤지만 CherryPy에서 가상 호스트를 만드는 방법을 보여주는 기사가 있지만 Cherrypy를 웹 서버 + 웹 응용 프로그램으로 가정하고 CherrPy를 웹 서버로, Bottle을 응용 프로그램으로 가정합니다.

CherrPy를 웹 서버로 사용하고 Bottle을 여러 가상 호스트를 지원하는 응용 프로그램으로 사용하는 방법은 무엇입니까?

답변

1

언급 한대로 VirtualHost을 사용하십시오. 예 cherrypy.Application 예에서 인스턴스가 사용되지만 WSGI 호출 가능 (예 : 병 응용 프로그램)이 수행합니다.

+0

간단한 샘플을 제공해 주시겠습니까? Bootle App은 체리 피가 아니라 직접 사용할 수없는 것 같습니다. 응용 프로그램. – jcyrss

+0

나는 Bottle을 사용한 적이 없으므로, 이것은 테스트되지 않았다. 여러 개의 Bottle 인스턴스가 필요하므로 app1 = Bottle() app2 = Bottle()을 사용하여 만듭니다. 그런 다음 @ app1.route() @ app2.route()를 사용하여 라우트하십시오. 마지막으로 vhost = VirtualHost (None, domains = { 'www.domain2.example': app1, 'www.domain2.example : 443': app2,}) 등등. – jwalker

+0

예, 마침내 제안대로 완료되었습니다. 도와 주셔서 대단히 감사합니다. – jcyrss

0

아마도 nginx를 역방향 프록시로 지정하고 두 도메인의 트래픽을 오른쪽 업스트림 (cherryPy 웹 서버)으로 보내도록 구성 할 수 있습니다.

+0

새로운 모듈을 도입하지 않고 Cherrypy 자체에서 작동하도록했습니다. 어쨌든, 당신의 제안에 감사드립니다. – jcyrss

0

또 다른 아이디어 플러그인

uWsgi 것은 당신이에 가상 호스트 (하인)를 종류의 링크 수있는 모듈 이름이 황제가 uWsgi (http://projects.unbit.it/uwsgi/) & (uWsgi - 파이썬)와 Nginx에 (http://wiki.nginx.org/Main)를 사용하는 것 .

저는이 초보자이기 때문에 꼭 대답 할 필요는 없지만 그것을 확인하는 것이 좋습니다. 당신의 리눅스 배포본에 따라 uWsgi와 Nginx가 작동하게하는 번거 로움이 될 수 있습니다. 병으로 잘 작동하고 직접 테스트합니다. 도움이 되었으면 좋겠다.

+0

제안 해 주셔서 감사합니다.하지만 그 사이트는 오랫동안 사용되어 왔으며 새 모듈을 도입하고이를 테스트하기 위해 더 많은 노력을 기울이고 싶지 않습니다. – jcyrss

0

jwalker의 대답은 꽤 분명하다. CherryPy 초보자가 참조 할 수 있도록 전체 스크립트가 필요한 경우 아래에 하나를 게시합니다.

import cherrypy 
from bottle import Bottle 
import os 


app1 = Bottle() 
app2 = Bottle() 

@app1.route('/') 
def homePage():  
    return "========= home1 ===============" 


@app2.route('/') 
def homePage_2():  
    return "========= home2 ===============" 

vhost = cherrypy._cpwsgi.VirtualHost(None, 
            domains={ 
               'www.domain1.com': app1, 
               'www.domain2.com': app2, 
              } 
            ) 

cherrypy.tree.graft(vhost) 

cherrypy.config.update({ 
         'server.socket_host': '192.168.1.4', 
         'server.socket_port': 80, 
         }) 
cherrypy.engine.start() 
cherrypy.engine.block() 

하나 개의 웹 서버에서이 도메인 들어, 서버의 하나 개의 IP 주소에 이렇게 서버를 www.domain1.com 및 www.domain1.com 지점을 만들 수 있습니다.