Eine Website von einem Server auf einen anderen umzuziehen ist nicht einfach, deutlich schwieriger wird das ganze aber nochmal wenn die Website ein Shop ist. Da ich schon einige Magento Shops umgezogen haben, wollte ich meine Vorgehensweise vorstellen und die typischen Probleme bei einem Magento Umzug mit der entsprechenden Lösung auflisten.
Bewährte Vorgehensweise
- Shopsystem auf dem Server zu einer .zip Datei zusammenfassen
Die meisten Magento Shops dürften auf Managed-Servern oder Root-Servern laufen. Sowohl auf Root als auch auf Managed Servern sollte man die Möglichkeit haben den Shop zu zippen.
Da Magento aus extrem vielen kleinen Dateien besteht, dauert der Transfer der Dateien ohne das zippen deutlich länger. - Datenbank mit phpMyAdmin exportieren
Beim Export der Datenbank sollte man darauf achten, dass die Option Fremdschlüsselüberprüfung deaktivieren aktiviert ist. Da Magento, wie alle größeren Shop Systeme, in der Datenbankstruktur viele Foreign Keys verwendet, kann es sonst zu Problemen beim Import führen. Am Ende der exportierten Datei wird die Fremdschlüsselüberprüfung von phpMyAdmin automatisch wieder aktiviert. - Datenbank und Magento auf den neuen Server hochladen
Die Datenbank kann man im komprimierten Zustand auch per FTP Client hochladen. Magento selbst sollte, um Zeit zu sparen, direkt von dem alten Server auf neuen Server hochgeladen werden werden. - Magento entpacken
- Die Datenbank mit mysqldump oder bigdump einlesen.
- Datenbank Zugangsdaten ändern
Falls sich die Datenbank Zugangsdaten auf dem neuen Server geändert haben, muss man diese in der Datei /app/etc/local.xml auch anpassen. - In der Datenbank müssen anschließend noch zwei Werte modifiziert werden. Beide Einträge befinden sich in der Tabelle core_config_data. Der erste Eintrag ist web/unsecure/base_url, welcher die neue URL des Shops bekommen sollte. Der zweite Eintrag ist web/secure/base_url, welcher die HTTPS URL des neuen Shops beinhalten sollte.
Falls der Shop nur auf einen neuen Server umgezogen wird, ohne dass dabei ein URL Wechsel vollzogen wird, kann dieser Schritt übersprungen werden
Nachdem man die Schritte alle ausgeführt hat, sollte der Shop wieder problemlos auf dem neuen Server funktionieren. Da aber trotzdem immer wieder Probleme dabei auftreten, habe ich hier eine Liste über Typische Probleme angehängt.
USING BTREE
Fehlermeldung
ERROR 1064 (42000) at line 382: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘USING BTREE,
KEY `FK_ATTRIBUTE_VARCHAR_ENTITY` (`entity_id`),
KEY `FK_CATALO’ at line 9
Problem & Lösung
Ältere MySQL Versionen können mit USING BTREE hinter der Liste der Unique Keys nichts anfangen. Daher muss man in dem Datenbank Dump folgende Zeile suchen:
UNIQUE KEY `IDX_BASE` (`entity_type_id`,`entity_id`,`attribute_id`,`store_id`) USING BTREE,
und mit folgender Zeile austauschen:
UNIQUE KEY `IDX_BASE` USING BTREE (`entity_type_id`,`entity_id`,`attribute_id`,`store_id`),
Falls das einspielen des Dumps danach immer noch nicht funktioniert, wird in verschiedenen Blogs geraten das USING BTREE einfach herauszulöschen. Ich konnte die Dumps bisher nach der Umstellung immer einspielen und würde daher von solchen Modifikationen abraten.
Store Zusammenhänge
Fehlermeldung
Undefined index: 0 in /app/code/core/Mage/Core/Model/Mysql4/Config.php on line 92
Problem & Lösung
Beim Umzug von Magento kann es vorkommen, dass Indexe erhöht werden und anschließend die interne Zuordnung von Stores zu Websites nicht mehr funktioniert. Ich hatte das Problem bei älteren Versionen mehrmals, bei 1.4.x ist es mir allerdings noch nicht untergekommen.
Im Internet kursieren dazu verschiedene Lösungen, die meistens das manuelle Editieren der betroffenen Einträge zur Folge haben. Das manuelle editieren in Datenbanken sollte man allerdings Fachleute machen lassen, da man hier schnell Datensätze kaputt machen kann.
setWebsite() must be an Instance…
Fehlermeldung
Recoverable Error: Argument 1 passed to Mage_Core_Model_Store::setWebsite() must be an instance of Mage_Core_Model_Website, null given, called in /path/app/code/core/Mage/Core/Model/App.php on line 427 and defined in /path/app/code/core/Mage/Core/Model/Store.php on line 279
Lösung
Um das Problem zu lösen, muss man die Datei /app/etc/use_cache.ser löschen.
