所以,我最近做了類似的事情,發現下面的策略是最好的選擇。我將假設您現在熟悉git分支以及Heroku遙控器。如果你不是,你應該先閱讀:https://devcenter.heroku.com/articles/git#multiple-remotes-and-environments
我走的主要策略是有一個單一的代碼庫(單個混帳回購協議)與:
- 包含所有A
master
分支您的共享代碼:模板,數據視圖,網址。
- 許多
site
根據master
分支,其中包含所有特定於站點的自定義:css,圖像,設置文件(如果它們大不相同)。
這種工作方式是像這樣:
首先,確保你在master
分支。
其次,爲您的某個域創建一個新的git分支,例如:git checkout -b somedomain.com
。
三,自定義您的somedomain.com
分支,使其看起來像你想要的樣子。
接下來,部署somedomain.com
直播到Heroku,運行heroku create somedomain.com --remote somedomain.com
。
現在,將您的somedomain.com
分行代碼推送到您的新Heroku應用程序:git push somedomain.com somedomain.com:master
。這將在Heroku上部署您的代碼。
現在,你有你的somedomain.com
分支機構部署有自己的Heroku應用程序,你可以做一切正常的Heroku的東西加入--remote somedomain.com
到正常的Heroku的命令,如:
heroku pg:info --remote somedomain.com
heroku addons:add memcache:5mb --remote somedomain.com
- 等
所以,現在你已經基本上有兩個分支:一個分支master
,和somedomain.com
分支。
回到你master
分支,再拍新的分支爲您的下一個域:git checkout master; git checkout -b anotherdomain.com
。然後根據你的喜好定製它(CSS,特定於網站的東西),並按照上面的方式進行部署。
現在,我敢肯定,你可以看到這是由現在要去。我們的每個定製domains
都有一個git分支,每個域都有它自己的Heroku應用程序。好處(顯然)爲各項目,這些自定義的基於斷master
分支,這意味着你可以輕鬆地一次進行更新,所有網站。
假設您更新master
分支中的某個視圖 - 您如何將其部署到全部您的自定義網站一次?容易!
只要運行:
git checkout somedomain.com
git merge master
git push somedomain.com somedomain.com:master
#部署更改
,並重復爲每個域。在我的環境中,我寫了一個腳本來做到這一點,但如果你願意的話,手動操作很容易。
總之,希望這有助於。
我在同一個問題尋找最佳的解決方案。 給看看這個:http://www.huyng.com/posts/franchising-running-multiple-sites-from-one-django-codebase/ – 2012-07-10 09:35:40
謝謝您的回答。最後我用https://github.com/wardi/django-dynamicsites-lite – Alex 2012-07-10 21:14:46