Für viele Shopbetreiber ist die Wartung eines Magento 1.x Shops sehr zeitaufwändig und oft mit vielen Fragezeichen versehen.
Regelmäßig werden Shopbetreiber von Magento auf Sicherheitslücken hingewiesen. Dabei wird meist ein neu verfügbarer Sicherheitspatch beworben, der die jeweilige Sicherheitslücke schließt.
Jedoch ändert sich mit Installation der Sicherheitspatches nicht die Versionsnummer der installierten Shop Version. Das Vorgehen zum Upgrade auf eine aktuellere Shopversion versuche ich in diesem Artikel zu beschrieben.
(Alle Angaben ohne Gewähr)
Rahmenbedingungen
Nachfolgende beschreibe ich die nötigen Schritte um ein Versionsupgrade für Magento 1.9.x Shops zu erreichen. Dabei gehe ich von folgenden Rahmenbedingungen aus:
- Webserver mitt SSH Zugang
- funktionierende Magento 1.9.x Version
- genügend Platz auf Webserver für eine weitere Magento Installation
- min. 1 freie Datenbank
- Zugriff auf die Domaineinstellungen (Webhosting)
Grobes Vorgehen
Um das Upgrade vorzunehmen, erstelle ich eine Kopie des Shops (inkl. Datenbank) und werde diese Kopie parallel zur eigentlichen (live) Shopversion auf dem Webserver aufbauen. Das ermöglicht die Einspielung und Prüfung der Änderungen ohne den aktiven Shop zu beeinträchtigen. Die groben Schritte für das Upgrade sind:
- Schritt 1: Live-Shop sichern
- Schritt 2: Parallel-Shop (Kopie) aufbauen
- Schritt 3: Datenbankzugang konfiguruieren
- Schritt 4: Upgrade des Parallel-Shops
- Schritt 5: Parallel-Shop testen
Das Vorgehen hat den Vorteil, dass man die neue Version (nach Upgrade) detailliert testen kann. Wenn alle Tests erfolgreich sind und der Shop allen Anforderungen gerecht wird, kann man den Shop mit wenigen Klicks an die Stelle des Livesystems setzen. Hierfür ändert man einfach die Domaineinstellungen im Adminbereich des Webhosters.
Schritt 1: Backup des Livesystems
Zunächst wollen wir das Live-System sichern. Das machen wir mit den Dateien und den Daten der Datenbank.
Das Sichern der Dateien klappt am besten über die Kommandozeile (SSH). Per SSH Client (z.B. Putty) auf dem Server anmelden und in Elternverzeichnis (übergeordnetes Verz.) der Magento Installation wechseln. Darin sollte sich ein Verzeichnis magento befinden. (Verzeichnisname kann auch anders lauten)
Mit dem folgenden Befehl werden alle Dateien und Unterverzeichnisse in einem TAR Archive zusammengefasst:
tar -cvf magento_1-9-3-7.tar magento
Im Beispiel deutet der frei wählbare Name der TAR Archivs auf die gesicherte Version hin (magento_1-9-3-7.tar) der Parameter „magento“ ist der Name des zu sichernden Verzeichnises.
Danach kann das Tar Archiv noch komprimiert werden (optional):
gzip magento_1-9-3-7.tar
Sicherung der Datenbank
Über PhpMyAdmin (DB Administrationsoberfläche) die Datenbank exportieren. (Nutze Google-Suche für Details). Exportierte Daten anschließend auf den eigenen Rechner herunterladen.
Um spätere Fehler beim Import zu vermeiden müssen noch zwei Zeilen in die exportierte SQL Datei eigefügt werden. Die Zeile, die zuerst eingefügt werden muss schaltet die interne Fremdschlüsselüberprüfung aus. Diese Zeile ist idealerweise vor der ersten SQL Anweisung einzufügen. Zeilen die mit „–“ beginnen sind ledigleich Kommentare und haben keine weitere Funktion. Die Anweisung lautet:
SET FOREIGN_KEY_CHECKS=0;
Beispiel:
Am Ende der Datei muss noch eine weitere Anweisung platztiert werden, welche die Fremdschlüsselüberprüfung wieder einschaltet:
SET FOREIGN_KEY_CHECKS=1;
Datei speichern.
Um die Uploadzeit beim späteren Import zu verkürzen, sollte die SQL Datei komprimiert werden. Mit PhpMyAdmin können auch Dateien im .zip Format importiert werden.
Schritt 2: Parallel-Shop (Kopie) aufbauen
Unser Ziel ist es eine Kopie des Magento-Shops parallel zum Live-Shop aufzubauen. Diese Kopie werden wir dann auf die aktuelle Version aktualisieren und testen.
Für dieses Vorgehen bietet sich die Installation in einem separatem Unterverszichnis an. Dieses Untersverzeichnis sollte dann mit einer Domain bzw. Subdomain (z.B. preprod.[shopdomain]) verlinkt werden.
2.1 Datenbank erstellen
Im Administrationsbereich des Webhosters kann man die Datenbanken verwalten. Die meisten Hostingpakete haben heutzutage mehrere Datenbanken pro Paket im Angebot. Eine neue Datenbank erstellen / anlegen und Zugangsdaten (DB-Name, Hostname, Benutzername und Passwort) merken. Die neue Datenbank mit der Adminsitrationsoberfläche (meist PhpMyAdmin) öffnen, wenn die sie verfügbar ist. Jetzt kann die zuvor gesicherte Datenbank importiert werden.
Nach erfolgreichem Import müssen noch einige Anpassungen bzgl. der Domain gemacht werden. In der Tabelle „core_config_data“ gibt es zwei wichtige Zeilen, die angepasst werden müssen…
SELECT * FROM core_config_data
In den Zeilen mit dem Parametern „web/unsecure/base_url“ und „web/secure/base_url“ finden sich die Informationen zur Domain. Hier muss die neue Domain eingetragen werden (z.B. preprod.[shopdomain]).
2.2 Dateien
Neben der Datenbank müssen natürlich auch die Dateien des Shopsystems wiederhergestellt werden. Das Backup des Installationsverzeichnises „magento_1-9-3-7.tar.gz“ in das neu erstellte Unterverzeichnis kopieren oder verschieben. Hier kann die Datei dann dekomprimiert und entpackt werden.
gunzip magento_1-9-3-7.tar.gz
tar -xvf magento_1-9-3-7.tar
Das entpacken der .tar Datei kann je nach Shopgröße einige Minuten in Anspruch nehmen. Bitte darauf achten, dass genügend Speicherplatz vorhanden ist und dass die max. Anzahl der Dateien auf dem Dateisystem
nicht überschritten wird. (Manche Anbieter haben hier eine Beschränkung)
Nachdem alles entpackt wurde, sollte im Installationsverzeichnis ein Unterverzeichnis mit dem namen „magento“ existieren. Darin befindet sich die Kopie des Shopsystems.
Schritt 3: Datenbankzugang konfiguruieren
Es gibt an diesem Punkt eine neue Datenbank und die Dateien des „neuen“ Shopsystems. Jetzt müssen diese beiden Elemente noch mit einander „bekannt“ gemacht werden. Dazu müssen die Zugangsdaten der Datenbank in der Konfigurationsdatei eingetragen werden.
Im Unterverzeichnis etc liegt die Datei local.xml
magento/app/etc/local.xml
Öffnet man diese Datei, so erkennt man schnell den Bereich, in dem die DB Informationen eingetragen werden müssen. Im nachfolgenden Bild sind die zu ändernden Informationen als HOSTNAME, USERNAME, PASSWORD und DATENBANKNAME gekennzeichnet.
Achtung: hier ist noch die Datenbank des Live-Shops konfiguriert. Diese Einstellungen bitte unbedingt ändern. Andernfalls könnte der Live-Shop beschädigt werden!
Schritt 4: Upgrade des Parallel-Shops
Nachdem Datenbank und Dateisystem bereitgestellt und konfiguriert wurden, kann nun das Upgrade auf das aktuelle Magento Release gemacht werden. Hier im Beispiel möchte ich den Shop auf Magento 1.9.4.4 aktualisieren.
Dazu habe ich mir das Paket magento-1.9.4.4-2020-01-28-04-53-25.tar von Magento.com (https://magento.com/tech-resources/download) heruntergeladen. Diese Datei in das magento Unterverzeichnis im Installationsverzeichnis des neu aufgebauten Shops (Kopie vom Live-System) kopieren. Das ist das Verzeichnis in dem auch die Datei index.php liegt.
4.1 Ggf. Verzeichnis „downloader“ umbenennen
Es gibt eine Sicherheitsempfehlung, das Standard-Verzeichnis „downloader“ umzubenennen. In diesem Verzeichnis liegen die Funktionen für den Magento Connect Manager. Sollte dieses Verzeichnis umbenannt worden sein, dann muss es vor der Installation des Upgrades wieder auf „downloader“ umbenannt werden!
4.2 Upgrade
Als nächster Schritt steht das eigentliche Upgrade an. Das Upgrade wird natürlich auf der Kopie des Shopsystems angewendet. Das Upgradepackage (Beispiel magento-1.9.4.4-2020-01-28-04-53-25.tar) sollte im Hauptverzeichnis des zu aktualisierenden Shops liegen. Um das Upgrade zu installieren muss es lediglich entpackt werden. Das geschieht z.B. mit diesem Befehl:
tar -xvf magento-1.9.4.4-2020-01-28-04-53-25.tar
Das Entpacken dauert einen kleinen Moment. Sobald es durchgelaufen ist, ist das Upgrade im Grunde fertig.
Shop testen
Jetzt kann man den aktualisierten Shop im Browser aufrufen. Es empfiehlt sich als eine der ersten Aktionen nochmal im Administrationsbereich den Cache zu leeren.
Weiterhin sollte man die wichtigen Funktionen des Shops testen
- Werden die Artikel richtig angezeigt?
- Funktioniert die Warenkorbfunktion?
- Funktioniert der Bestellvorgang?
- Funktionieren ggf. vorhandene Datenexports?
- …
Mögliche Nacharbeiten / Troubleshooting
Nach der Installation des Upgrades kann es sein, dass ein 403 Fehler angezeigt wird, wenn man die aktualisierte Version des Shops aufrufen möchte. Die Fehlermeldung könnte in etwa so aussehen:
Forbidden
You don't have permission to access this resource.Server unable to read htaccess file, denying access to be safe
Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.
Lösungsmöglichkeit: Datei- und Verzeichnisrechte
Bei Magentoshopsystemen ist es wichtig die korrekten Berechtigungen für Dateien und Verzeichnisse zu haben. Um diese für die gesamte Shopinstallation zu setzen, können folgende Befehle ausgeführt werden:
find . -type d | xargs chmod 775; find . -type f | xargs chmod 664; chmod 755 cron.sh cron.php;
Lösungsmöglichkeit: .htaccess
Durch das Upgrade wurde womöglich die .htaccess Datei überschrieben und passt nicht mehr zu den Gegebenheiten des Shops. Daher lohnt es sich die Datei genauer anzusehen und ggf. mit der .htaccess Datei des Livesystems zu vergleichen. Im Zweifelsfall kann man versuchen die Datei durch eine Kopie der .htaccess Datei aus dem Livesystem zu ersetzen. Wichtig: Bitte diese Datei vorher sichern!