Ich habe ein Django-Projekt mit 20 Sites (eine andere Domain pro Site) für 20 verschiedene Länder erstellt. Die Seiten teilen alles: Codebasis, Datenbank, URLs, Vorlagen, etc.
Das einzige, was sie nicht teilen, sind kleine Anpassungen (Logo, Hintergrundfarbe des CSS-Designs, Sprachcode usw.), die ich in jeder der Site-Einstellungsdateien festlege (jede Site hat eine Einstellungsdatei und alle von diesen Dateien importieren Sie eine globale Einstellungsdatei mit dem üblichen Zeug). Um die Seiten im Entwicklungsmodus zu betreiben, mache ich jetzt:
%Vor%Ich habe ein paar Fragen:
Danke!
Ich habe kürzlich etwas Ähnliches gemacht und festgestellt, dass die folgende Strategie die beste Option ist. Ich gehe davon aus, dass Sie an dieser Stelle mit der Verzweigung von Gittern und Heroku-Fernbedienungen vertraut sind. Wenn Sie nicht sind, sollten Sie dies zuerst lesen: Ссылка
Die wichtigste Strategie, die ich mache, ist eine einzige Codebasis (ein einzelnes Git Repo) mit:
master
Zweig, der all Ihren gemeinsamen Code enthält: Vorlagen, Ansichten, URLs. site
-Verzweigungen, basierend auf master
, die alle standortspezifischen Anpassungen enthalten: css, Bilder, Einstellungsdateien (wenn sie sich stark unterscheiden). Das funktioniert so:
Stellen Sie zuerst sicher, dass Sie sich im Zweig master
befinden.
Zweitens, erstelle einen neuen Git-Zweig für eine deiner Domains, zB: git checkout -b somedomain.com
.
Drittens, passen Sie Ihren Zweig somedomain.com
so an, dass er Ihren Vorstellungen entspricht.
Stellen Sie als Nächstes somedomain.com
live auf Heroku bereit, indem Sie heroku create somedomain.com --remote somedomain.com
ausführen.
Drücken Sie nun Ihren somedomain.com
-Verzweigungscode auf Ihre neue Heroku-Anwendung: git push somedomain.com somedomain.com:master
. Dadurch wird dein Code auf Heroku bereitgestellt.
Nachdem Sie nun Ihren Zweig somedomain.com
mit seiner eigenen Heroku-Anwendung bereitgestellt haben, können Sie alle normalen Heroku-Aufgaben erledigen, indem Sie --remote somedomain.com
zu Ihren normalen Heroku-Befehlen hinzufügen, zB:
heroku pg:info --remote somedomain.com
heroku addons:add memcache:5mb --remote somedomain.com
Sie haben also im Grunde zwei Zweige: a master
branch und% somedomain.com
branch.
Gehen Sie zurück zu Ihrem Zweig master
und machen Sie einen weiteren neuen Zweig für Ihre nächste Domäne: git checkout master; git checkout -b anotherdomain.com
. Passen Sie es dann an Ihre Bedürfnisse an (css, site-specific stuff) und stellen Sie es auf die gleiche Weise wie oben beschrieben bereit.
Ich bin mir sicher, dass Sie jetzt sehen können, wohin das geht. Wir haben einen Git-Zweig für jeden unserer benutzerdefinierten domains
und jede Domain hat ihre eigene Heroku-App. Der Vorteil (offensichtlich) ist, dass jede dieser Projektanpassungen auf dem Zweig master
basiert, was bedeutet, dass Sie problemlos alle Sites gleichzeitig aktualisieren können.
Nehmen wir an, Sie aktualisieren eine Ihrer Ansichten in Ihrem master
Zweig - wie können Sie sie auf alle benutzerdefinierten Websites gleichzeitig bereitstellen? Leicht!
Einfach ausführen:
git checkout somedomain.com
git merge master
git push somedomain.com somedomain.com:master
# deploy die Änderungen Und wiederhole es für jede deiner Domains. In meiner Umgebung habe ich ein Skript geschrieben, das das tut, aber es ist einfach genug, wenn man es manuell machen möchte.
Wie auch immer, hoffentlich hilft das.
Tags und Links django heroku django-sites