Daher muss ich in der Lage sein, Entwicklungs- / Bühnen- / Produktionsiterationen (über separate Server) für eine WordPress-Website zu haben. Ich verwende normalerweise Git, aber dies funktioniert offensichtlich nicht mit WordPress-Sites, da die Hauptdatenbank verwendet wird Konfiguration von ... na ja, fast alles.
Meine Frage ist also, wie macht ihr das? Ich hatte ein schnelles Google und sah, dass es ein paar Plugins gab. Ist dies der einzige Weg? Welche machen den Job am besten in Bezug auf Benutzerfreundlichkeit, Geschwindigkeit, Zuverlässigkeit, Benutzeroberfläche usw.?
svn
version-control
staging
deployment
Rob Vermeer
quelle
quelle
Antworten:
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
unddevelop
(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 ignorierenwp-config.php
und als Dateien mit unterschiedlichen Namen zu speichern. Dann symlinke ich auf jedem Server zBwp-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!
quelle
Zuerst denke ich, es ist wichtig zu überlegen, was Sie zur Versionskontrolle bringen. Ich würde empfehlen , gegen das gesamte WP - Verzeichnis unter VC setzen. Ich denke, es ist am sinnvollsten, wp-content / themes / YourThemeName unter VC zu setzen. Bei einer großen Site mit einer großen Anzahl komplexer Plugins könnte es durchaus vorkommen, dass auch wp-content / plugins einbezogen werden. Wenn Sie unbedingt müssten, könnten Sie wp-Inhalte / Uploads einbinden. Die folgenden Antworten ändern sich ein wenig, je nachdem, welche Versionskontrolle Sie durchführen.
Vor diesem Hintergrund verwende ich Folgendes:
Lokal: Richten Sie einen LAMP-Stack auf Ihrem Computer ein. Verwenden Sie dieselbe URL wie Ihre Entwicklungssite. Verwenden Sie VirtualHosts- und .host-Dateieinträge, um die Entwicklungsumgebung aus URL-Sicht zu simulieren. Wenn Sie gerade Ihr Thema VC'ing, erwägen Sie die Verwendung von SSHFS zum Verknüpfen von wp-Inhalten / Plugins, wp-Inhalten / Uploads. Ziehen Sie in Betracht, die Datenbank für Ihre Entwicklungsinstallation des Projekts zu verwenden, es sei denn, Sie tun wirklich etwas Schweres.
Entwicklung: Checke eine Arbeitskopie deines Repos in deine WP-Umgebung. Richten Sie in SVN einen POST-COMMIT-Hook ein, um dieses Repo bei jedem Commit zu aktualisieren. Dadurch wird die Synchronisierung aufrechterhalten. (Betrachten Sie es als kontinuierliche Integration eines armen Mannes.)
Produktion: Schauen Sie sich ein benanntes Versions-Tag an, das einen endgültigen Kandidaten darstellt. Wenn Sie eine neue Version benötigen, wechseln Sie das Tag und aktualisieren Sie das Repo.
quelle
Wir haben kürzlich RAMP entdeckt . Hinweis: Dies ist nur ein Teil des gesamten Prozesses, aber das Synchronisieren von Inhaltsdatenbanken zwischen Servern ist wahrscheinlich der schwierigste Teil.
quelle
Ich mache das mit git und mercurial, stelle nur sicher, dass du ein privates Repo verwendest.
Option 1.
Das einzige Problem ist die config.php, die Sie git per Push oder vor init mitteilen können.
Verwenden Sie
.gitignore
odergit update-index --assume-unchanged config.php
(lesen Sie etwas über den angenommenen, unveränderten Befehl, bevor Sie ihn verwenden)Optionen 2.
Verwenden Sie in der config.php eine Bedingung, die die URL überprüft und die korrekten Anmeldeinformationen anwendet, wie unter "Wenn Server-URL = dev, dann Anmeldeinformationen A verwenden, andernfalls Anmeldeinformationen B verwenden" beschrieben.
Mark erklärt das besser, http://markjaquith.wordpress.com/2011/06/24/wordpress-local-dev-tips/
ps. Sie können die Dateien auch direkt von einem Remote-Repository aus speichern, anstatt über einen herkömmlichen "Dateiserver" zu verfügen. (Wirklich langweiliges Video, das ich über diese http://www.youtube.com/watch?v=8ZEiFi4thDI gemacht habe )
quelle