Backup von Magento erstellen - Magento Commerce klonen. Um Magento zu klonen oder ein funktionierende Backup zu erstellen müssen einige Besonderheiten beachtet werden.
Bevor man startet und einen Projektplan erstellt sollten folgende Bereiche beachtet werden um
Ordner in Magento | Funktionen | Plug-ins, Extensions |
var/cache var/session var/locks |
Compiler deaktivieren Caches deaktivieren Fullpage Cache deaktivieren Andere Caches oder Cache Erweiterungen deaktivieren |
Piwik Logprocessing GoogleAnalytics Integraton Online Dienste |
Vorarbeiten
Im Admin Bereich von Magento folgendes ausführen.
- Magento > Admin > Konfiguration > Cache > Deaktiveren
- Magento > Admin > Konfiguration > Compiler > Aus
- Magento > Admin > Konfiguration >
- Magento > Admin > Abmelden
Das abmelden ist sinnvoll um die Sitzung zu beenden. Bei den Caches ist es wichtig alle Caches zu deaktivieren und zu leeren. Andernfalls gibt es oft Probleme mit einer "Blank Page" oder der Admin Login funktioniert nicht. Der Magento Compiler kann auch per Command Line geprüft werden.
php -f shell/compiler.php -- state php -f shell/compiler.php -- disable php -f shell/compiler.php -- clear
Magento kann viele veraltete Sessions noch halten im Ordner var/session Das folgende Command löscht alte Sitzungen von Magento
find magento-root/var/session -name 'sess_*' -type f -mtime +30 -exec rm {} \;
Das löschen der Cache Dateien kann wie folgt per Command Line erfolgen
rm -R magento-root/var/cache/*
Die Inhalte der Ordner cache und session stellen oft ein Problem dar, wenn man Magento in einer neuen Umgebung starten will. Werden die session im Server Memory gehalten sollte dieser leer sein.
Backup Magento v1
Es müssen 2 Bereiche als Backup gemacht werden.
- Datenbank (Tabellen)
- Magento Root Verzeichnis
Backup der Magento Datenbank
Je nach Auslastung vom Magento eCommerce Shop kann es erforderlich sein den Shop in den eCommcerce Modus zu versetzen mit der Datei maintainance.flag
mysqldump -u 'mysql-benutzer' -p magento-db | gzip > /pfad/magento-db.sql.gz
* Seit MySQL 5.0.51 werden beim mysqldump command die foreign key checks ausgeschaltet. Ansonsten hier noch die Commands.
USE magento-db; SET FOREIGN_KEY_CHECKS = 0; Exit;
Nachdem aufgrund der Log Tables die Magento Datenbank sehr große werden kann, mag eine Backup ohne diese Tabellen eine Alternative sein.
mysqldump -u 'mysql-benutzer' -p magento-db \ --ignore-table=magento-db.log_url_info \ --ignore-table=magento-db.log_url \ --ignore-table=magento-db.log_visitor \ --ignore-table=magento-db.log_visitor_event | gzip > /pfad/magento-db.sql.gz
Backup Magento Root
cd magento-root/ tar czf /pfad/magento.bak.tgz *
Ergebnis
In dem Ordner / Verzeichnis "pfad" sollten nun 2 Dateien komprimiert liegen
magento-db.sql.gz magento.bak.tgz
Magento Klone Duplikat erstellen
Meist wird ein Klone oder Duplikat erstellt um Magento Commerce zu testen oder als Entwicklungsumgebung zu nutzen. Das kann in dann lokal an einem Rechner geschehen oder gleich an der selben Serverumgebung (zu bevorzugen) mit einer Subdomain.
Datenbank anlegen
Unter MySQL eine Datenbank anlegen z. B. magento-db2 und das Backup einspielen
gunzip -c /pfad/magento-db.sql.gz | mysql -u 'mysql-benuter' -p magento-db2
Je nach Umfang kann das einige Minuten dauern. Bevor jedoch das Duplikat oder Klone gentutz werden kann sollte einige config Werte auf die neue Umgebung per MySQL angepast werden.
Magento Root Klone
Zuerst extrahiert man die komprimierte Datei in einem Zielpfad vom Webserver Verzeichnis (Apache Directory).
tar xvf magento.bak.tgz
Sofern die geklonte Magento Root schon per HTTP aufrufbar ist, sollte sofor die .htachess Datei angepasst werden um den Zugriff zu beschränken. Hier im Beispiel eine fiktive IP Adresse
order deny,allow deny from all allow from 1.1.1.1
Für Arbeitsgruppen ist ein Realm mit einem geteilten Passwort die einfachste Lösung. Die htpassword Datei kann hier erzeugt werden.
AuthType Basic AuthName "Development" AuthUserFile /pfad/.htpasswd Require valid-user
Insgesamt vermeidet man, dass Suchmaschinen wie Google oder Bing die Subdomain der Testumgebung indexieren und eventuell abstrafen wegen Double-Content.