Mit Wordpress von einem Shared Hosting Paket in ein anderes umziehen


Mit einer WordPress Seite von einem Server oder Hoster zu einem anderen umzuziehen ist keine Raketenwissenschaft. Den ein oder anderen Stolperstein gilt es jedoch zu umschiffen, oder gleich von vornherein zu vermeiden. Da ich vor kurzem mit meinem Blog hier von einem kleinen Shared Hosting Paket bei 1&1 zu Digital Ocean (<- Achtung! Schamloser Afiliate Link) umgezogen bin, bin ich also noch in Übung. Und da in WordPress Foren und entsprechenden Facebook Gruppen immer wieder die Frage nach einem sauberen Umzug auftaucht, werde ich versuchen dies hier einmal kurz und prägnant zu erleutern. Achtung: Grundsätzlich erkläre ich hier nur das vorgehen wenn komplett von einem Shared Hosting Paket auf ein anderes umgezogen wird und in beiden Fällen phpMyAdmin, aber kein voller SSH Zugang zur Verfügung steht. Umzüge mit anderen Verwaltungstools gestalten sich vermutlich auch etwas anders, mit vollem Root Zugriff ist es wesentlich einfacher. Dies soll hier aber nicht Gegenstand des Artikels sein.

Was wird zum Umzug benötigt

  • Ein (S)FTP Program samt Zugangsdaten für den alten und den neuen Server
  • Ein einfacher Texteditor
  • Zugang zu einem MySQL Verwaltungsprogramm (in diesem Tutorial am Beispiel von phpMyAdmin - das wohl bei 95% aller Shared Hosting Anbieter vorinstalliert sein dürfte) - Ebenfalls für den alten und den neuen Hosting Account.

Schritt 1: Dateien von dem alten auf den neuen Server bringen

Zunächst einmal sollte das komplette Wordpress Verzeichnis per (S)FTP auf den lokalen Rechner gesichert werden. FTP Programme gibt es wie Sand am Meer: Cyberduck, FileZilla, WsFTP...um nur einige zu nennen. Generell sollte man darauf achten Dateien nicht per ungesichertem FTP Protokoll, sondern per SFTP zu übertragen. Das aber nur am Rande. Sind alle Dateien lokal vorhanden gehts auf den neuen Server. Dateien wieder komplett auf den neuen Server per (S)FTP schieben.

Schritt 2: Datenbank exportieren

Da es sich bei WordPress um ein dynamisches, datenbankbasiertes CMS handelt muss selbstverständlich auch die alte MySQL Datenbank auf den neuen Server gebracht werden. Dazu muss diese zunächst vom alten Server exportiert werden. Zum exportieren phpMyAdmin aufrufen. Wie dieses Programm aufgerufen wird und wo die Zugangsdaten gefunden werden, hängt stark vom Hoster ab. Meist gibt es in dem Verwaltungsbereich ein Bereich "Datenbanken" oder "MySQL". Sollte hier Unklarheit herschen: Einfach in FAQ´s des Hosters nachschauen oder den Support bemühen. Nach dem Aufruf von phpMyAdmin sieht das Ganze in etwa so aus: datenbank_aus_phpmyadmin_exportieren1

Um die Datenbank zu exportieren in der Linken Spalte die gewünschte aussuchen ("1. Datenbank auswählen"). Dann oben auf "exportieren" ("2. Auf exportieren klicken")klicken. Im nächsten Dialog "Art des Exports" auf "schnell", und das Format auf "SQL" belassen und den grossen "ok" Button anklicken. Nun wird eine Datei im .sql Format herunter geladen.

Achtung!: Wenn sich durch den Umzug die URL eurer Seite ändert, lest bitte zunächst hier weiter: Problemfall: Hardgecodete Links in der Datenbank bevor ihr die .sql Datei wieder importiert.

Schritt 3: Neue Datenbank anlegen und SQL Datei wieder importieren

neue_datenbank_in_phpmyadmin_anlegenNun zu dem neuen Hoster wechseln und dort ebenso phpMyAdmin aufrufen. Hier eine neue Datenbank anlegen. Dies geschieht indem man auf "Datenbanken" klickt, oben in das Eingabefeld einen neuen Namen einträgt und auf "anlegen" klickt.

mysql_datenback_importieren Hat man nun eine neue, leeren Datenbank angelegt muss hier die zuvor exportierte .sql Datei importiert werden. Dazu einfach oben auf "Importieren" klicken, die .sql Datei von lokalen Rechner aussuchen und bestätigen. Damit hätten wir bereits alle notwendigen Daten und Dateien von dem alten Hoster zu dem neuen übertragen.

Schritt 4: Die Zugangsdaten der neuen Datenbank in die wp-config.php eintragen

Jetzt muss nur noch WordPress "mitgeteilt" werden das es die neue Datenbank verwenden soll. Dazu muss die wp-config.php Datei im Stammverzeichnis der WordPress Installation geöffnet werden. Diese einfach herunterladen und mit einem einfachen Text- oder Code- Editor öffnen und folgende vier Angaben überprüfen und ggf. ändern:

define('DB_NAME', 'datenbankname'); define('DB_USER', 'benutzername'); define('DB_PASSWORD', 'passwort'); define('DB_HOST', 'hostname');

