Ich bin ziemlich stolz auf mein Setup und es funktioniert sehr gut für mein Team.
Allgemeine Struktur
Ich halte die gesamte Installation unter Kontrolle. Alle Änderungen, sei es ein System-Update, das Hinzufügen / Aktualisieren eines Plugins, das Hinzufügen / Aktualisieren eines Themas, durchlaufen denselben Workflow. Änderungen können jederzeit rückgängig gemacht werden. Ich besitze einen Bereitstellungsserver (einen alten P4-Desktop), auf dem Gitosis ausgeführt wird, aber Sie können auch Github oder Gitolite verwenden . In Git habe ich zwei "spezielle" Zweige master
und develop
(weiter unten näher erläutert). Meine Produktions- und Staging-Server sind cloudbasiert.
Entwicklungsumgebungen
Jeder Entwickler betreibt seinen eigenen Entwicklungsserver auf seinem eigenen Computer. In Bezug auf Datenbanken war der Bedarf an Live-Daten selten ein Thema. Wir verwenden hauptsächlich die Testdaten der Themeneinheiten . Ansonsten deckt Export und Import die meisten Dinge ab. Wenn das DB-Teil von entscheidender Bedeutung ist, können Sie die Replikation oder etwas für die On-Demand-Synchronisierung einrichten. Als ich diese Struktur zum ersten Mal einrichtete , dachte ich, dass dies von entscheidender Bedeutung sein würde, und fing an, eine Reihe von Tools zu schreiben , um dies zu tun, aber zu meiner Überraschung waren sie wirklich nicht notwendig. (Anmerkung: da sie nicht notwendig waren, habe ich sie nie aufpoliert, daher gibt es Fehler, z. B. wird die Domain in serialisierten Daten ersetzt).
Staging-Umgebung
Wenn Commits von der develop
Zweigstelle an Gitosis weitergeleitet werden, werden sie automatisch auf unserem Staging-Server bereitgestellt. Die Staging-Datenbank ist ein Slave für die Produktionsdatenbank.
Produktionsumfeld
Wenn Commits in der master
Filiale an gitosis gesendet werden , werden sie automatisch auf dem Produktionsserver bereitgestellt.
Das Problem mit wp-config.php
Sie möchten wp-config.php
von Server zu Server eindeutig sein, aber auch die Versionskontrolle behalten. Meine Lösung bestand darin , die Staging- und Produktionsversionen .gitignore
zu ignorieren wp-config.php
und als Dateien mit unterschiedlichen Namen zu speichern. Dann symlinke ich auf jedem Server zB wp-config.php -> wp-config-production.php
. Jeder Benutzer behält dann seine eigene Datenbank mit seinen eigenen Anmeldeinformationen und seinen eigenen (nicht verfolgten) wp-config.php-Einstellungen.
Weitere Hinweise
Ich benutze Rackspace Cloud , was phänomenal und kostengünstig ist. Damit kann ich meine Staging- und Produktionsserver identisch halten. Ich schreibe gerade auch Plugins, die ihre API verwenden, um meine Dienste direkt aus WordPress heraus zu steuern. Es ist wunderbar.
Cache-Verzeichnisse, Verzeichnisse zum Hochladen von Dateien usw. werden zu .gitignore hinzugefügt. Wenn Sie wollten, könnten Sie eine Cron-Task einrichten, um Uploads routinemäßig einzuchecken und zur Gitosis zu verschieben, aber das schien mir nie notwendig zu sein.
Die Master / Develop-Struktur soll das Verzweigungsmodell von Vincent Driessen teilweise imitieren . Ich benutze auch seine Git-Erweiterung Git-Flow und ich würde das auch sehr empfehlen.
Ich habe ungefähr 10 Entwickler, die seit über einem Jahr an dieser Struktur arbeiten, und es war ein Traum, mit ihr zu arbeiten. Zuverlässig, sicher, schnell, funktional und agil - mehr kann man nicht verlangen!