我想在Gandi Python实例(Simple Hosting)上运行几个Django网站。 根据我在他们的维基(here和here)上的理解,我只有一个虚拟主机和一个可用于所有域的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网站部署的新手,感谢您的帮助!
答案 0 :(得分:1)
根据他们的Python文档:
" Python实例每个实例仅支持一个应用程序"
因此,您只有一个分支,其中包含您要托管的所有网站。然后,当您尝试在上面的代码中执行操作时,根据HOST请求标头路由wsgi.py中的流量。
这对您尝试做的事情有很大的不利影响,即如果您需要更新一个网站,则必须重新部署基于所有网站的整个代码。对于每个站点,您可能最好使用单独的实例。
socket.gethostname()< - 这是错误的使用方法。这将获取运行Python的服务器的主机名。您需要从请求中获取HTTP HOST标头。
https://docs.djangoproject.com/en/1.11/ref/request-response/