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