我为20个不同的国家/地区创建了一个包含20个站点(每个站点一个不同的域)的Django项目。这些网站共享一切:代码库,数据库,网址,模板等。
他们唯一不共享的是我在每个网站设置文件中设置的小型自定义(徽标,CSS主题的背景颜色,语言代码等)(每个网站都有一个设置文件,所有这些文件导入一个全局设置文件与常见的东西)。现在,为了在开发模式下运行网站,我会这样做:
django-admin.py runserver 8000 --settings=config.site_settings.site1
django-admin.py runserver 8001 --settings=config.site_settings.site2
...
django-admin.py runserver 8020 --settings=config.site_settings.site20
我有几个问题:
谢谢!
答案 0 :(得分:7)
所以,我最近做了类似的事情,发现下面的策略是最好的选择。我将假设你现在熟悉git分支,以及Heroku遥控器。如果不是,请先阅读:https://devcenter.heroku.com/articles/git#multiple-remotes-and-environments
我正在采取的主要策略是使用单个代码库(单个Git仓库):
master
分支:模板,视图,网址。site
的许多master
分支,其中包含所有特定于站点的自定义项:css,图像,设置文件(如果它们有很大差异)。这种方式是这样的:
首先,请确保您在master
分支上。
其次,为您的某个域创建一个新的git分支,例如:git checkout -b somedomain.com
。
第三,自定义您的somedomain.com
分支,使其看起来像您想要的那样。
接下来,通过运行somedomain.com
将<{1}}实时部署到Heroku。
现在,将您的heroku create somedomain.com --remote somedomain.com
分支代码推送到新的Heroku应用程序:somedomain.com
。这将在Heroku上部署您的代码。
现在您已经使用自己的Heroku应用程序部署了git push somedomain.com somedomain.com:master
分支,您可以通过将somedomain.com
添加到正常的Heroku命令来完成所有正常的Heroku事务,例如:
--remote somedomain.com
heroku pg:info --remote somedomain.com
所以,现在你基本上有两个分支:一个heroku addons:add memcache:5mb --remote somedomain.com
分支和一个master
分支。
返回您的somedomain.com
分支,为您的下一个域创建另一个新分支:master
。然后根据自己的喜好自定义它(css,特定于站点的东西),并按照我们上面的方式进行部署。
现在我确定你现在可以看到它的发展方向。我们为每个自定义git checkout master; git checkout -b anotherdomain.com
设置了一个git分支,每个域都有自己的Heroku应用。 (显然)的好处是每个项目自定义都基于domains
分支,这意味着您可以轻松地立即更新所有站点。
假设您更新了master
分支中的一个视图 - 如何将其一次性部署到所有您的自定义网站?容易!
跑步:
master
git checkout somedomain.com
git merge master
#deploy更改并重复每个域名。在我的环境中,我编写了一个执行此操作的脚本,但如果您愿意,可以手动完成。
无论如何,希望这会有所帮助。