Kategorien
Technik

Magento-Installation spiegeln

Manchmal ist es nützlich, ein System wie Magento auf dem Live-Server zu spiegeln, um gewisse Tests wie z.B. ein Upgrade auf eine neue Version durchzuführen. Da eine Magento-Installation aus den zwei Komponenten Dateisystem und Datenbank besteht, heißt Spiegeln hierbei für uns, dass wir natürlich beides so kopieren, dass das Original unberührt bleibt und bei einem Live-Shop ohne Unterbrechung weiterlaufen kann.

Wenn möglich, sollte der Shop während des Spiegelns natürlich trotzdem kurzzeitig in den Wartungsmodus versetzt werden, sicher ist sicher. Dazu muss einfach im root-Verzeichnis der Installation die Datei maintenance.flag erstellt werden. Die index.php prüft dann auf deren Existenz und leitet dementsprechend um.

Das Kopieren selbst sollte am besten über die Konsole erfolgen. Also per SSH einloggen und zum Kopieren der Magento-Dateien folgendes eingeben:

cp -R /pfad/magento /pfad/magento-TEST

Optimalerweise ist dabei Magento im Unterordner magento installiert und nicht im root-Verzeichnis des htdoc-Ordners selbst. Der Befehl kopiert den vorhandenen Ordner in den neuen Test-Ordner.

Das Spiegeln der Datenbank ist ähnlich einfach. Wir wollen hierbei die Datenbank usr_pxxx_1 in die Datenbank usr_pxxx_2 kopieren. Dazu verwenden wir das Konsolentool mysqldump. Wenn nicht vorhanden, kann es bei einem guten Hoster im control panel aktiviert werden.

Der folgende Befehl führt die Spiegelung durch:

mysqldump -u xxx -pxxxxx -hdbxxx.mydbserver.com usr_pxxx_1 | mysql -u xxx -pxxxxx -hdbxxx.mydbserver.com usr_pxxx_2

Dieser Schnipsel besteht eigentlich aus zwei Befehlen. mysqldump erstellt ein Backup vonusr_pxxx_1, der daraus resultierende Output landet über die Pipe (dem “|”-Zeichen) direkt in mysql, dem Konsolen-Tool von MySQL.

Die mysqldump– und mysql-Parameter im Einzelnen (bei beiden identisch):

  • -u der Benutzername für die Datenbank
  • -p das Passwort, wobei zu beachten ist, dass das Passwort ohne Leerzeichen direkt an -p angehängt wird
  • -h bei einigen Hostern muss der Datenbank-Host mit angegeben werden, auch hier kein Leerzeichen zwischen Parameter und Wert
  • als letztes folgt die Datenbank als eigener Parameter

Je nach Datenbank-Größe kann der Prozess unterschiedlich lange dauern. Bei einem kleineren Shop mit nur tausend Artikeln (wobei natürlich auch noch andere Einflüsse eine Rolle spielen) dauert das Spiegeln nur wenige Augenblicke.

Um den Shop selbst dann auch zu nutzen, bietet es sich an, eine subdomain einzurichten und diese auf den neuen Unterordner zeigen zu lassen. Die Domain muss Magento dann noch in der Datenbank bekannt gemacht werden. Dazu z.B. mit phpMyAdmin die Tabelle core_config_data aufsuchen und die beiden Einträge web/secure/base_url und web/unsecure/base_url entsprechend setzen.

Das hier Beschriebene geht mit etwas Routine für gewöhnlich ziemlich flott, so dass man einen laufenden Shop bequem auf Herz und Pankreas prüfen kann, ohne den Shopbetreiber in Angstzustände zu versetzen. Versprochen!