Cambiar WordPress CMS a otro dominio (copiar o migrar WordPress CMS)

Oft möchte man sein laufendes CMS- oder Blogsystem sichern oder lokal auf seinem System zum Laufen bringen, um beispielsweise verschiedene Tests durchzuführen oder lokal am System zu entwickeln. Falls man nur Inhalte zwischen 2 WordPress CMS austauschen möchte eignet sich die im CMS integrierte Export – Import Funktion welche ich hier nicht näher beschreiben werde. Dies werde ich evtl. im nächsten Post beschreiben, hier geht es vielmehr um den kompletten Umzug auf einen anderen Server oder Domain, speziell um diesen Vorgang unter Linux zu automatisieren.

Grundsätzlich besteht das System aus den CMS-Dateien und einer Datenbank, meist einer MySQL Datenbank. Zum Sichern und Wiederherstellen benötigt man deshalb sowohl einen Datenbank-Dump und eine Sicherung des Filesystems, ebenfalls muss die Konfiguration geändert werden da das neue System auch eine andere Datenbank verwendet.

wordpress_filesystem_mysql

Das bestehende WordPress CMS sollte regelmäßig gesichert werden. Sowohl das Dateisystem mit Templates, Plugins und speziellen Anpassungen als auch die MySQL-Datenbank sollte regelmäßig gesichert werden um im Fehlerfalle auf ein funktionierendes System zurückgreifen zu können.

Sichern und Wiederherstellen der MySQL-Datenbank

Zur Sicherung der MySQL Datenbank gibt es mehrere Möglichkeiten und kann mit jedem beliebigen Client oder per Script erstellt werden. Das Linux Script für das automatische Backup habe ich vor einiger Zeit hier gepostet.

Ebenfalls kann die Datenbank über jeden beliebigen SQL Client (wie beispielsweise der Web-Client MySQL Admin) gesichert werden. Ebenso das Einspielen auf dem neuen System kann über verschiedene SQL Clients durchgeführt werden, hier im Beispiel über die Linux Konsole:

Über $1 wird das Restorefile angegeben, alternativ setzt man den Datenname des Dumpfiles manuell im MySQL Skript falls sich der Name des Backups nicht ändert. Dies eignet sich nicht für die automatisierte Wiederherstellung (bspw. als Cronjob) innerhalb des Skriptes.

Sicherung der CMS Dateien mit FTP (Linux ncftp)

Um das CMS System zu Klonen müssen alle Dateien vollständig auf das andere System  übertragen werden; für WordPress sind das folgende Dateien:

  1. WordPress Core Installation
  2. WordPress Plugins
  3. WordPress Themes
  4. Bilder und Dateien
  5. Javascripts, PHP Scripts und andere Dateien
  6. Zusätzliche Dateien und statische Seiten
  7. .htaccess Datei

Besser als per FTP direkt eignet sich das Tool ncftp um Daten per FTP vom Server zu holen. Voraussetzung ist ein installiertes ncftp welches sich bei Bedarf installieren lässt (sudo apt-get install ncftp). Unter Windows kann man Filezilla oder einen beliebigen FTP-Client verwenden um die CMS-Dateien zwischen den beiden Systemen zu kopieren.

Unter Linux lässt sich dies wie folgt automatisieren:

Das Dateisystem der beiden Systeme unterscheidet sich generell in mehreren Punkten.

  • wp-config.php: Verbindungsparameter zur Datenbank und evtl. 2 Variablen mit SiteURL und WP-Home
  • .htaccess-Datei
  • Weitere feste Verlinkungen auf die Domain was allerdings nicht der Fall sein sollte (bspw. bei Themes)

In der wp-config (befinder sich direkt im WordPress-Verzeichnis) sind folgende Einstellungen vorzunehmen:

define(‘DB_NAME’, ‘blog_lokal’);
define(‘DB_USER’, ‘root’);
define(‘DB_PASSWORD’, ”);
define(‘DB_HOST’, ‘localhost’);

Ebenfalls müssen die beiden Variablen WP-HOME und WP_SITEURL noch gesetzt werden. Dies kann entweder direkt in der Datenbank (Tabelle options) oder in der wp-config.php wie folgt definiert werden, falls in der Konfiguration vorhanden werden immer diese Werte verwendet und nicht aus der Datenbank.

define(‘WP_HOME’,'http://www.webtech-blog.info’);
define(‘WP_SITEURL’,'http://www.webtech-blog.info’);

Weitere Änderungen bei der Datenbank

Die alte Domain steckt jedoch noch in weiteren Tabellen der Datenbank, diese kann man über einen SQL Client (PHPMyAdmin) noch über search-replace anpassen. Dies betrifft vor allem die beiden Werte der Tabelle wp_options und wp_posts, die Werte können jedoch auch noch in anderen Tabellen vorhanden sein welche entsprechend auch angepasst werden müssen.

Hinweis: Änderungen direkt an der Datenbank sind generell sehr vorsichtig durchzuführen und vorab sollte in jedem Falle eine Sicherung vorhanden sein!!

Unter Ubuntu lässt sich über den Stream Editor der Dump vor dem Einspielen anpassen, in diesem Fall werden die Werte der Domain “www.webtech-blog.info” auf “localhost” geändert.

Neue WordPress-Instanz testen

Nach dem Umzug sollte natürlich das neue System ausgiebig getestet werden und über die Administration – Permalinks die Links angepasst werden, speziell die Einstellungen einer .htaccess Datei sollte gründlich getestet werden.