Anstatt "datenbankname" wird hier der Name der eben gerade neu angelegten Datenbank eingetragen. "benutzername" und "passwort" wird mit den Werten des phpMyAdmin Users befüllt. Das sind die Angaben die ihr beim anmelden bei phpMyAdmin eingegeben habt. Der "hostname" wird in min. 90% der Fälle "localhost" sein. Aber Achtung: Einige Hoster (besonders die ganz grossen) Nutzen eigenen Server hierfür. Dies ist zum Beispiel bei 1&1 der Fall. Hier wird dann nicht "localhost" sondern ein anderer Wert eingetragen. So etwas wie "db1234.1und1.de". Diesen Namen bekommt ihr auch über die Verwaltungsoberfläche eueres Hosters heraus. Bei 1&1 z.B. einfach auf "MySQL- Datenbanken" klicken. Dann wird eine Liste aller Datenbanken, inklusive des Hostnamens, angezeigt. Alternativ wird der Hostname auch innerhalb von phpMySQL angezeigt. Sobald man eine Datenbank im linken Menü ausgewählt hat wird dir der Host Name oben im Format "Server: hostanem" angezeigt (auch gut auf meinen Screenshots oben zu erkennen...).

Die soeben geänderte wp-config.php Datei speichern und die alte Datei auf dem neuen Server damit überschreiben. Jetzt könnt ihr schon einmal testen ob ihr eure Seite aufrufen könnt. Wenn ihr komplett mit eurer alten Domain auf den neuen Server umgezogen seit, müsste an dieser Stelle bereits alles klappen. Eure Domain muss natürlich auf das angelegte WordPress Verzeichnis zeigen.

Problemfall: Wenn sich die URL ändert?

Wenn sich allerdings auch eure Domain geändert hat (z.B. weil man von einem lokalen Server MAMP Server auf einen online Server umzieht) gibt es noch einiges zu tun. Das Problem: WordPress speichert die URL unter der es gefunden wird nebst ALLER interner Links statisch in der Datenbank ab. Wenn ihr zum Beispiel eure Seite testweise in einem Unterverzeichnis eingerichtet habt (z.B. www.meineseite.de/wordpress) und jetzt eure Domain direkt auf das WordPress Verzeichnis gerichtet habt, "denkt" Worpdress noch immer das es von www.meineseite.de/wordpress aus aufgerufen wird. Diese URL wird auch für alle weiteren Links genutzt. Wenn ihr eure Seite aufruft dürftet ihr also ein ziemliches Durcheinander sehen. CSS und JavaScript Dateien können normalerweise nicht geladen werden, der Klick auf ein Menü Link führt zu einer Fehlerseite etc.

Um dieses Problem zu beheben gibt es zwei Wege. Beide erfordern das erneute editieren der wp-config.php Datei.

Option 1: WordPress mit ('RELOCATE',true) starten

Öffnet die wp-config.php Datei erneut und tragt folgendes ein: define('RELOCATE',true); Speichert die Datei und ladet sie hoch. Dieser Befehl führ dazu das WordPress nicht einfach davon ausgeht das die hinterlegte URL in der Datenbank stimmt, sondern selber feststellt über welche URL es aufgerufen wurde. Dies URL wird dann als Basis Wert genommen. Meldet euch nun in eurem WordPress Backend an und schaut unter "Einstellungen -> Allgemein" nach. hier sollte jetzt eure neue URL als "WordPress-Adresse (URL)" und "Seiten-Adresse (URL)" eingetragen sein. Falls nicht, ändert dies manuell. Jetzt entfernt wieder diesen Befehl: define('RELOCATE',true); aus eurer wp-config.php Datei. Schließlich soll WordPress sich nicht bei jedem Seitenaufruf "neu erfinden" müssen.

Option 2: URL in die wp-config.php auslagern

Wie gesagt, WordPress speichert die URL in der Datenbank. Mit zwei kleinen Einträgen in der wp-config.php kann diese Angabe aber überschrieben werden. Öffnet die Datei und fügt:

define('WP_HOME','http://meineseite.de'); define('WP_SITEURL','http://meineseite.de');

hinzu. "meineseite.de" natürlich mit eurer URL ersetzen. Diese Einträge müssen dann in der wp-config.php Datei erhalten bleiben.

Problemfall: Hardgecodete Links in der Datenbank

Nutzt man die interne Verlinkung von WordPress oder setzt einfach selber statische (sprich absolute), interne Links, werden diese ebenfalls in der Datenbank gespeichert. Diese Links werden nicht durch das oben beschriebende Vorgehen geändert. Im Zweifel hat man also noch eine ganze Reihe interner Links zwischen einzelnen Artikeln und Seiten die die alte Domain/URL nutzen. Diese könnte man natürlich händisch ändern. Was aber sehr viel Arbeite bedeutet. ODER: Wir schauen uns nocheinmal den .sql Export der Datenbank vom alten Server an. Diese Datei kann mit einem einfachen Texteditor bearbeitet werden. Am besten natürlich mit einem der eine "Suchen und ersetzen" Funktion bietet. Hier muss nun nach der alten URL gesucht werden und diese durch die neue ersetzt werden. Dann erst die .sql Datei importieren.