Wenn man bei einem WordPress einen Serverumzug durchführt und sich dabei euch noch die URL ändert hat man als Ergebnis sehr schnell nur noch eine weiße Seite vor sich oder eingbettete Bilder werden nicht mehr angezeigt. Aber wenn man weiß worauf man achten muss, kann man schnell und einfach eine funktionierende 1:1 Kopie der Seite anlegen, ohne sich auf umständliche Backup Plugins verlassen zu müssen. Folgender Weg hat sich für mich am schnellsten und praktikabelsten herausgestellt.
Vorab solltet ihr natürlich prüfen, ob der Zielserver die entsprechenden Systemvoraussetzungen für WordPress und alle benötigten Plugins bzw. Themes erfüllt! Außerdem benötigt ihr eine neue und leere Datenbank und ein Zielverzeichnis in das ihr die Dateien ablegen könnt und was per URL erreichbar ist.
WordPress Dateien sichern
Nachdem man bei Bedarf das WordPress in den Wartungszustand versetzt hat sichert man zunächst alle Dateien. Dazu kann man entweder den gesamten WordPress Ordner per FTP herunterladen, oder – sofern man Zugriff auf eine Shell hat – ein Archiv erzeugen, was deutlich schneller geht. Angenommen das WordPress liegt auf einem Debian Server im Verzeichnis „/var/www/htdocs/wordpress“, dann erzeugt ihr das Archiv mit dem Befehl:
# cd /var/www/htdocs # tar czf wordpress.tar.gz wordpress
Ist das Archiv fertig erstellt könnt ihr dies per FTP, SCP oder auch per „wget“ auf den Zielserver übertragen. Dort könnt ihr das Archiv mit folgendem Befehl wieder entpacken sofern es wieder in das gleiche Verzeichnis soll:
# cd /var/www/htdocs # tar xf wordpress.tar.gz
Ist das Archiv fertig entpackt findet ihr die Dateien nun wieder unter „/var/www/htdocs/wordpress“ und ihr könnt euren „vhost“ entsprechend konfigurieren bzw. eure Domain auf diesen Ordner legen sofern ihr dies noch nicht getan habt. Achtet darauf, dass die Dateien den für euren Webserver korrekten Benutzer haben. Bei einem Debian Apache2 ist dies meist der Benutzer „www-data“. Mit folgendem Befehl könnt ihr die Dateirechte entsprechend anpassen:
# cd /var/www/htdocs # chown -R www-data:www-data ./wordpress
Ohne die Datenbank wird sich bei dem Aufruf der kopierten Dateien im Browser natürlich noch nicht viel tun.
WordPress Datenbank übertragen
Diesen Schritt könnt ihr auch vornehmen während die Archive ge- bzw. entpackt werden, da dies bei größeren Installationen einige Zeit dauern kann. Die Übertragung der Datenbank kann wieder über mehrere Wege geschehen. Meistens hat man Zugriff auf einen „phpMyAdmin“ und kann hier über die Schaltflächen „Exportieren“ bzw. „Importieren“ die Datenbank übertragen. Natürlich kann man den Export und Import ebenfalls per Shell durchführen, was meine bevorzugte Variante ist, da ich eh auch ein TAR Archiv erstelle. Angenommen die MySQL-Datenbank „wordpressdb“ liegt auf dem „localhost“ mit Zugriff über den „wpuser“, so erzeugt ihr einen Datenbank-Dump mit dem Befehl:
# mysqldump -u wpuser -p wordpressdb > wordpress.sql
Nach der Eingabe wird MySQL euch nach dem zugehörigen Passwort fragen. Danach könnt ihr die Datei „wordpress.sql“ ebenfalls auf den Zielserver übertragen. Mit dem folgenden Befehl könnt ihr den Dump in die neue und leere Datenbank importieren:
# mysql -u neueruser -p neuedb < wordpress.sql
Achtet darauf, dass ihr euch bei der Ausführung des Befehls im gleichen Verzeichnis befindet wie die „wordpress.sql“ Datei. Auch hier werdet ihr wieder nach dem Passwort gefragt.
Als nächstes geht es an die Anpassung der Einstellungen.
WordPress Einstellungen anpassen
Zunächst müsst ihr die Datenbankzugangsdaten anpassen, sofern sich diese geändert haben. Dazu bearbeitet ihr die Datei „wp-config.php“ die ihr im Hauptordner der Installation findet. Dort sucht ihr eine Zeile:
define('DB_NAME', 'wordpressdb');
Den Wert „wordpressdb“ müsst ihr entsprechend dem Beispiel oben ändern in „neuedb“, was eurem neuen Datenbanknamen entspricht. Achtet darauf, dass die umschließenden Anführungszeichen bzw. Hochkommata erhalten bleiben. Analog dazu ändert ihr auch die Einträge „DB_USER“, „DB_PASSWORD“ und „DB_HOST“ weiter unten sofern nötig.
Wenn sich eure URL für das WordPress nicht geändert hat, seid ihr mit dem Umzug fertig und solltet die Seite nun wieder aufrufen und euch anmelden können.
WordPress URL ändern
Sofern sich die Domain ändert müssen noch einige Extraschritte durchgeführt werden, denn dann seht ihr derzeit nur eine weiße Seite. Das liegt daran, dass WordPress die Domain fest in seine Einstellungen schreibt. Damit man die Seite wieder aufrufen kann, muss man diese Einstellungen anpassen. Dazu ruft man im „phpMyAdmin“ oder einem anderen Datenbanktool die Tabelle „wp_options“ auf. Das Präfix „wp_“ kann dabei je nach Installation variieren. In dieser Tabelle sucht man nun die beiden Zeilen mit den Einträgen „siteurl“ und „home“ in der Spalte „option_name“. In der Spalte „option_value“ steht jeweils die alte URL. Hier müsst ihr jeweils den Wert entsprechend auf eure neue URL ändern. Achtet darauf, dass vorne das „http://“ bzw. „https://“ stehen bleiben muss.
Nun könnt ihr die Seite im Browser wieder aufrufen und euch im Backend anmelden. Jedoch ist es möglich, dass einige Bilder nicht korrekt angezeigt werden und ggf. einige Links nicht funktionieren. Auch hier schreibt WordPress leider die URLs komplett in die Datenbank. Eine unschöne Möglichkeit wäre nun alle Beiträge etc. durchzugehen und die Bilder manuell neu zu setzen, aber das geht auch schneller und einfacher. Dazu benötigen wir dann aber doch die Hilfe eines Plugins.
Wir haben gute Erfahrungen mit dem Plugin Search and Replace gemacht. Es dient dazu in der WordPress Datenbank nach Einträgen zu suchen und diese zu ersetzen. Ist das Plugin installiert und aktiviert findet ihr es im Menu unter „Werkzeuge > Suchen & Ersetzen“. in dem Reiter „Suchen & Ersetzen“ gebt ihr in das Feld „Suchen nach“ die alte URL ein. Hier könnt ihr das „http“ bzw. „https“ auch weglassen. In das Feld „Ersetzen durch“ gebt ihr entsprechend die neue URL ein (auch hier das „http“ weglassen wenn ihr es beim Suchbegriff weggelassen habt). Nun den Haken bei „Alle Tabellen auswählen“ setzen. Ihr könnt zunächst einen „Testlauf“ machen und bekommt dann oben die Anzahl an betroffenen Tabellen und Einträgen angezeigt. Sofern Einträge vorliegen, die geändert werden müssen, ist das ein gutes Zeichen und ihr könnt den Haken bei „Testlauf“ herausnehmen und die Änderungen direkt in die Datenbank schreiben lassen.
Nun sollten alle Bilder und Links wieder einwandfrei funktionieren.
Fazit
Gratulation. Du hast eine 1:1 Kopie deines WordPress erfolgreich umgezogen und sogar die URL geändert. Sofern du eine Google Map eingebunden hast beachte bitte, dass die neue URL ggf. auch bei dem API Key eingetragen werden muss. Wie das funktioniert erfährst du in diesem Beitrag.
Warum hinterlegt WordPress die Dateipfade (speziell, die Bildurl’s) nicht relativ? Dann könnte man sich den ganzen Aufwand sparen.