2012-09-04 1 views
0

Gevent 's pywsgi 서버 내에 하나 이상의 사이트를 호스팅 할 수 있습니까? 나는 bottlepy 및 gevent pywsgi 서버가있는 머신을 가지고 있으며 두 번째 사이트를 설정하는 방법에 대해 궁금합니다. 내가 생각할 수있는 유일한 방법은 프론트 엔드로 nginx를 사용하고 다른 내부 포트에서 각 gevent 서버/사이트를 실행하는 것입니다. 이것이 실제로이 문제에 접근하는 가장 좋은 방법입니까?PyWSGI (Gevent) 가상 호스트

답변

2

가상 호스팅은 WSGI 프로토콜의 일부가 아닙니다.

nginx 또는 다른 프런트 엔드 서버를 사용하고 싶지 않으면 몇 가지 기본 wsgi 응용 프로그램으로 보내지는 기존 wsgi 미들웨어를 작성하거나 사용할 수 있습니다. 이 같은

뭔가 (내가 그것을 테스트하지 않았습니다) : http://discorporate.us/jek/projects/wfront/

그러나 WSGI 서버가 주로 의미는 서버를 프론트 엔드하지, 애플리케이션 서버로 사용할 수 있습니다. nginx, apache, lighttpd 또는 다른 잘 테스트 된 프론트 엔드 서버를 사용하여 작업을 수행하게합니다. 프런트 엔드 서버를 사용하는 몇 가지 이유 :

  • 그들은 SSL을 지원하는 보안
  • 에 대한 요청 무결성을 확인
  • 그들은 일반적으로 더 견고 그들이 위해 여러 WSGI 공정에 부하 분산 장치 역할을 할 수
  • 규모에 맞게
+0

정보를 주셔서 감사합니다, 나는 내 자신의 방법을 쓰는 것을 고려해 왔지만 그것이 결코 nginx와 같은 강력한 것은 아닐 것이라고 생각했습니다. – scape

0

Bottle (As Application)과 함께 CherryPy (WSGI 서버로)에 관심을 갖고 싶다면 잠시 동안 사용 해본 결과 매우 안정적이라고 증명할 수 있습니다.

다음은 여러 개의 가상 호스트에 대한 예입니다.

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()