Gandi Python实例:如何使用git和wsgi运行多个网站

时间:2017-06-27 21:39:33

标签: django git web-hosting wsgi

我想在Gandi Python实例(Simple Hosting)上运行几个Django网站。 根据我在他们的维基(herehere)上的理解,我只有一个虚拟主机和一个可用于所有域的git存储库。

当被问到时,Gandi的支持告诉我,要使用git部署我的网站,我可以为每个网站使用分支并使用命令$ ssh {login}@git.{datacenter_location}.gpaas.net 'deploy default.git [ {a_branch} ]'。 我真的不认为这是使用分支机构的正确方法...... 有没有更好的办法 ?如果没有,我必须在我的本地站点上创建一个仓库,并为每个站点创建一个分支? 编辑:非常感谢Sayse的评论,我知道如果我只有一个回购,我就无法在多个网站上使用git。现在是wsgi部分:

然后根据域名将wsgi.py放在我的vhost根目录下以root到正确的站点?也许是这样的? :

import sys
import socket
import os.path
from django.core.wsgi import get_wsgi_application

current host = socket.gethostname()

if current_host == "www.site_1.com":
    sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__),'site_1/site_1')))
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "site_1.settings")
elif current_host == "www.site_2.com":
    sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__),'site_2/site_2')))
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "site_2.settings")

application = get_wsgi_application()

我是python网站部署的新手,感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

根据他们的Python文档:

" Python实例每个实例仅支持一个应用程序"

因此,您只有一个分支,其中包含您要托管的所有网站。然后,当您尝试在上面的代码中执行操作时,根据HOST请求标头路由wsgi.py中的流量。

这对您尝试做的事情有很大的不利影响,即如果您需要更新一个网站,则必须重新部署基于所有网站的整个代码。对于每个站点,您可能最好使用单独的实例。

socket.gethostname()< - 这是错误的使用方法。这将获取运行Python的服务器的主机名。您需要从请求中获取HTTP HOST标头。

https://docs.djangoproject.com/en/1.11/ref/request-response/