我有一个运行Python Bottle应用程序的网站(在Amazon EC2 Instance中运行),其中CherryPy作为其前端Web服务器。
现在我需要添加另一个已经注册了不同域名的网站。为了降低成本,我想利用现有的网站主机来做到这一点。
显然,虚拟主机是解决方案。
我知道Apache mod_wsgi可以发挥作用。但我不想取代CherryPy。
我已经搜索了很多内容,有一些文章展示了如何在CherryPy上制作虚拟主机,但他们都假设Cherrypy是Web Sever + Web应用程序,而不是CherrPy作为Web服务器和Bottle作为应用程序。
如何使用CherrPy作为Web服务器和Bottle作为应用程序来支持多个虚拟主机?
答案 0 :(得分:1)
正如您所提到的,请使用VirtualHost。在示例中使用cherrypy.Application
实例,但任何WSGI可调用(例如Bottle应用程序)都可以。
答案 1 :(得分:0)
也许您可以简单地将nginx作为反向代理并将其配置为将流量发送到右上游的两个域(cherryPy webserver)。
答案 2 :(得分:0)
另一个想法是使用Nginx(http://wiki.nginx.org/Main)和uWsgi(http://projects.unbit.it/uwsgi/)& (uWsgi-python)插件
uWsgi有一个名为emperor的模块,你可以链接vhosts(vassals),等等。
我自己就是这个新手,所以不一定是答案,而是建议检查出来。 根据您的Linux发行版,uWsgi和Nginx可能很难让它运行起来。与瓶子配合使用,自己测试。 希望它有所帮助
答案 3 :(得分:0)
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()
您可以将www.domain1.com和www.domain1.com指向您服务器的一个IP地址,因此它在一个Web服务器中为2个域提供服务。