Umziehen von einem Magento-Shop auf einen anderen Server

Da ich mir die Informationen aus irgendwelchen Quellen zusammensuchen musste, gebe ich hier eine kurze und knappe Übersicht der Hauptpunkte, die bei einem Umzug von Magento zu einem anderem Server beachtet werden sollten:

1. Kopieren der Dateien
Kopieren aller Dateien auf das gewünschte Verzeichnis des neuen Servers. Das kann man am einfachsten per FTP machen. Z.B. mit FileZilla, wobei man aufpassen sollte, dass wirklich alle Dateien kopiert werden. Bei Filezilla gibt es unten ein Tab, indem die fehlerhaft übertragenen Dateien aufgelistet werden. Diese sollte man anschließend nochmals in die Warteschleife setzen (per Rechtsklick). Außerdem ist es empfehlenswert, bei dem FTP-Programm einzustellen, dass mehrere Dateien gleichzeitig übertragen werden können.
Anschließend läd man den gesamten Ordner auf den neuen Server ins gewünschte Verzeichnis.

Per FTP dauert sowohl das Herunterladen also auch der Upload eine halbe Ewigkeit (mehrere Stunden)!! Also viel Zeit einplanen!

2. Magento Datenbank kopieren
Das geht etwas fixer!
– in PHPmyAdmin: die Datenbank anwählen, in der die Magento-Daten gespeichert sind.
– Alle Tabellen die mit “log_” beginnen, können problemlos geleert (nicht gelöscht!) werden. Das macht die Datenbank etwas kleiner.
– In den erweiterten Optionen für den Export: Fremdschlüsselüberprüfung deaktivieren. (Ansonsten lässt sich die Datenbank nicht mehr richtig importieren)
– Export als Dateiname.sql

Auf den neuem Server am besten auch mit PHPmyAdmin arbeiten, Hier:
– Import der .sql-Datei, also der Tabellen in die gewünschte Datenbank.
Wenn es bei diesem Schritt Probleme gibt, nochmal überprüfen, ob beim Export auch wirklich nur die Tabellen (nicht die komplette Datenbank) exportiert wurde und ob die Fremdschlüsselüberprüfung für den Export deaktiviert worden ist.

3. Datenbankeinstellungen von Magento
– Folgendes File muss angepasst werden: app/etc/local.xml
– Hier muss der Name, Username und PW der neuen Datenbank hin, damit Magento darauf zugreifen kann.

4. Domainadresse für Magento ändern.
Oft kommt es vor, dass man den Shop auf einer Test-Domain zuerst einmal ausprobieren möchte, bevor man den kompletten Umzug vollzieht. Das ist natürlich auch sinnvoll! Ein andere Möglichkeit ist, dass man komplett auf eine andere Domain umziehen möchte.
In diesen beiden Fällen muss man die URL im System von Magento manuell ändern. Normalerweise wird die URL im Admin-Panal in der Konfiguration des Magento-Backends festgelegt, falls wir das aber Manuell machen möchten, so müssen wir wieder mit PHPmyAdmin auf die Datenbank.
Genauer gesagt:
– In der Tabelle: core_config_data
– In der Spalte: web/unsecure/base_url: die neue (Test-)URL eintragen.
– In der Spalte: web/secure/base_url: ebenfalls die neue (Test-)URL eintragen.

Fertig!
Nun kann man den Shop unter der neuen URL testen. Sollte alles problemlos funktionieren, so kann man auf der alten URL eine IP-Weiterleitung auf das Verzeichnis des neuen Servers einstellen. Und los geht’s!!!

Testen ob der Magento Cron funktioniert

Der Magento Cron Job ist folgendermaßen organisiert:

  • Der Server muss so eingestellt sein, dass alle 15 min (oder alle 5 Minuten oder jede Minute) folgendes Script aufgerufen werden muss:
    http://www.magentoroot.com/cron.php
  • Innerhalb der Programmstruktur von Magento sind die einzelnen aufgerufenen Methoden über die XML-Config-Dateien der einzelnen Module definiert.
  • Jedesmal, wenn http://www.magentoroot.com/cron.php aufgerufen wird, geht Magento die einzelnen XML-Config-Dateien durch, führt die Methoden aus, die in der jüngsten Vergangenheit ausgeführt werden sollen und terminiert die zukünftig auszuführenden Methoden.

Wie kann mann überprüfen, ob die Servereinstellung überhaupt richtig ist?

Dafür bietet sich an, einmal in eine Config-Datei des Magento-Core-Codes zu schauen:
in app\code\core\Mage\CatalogRule\etc\config.xml definiert der XML-Handle catalogrule_apply_all eine Funktion namens:
dailyCatalogUpdate in Mage_CatalogRule_Model_Observer, was man an folgendem Code sehen kann:

Fügt man also in der Funktion dailyCatalogUpdate in Mage_CatalogRule_Model_Observer eine Log-Methode ein, z.B.

… so sollte sich innerhalb der nächsten Stunde im Verzeichnis var/log eine Datei mit dem Namen my_cron_log finden, in der “test cron” steht.

CMS-Content mit XML-Layout in Magento ändern.

Wie verwende ich das individuelle Layout von Magento mit eigenen Templates?

Bearbeitet man eine CMS-Seite in Magento, so findet sich im linken Menu der Punkt Design. Hier kann man im Dropdown-Menu zwischen den zu verschiedenen zu Verfügung stehenden Layouts, wählen.

Diese sind in der Datei page.xml des jeweiligen Themes definiert.

Will man aber in einen bestimmten Bereich (in unserem Beispiel: content) ein bestimmtes (eigen entwickeltes) Template einsetzen, so erreicht man dies durch folgenden XML-Code, den man in das Textfeld XML für Layoutänderung einsetzt:

Im Beispiel wurde eine Suchmaske, die durch die Datei search/left.phtml definiert ist, in die Fehlerseite (404) eingesetzt, um somit Kunden die Möglichkeit zu geben, von der 404-Fehlerseite direkt im Shop zu suchen.

Hier auch der Screenshot dazu:

Magento-XML-Layout

In Magento ein Attribut im Nachhinein ändern (Einzeiliges Textfeld zu Mehrzeiligen Textfeld ändern)

Wenn man im Magento-Shop-System ein neues Attribut erstellt und im Wert “Katalog Eingabe-Typ für den Shopbetreiber” einzeiliges Textfeld eingibt, so lässt sich dieser Wert im Nachhinein leider nicht mehr verändern.

Dies kann dazu führen, dass man im späteren Betrieb die Feststellung macht, dass die Zeichenlänge bei einem einzeiligen Textfeld, die auf 256 Zeichen beschränkt ist, nicht mehr ausreicht.

Abhilfe verschafft eine relativ einfache Veränderung in der Datenbank, für die ich allerdings etwas suchen musste. Deswegen sei sie hier erklärt:

  1. In der Magento-Datenbank die Tabelle eav_attribute öffnen.
  2. Zeile mit dem richtigen Attribute-Code (Spaltenname ist eav_attribute) aufrufen.
  3. Änderung von den folgenden beiden Einträgen:
    backend_type –> in text (anstatt varchar) ändern.
    frontend_input –> in textarea (anstatt text) ändern.

Das alles lässt sich über die Shell auch sehr einfach mit folgendem mySql-Befehl erledigen:

 

my_attribute_code ist natürlich der Attribute-Code von dem Magento-Attribut, dessen maximale Anzahl von Zeichen im Textfeld verändert sein sollen.