Eine WordPress-Installation in weniger als 5 Minuten migrieren

Ich arbeiten an WordPress Projekten immer lokal. Bei vielen Projekten gibt es zusätzlich einen Staging-Server. Die Migration einer WordPress-Installation ist also eine sehr häufig vorkommende Aufgabe für mich. Daher ist ein guter Prozess hier sehr wichtig.

Einfache Migration ohne Plugins

Wenn ich eine Seite migriere, dann verwende ich immer die WP-CLI. Die einzige Voraussetzung hierfür ist ein SSH-Zugang zum Zielserver. Mein Migrationsprozess unterteilt sich in wenige Schritte:

1. Dump der Quelldatenbank

Eine WordPress-Installation besteht aus zwei Teilen, der Datenbank und dem Dateisystem. Um einen Dump der Datenbank zu erstellen, muss nur der folgende Befehl im Hauptverzeichnis von WordPress (dem „document root“) ausgeführt werden:

wp db export
Success: Exported to 'wp_project-staging-2020-04-05-a2aa75c.sql'.

Der Dateiname startet mit dem Namen der Datenbank, gefolgt vom aktuellen Datum und einem zufälligen hexadezimalen Hash. Das ist sehr praktisch für den zweiten Schritt.

2. Packen aller Dateien auf der Quelle

Jetzt sind wir soweit, alle Dateien auf dem Quellserver zu packen. Das erledigen wir einfach mit zip, gzip oder einem anderen Tool:

zip -r wp_project-staging-2020-04-05-a2aa75c.zip .

Als Dateinamen verwenden wir einfach den gleich Namen wie beim Datenbank-Dump und ändern hierbei lediglich die Dateiendung von .sql zu .zip im Befehl. Das „schützt“ den Dateinamen davor, einfach erraten werden zu können. Wenn man die Datei einfach nur dump.zip nennen würde, könnte sonst jeder einfach die Datei runterladen.

3. Übertragung der Datei auf den neuen Server

Jetzt ist es an der Zeit, die Datei auf den neuen Server zu übertragen. Das kann man über verschiedene Wege tun. Ein sehr einfacher ist die Verwendung von curl, wget oder ähnlichem:

wget https://staging.example.com/wp_project-staging-2020-04-05-a2aa75c.zip

Wenn man die Dateien von einem lokalen System überträgt, wird man vermutlich FTP verwenden, da man die Datei ja nicht per curl/wget von einer lokalen Domain laden kann.

4. Entpacken der Datei im Ziel

Der nächste Schritt ist sehr nahe liegend. Wir müssen die Datei im Ziel entpacken. Hat man eine ZIP-Datei verwendet, führt man einfach folgenden Befehl aus:

unzip wp_project-staging-2020-04-05-a2aa75c.zip

Wenn man die Dateien in Schritt 2 im Hautpverzeichnis gepackt hat, dann sollten die Dateien auch wieder im Hauptverzeichnis auf dem neuen Server einpackt werden und nicht in einem Unterordner.

5. Aktualisierung der Konfiguration

Bevor wir das Projekt auf dem neuen Server nutzen können, müssen wir die wp-config.php aktualisieren. Vermutlich nur alle Werte, die mit DB_ anfangen.

6. Import der Datenbank

Nun können wir die Datenbank importieren. Wenn die Datenbank auf dem neuen Server noch nicht existiert, kann sie entweder über das Verwaltungsprogramm der Hosters angelegt werden, oder ebenfalls mit einem einfachen WP-CLI Befehl (sofern der Datenbank-User dazu die Berechtigungen hat):

wp db create

Sobald die Datenkbank erstellt ist, können wir den Dump ähnlich zu Schritt 1 importieren:

wp db import wp_project-staging-2020-04-05-a2aa75c.sql

7. Aktualisierung der Domain in der Datenbank

Wie ihr vermutlich wisst, speichert WordPress alle Domainpfade als absolute Pfade in der Datenbank. Daher müssen diese ersetzt werden. Das funktioniert mit einem Plugin, aber noch einfacher über die WP-CLI:

wp search-replace "https://staging.example.com" "https://example.com"

Dies ist die einfachste Ersetzung. In manchen Fällen müssen aber noch andere Ersetzungen durchgeführt werden. Das werde ich in einem zukünftigen Beitrag behandeln.

Fazit

Die Migration eines WordPress-Projekts sollte so einfach und schnell wie möglich sein, gerade dann, wenn man diese Aufgabe sehr regelmäßig erledigt. Mein Ansatz benötigt nur 2 Befehle auf dem Quellserver und 4-5 auf dem Zielserver. Der Teil, der in der Regel die meiste Zeit benötigt, ist das Packen, Übertragen und Entpacken, welches länger dauert, je größer das Projekt ist. Für ein kleines Projekt mit nur wenigen Inhalten dauert es aber jeweils oft weniger als 10 Sekunden.

Ich hoffe, diese kleine Anleitung konnte euch helfen, damit eure nächste Migration genau so schnell und einfach geschieht wie bei mir. Falls ihr einen anderen Ansatz habt, der auch sehr praktisch ist, hinterlasst gerne einen Kommentar hierzu und stellt ihn vor.

Veröffentlicht von

Bernhard ist fest angestellter Webentwickler, entwickelt in seiner Freizeit Plugins, schreibt in seinem Blog über WordPress und andere Themen, treibt sich gerne bei den WP Meetups in Berlin und Potsdam herum und läuft nach Feierabend den ein oder anderen Halbmarathon.

2 Kommentare » Schreibe einen Kommentar

  1. Vielen Dank für die Erläuterungen, das erspart einem doch einige Schritte, wenn man sowieso per SSH auf dem Server arbeitet!
    Falls es übrigens bei „wp db export“ zu einer Fehlermeldung kommen sollte bzgl. fehlender Berechtigungen des DB-Users beim Dump der Tablespaces hilft ggf die mysqldump-Option „–no-tablespaces“: wp db export –no-tablespaces=true

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert