Website-Betreuer, die WordPress Multisite einsetzen, um alle Ihre Kunden-Sites zentral zu verwalten, werden die folgende Herausforderung kennen: Ist wieder einmal ein umfangreicher Update von Plugins, Übersetzungen und dem WordPress-Core selbst fällig, sollte dies nicht riskant auf der Live-Umgebung geschehen. Viel besser sollten solche Updates in einer Staging-Umgebung vorab getestet und erst im Erfolgsfall in der Live-Umgebung ein zweites Mal durchgeführt werden.
Die Aufgabenstellung
Sinnvoll ist diese Aufgabe nur zu bewältigen, wenn die Staging-Umgebung für die „Generalprobe“ ein identes Abbild der Live-Umgebung darstellt. Deshalb lautet die Aufgabenstellung: Wie kann das Live-System effizient in das Staging-System übertragen werden?
Der Lösungsansatz
In einigen unserer Projekte setzen wir ebenfalls WordPress Multisite-Installationen ein. Für die Sicherung und Verwaltung aller unserer WordPress-Sites insgesamt setzen wir Infinite WordPress in der Freelancer-Variante ein. Erfreulicherweise ist in dieser Variante das Addon Staging enthalten, welches elegant für das Auskoppeln einer Live-Site in eine Staging-Site ermöglicht. Jedoch wollen wir eine Multisite-Installation „stagen“, obwohl der Support von Infinite WordPress informiert, dass Multisites vom Addon Staging noch nicht vollständig unterstützt wird.
Wir haben es trotzdem ausprobiert: Und es funktioniert doch, auch wenn ein paar kleine manuelle Schritte erforderlich sind.
Die Durchführung – Staging erzeugen
Unter https://support.infinitewp.com/support/solutions/articles/219498-staging-addon ist eine detaillierte Anleitung zu finden, wie mit dem Staging Addon die Staging-Umgebung angelegt wird. Dort haben wir die letzte von drei möglichen Varianten angewendet, nämlich Create staging site on a different FTP server, weil wir für unsere Multisite-Installation völlig getrennte Webspaces für Live- und Staging-Umgebung verwenden. D.h. wir haben sinngemäß folgende Sites:
Site-ID | Live-Umgebung | Staging-Umgebung |
1 | domain1.com (primary Domain) | test-domain1.com (primary Domain) |
2 | domain2.com | test-domain2.com |
3 | domain3.com | test-domain3.com |
Nach erfolgreicher Durchführung von Create staging site wurde der gesamte Webspace von der Live- in die Staging-Umgebung übertragen. Auch die Datenbank wurde erfolgreich in das Staging-System 1:1 übertragen. Wird nun im Staging System z.B. test-domain1.com aufgerufen, führt dies zu einem Browser-Fehler. Weder das Frontend noch das Backend sind erreichbar. Deshalb müssen noch die folgenden 2 Schritte durchgeführt werden.
Die Durchführung – Schritt 1
Die „primary domain“ in der wp_config.php muss an die Staging-URL angepasst werden. Dazu den Eintrag DOMAIN_CURRENT_SITE ändert wie folgt (roten Text hinzufügen):
define('DOMAIN_CURRENT_SITE', 'test-domain1.com')
Die Durchführung – Schritt 2
Abschließend müssen noch alle weiteren URLs an die Staging-Umgebung angepasst werden. Dazu werden die folgenden Tabellen (via phpMyAdmin) geändert (rote Texte hinzufügen, es sind nur relevante Felder der Tabelle dargestellt):
Tabelle „wp_blogs“
blog_id | domain |
1 | test-domain1.com |
2 | test-domain2.com |
3 | test-domain3.com |
Und für jede Sub-Domain muss die entsprechende „options“-Tabelle angepasst werden. D.h. in unserem Beispiel müssen 3 Tabellen analog geändert werden wie folgt:
Tabellen „wp_1_options“, „wp_2_options“ und „wp_3_options“
option_id | option_name | option_value |
1 | siteurl | http://test-domain1.com |
2 | home | http://test-domain1.com |
Fertig
Das war es auch schon, alle Domains der Staging-Umgebung funktionieren nun. Wie man sieht, funktioniert das Clonen von der Live- in die Staging-Umgebung mit Infinite WordPress auch für Multisites, selbst wenn ein paar wenige manuelle Änderungen direkt in der Datenbank notwendig sind. Und für alle weiteren Abgleiche „Live->Staging“ muss im IWP-Panel dann lediglich der Button „Copy live to staging“ geklickt werden. Allerdings müssen dann immer auch die oben in Schritt 1 und Schritt 2 beschriebenen Änderungen durchgeführt werden.
Conclusio: Jeder Abgleich von der Live- in die Staging-Umgebung ist via Infinite WordPress dann in jeweils nur wenigen Minuten durchführbar. Verglichen mit anderen Methoden ist das eine recht mächtige Zeitersparnis!
Ist doch cool, oder?
LG,
Albert