Thomas Eiling shopware AG

Durch die Wiederverwendbarkeit und Parametrisierung der Shellskripte mithilfe von PSH ist es ein Leichtes, das Deployment auf verschiedene Umgebungen anzuwenden.

Für viele Shopbetreiber und Agenturen ist ein automatisches Shopware Deployment immer noch ein Buch mit sieben Siegeln. Viele behaupten, es sei zu aufwendig oder würde nicht vom Kunden bezahlten werden. Dass das aber nicht stimmt und dass mit ein wenig Konfigurationsaufwand ein einfacher Deployment- und Rollback-Prozess möglich ist, zeige ich euch in diesem Artikel.

Für viele Shopware-Entwickler sieht ein „typischer“ Deployment-Prozess immer noch wie folgt aus:

  • Hochladen der Änderungen
  • Installation/Update von Plug-ins
  • Konfiguration der Plug-ins/Grundeinstellungen
  • Cache leeren
  • Prüfen ob alles wie erwartet funktioniert

Das ist nach meinem Dafürhalten eine ziemlich lästige Art, eine neue Softwareversion auszuliefern. Zusätzlich ist es durch die vielen manuellen Schritte sehr fehleranfällig. Wie wäre es, wenn wir all diese Schritte mit einem einzigen Shell-Command erledigen könnten? In den folgenden Abschnitten stelle ich euch ein Skript vor, mit dem ihr viele Anforderungen an ein automatisches Deployment erledigt. Das vollständige beschriebene Skript könnt ihr auf GitHub finden.

Voraussetzungen

Die benötigten Voraussetzungen für so ein Deployment sind gering. Wir benötigen Shopware 5.4 oder aktueller und müssen die Composer-Installation verwenden. Zusätzlich sollte sich PHP 7.0 oder aktueller auf dem Server befinden. Um einen reibungslosen Rollback zu einer vorherigen Version zu ermöglichen, müssen sich alle Entwickler und die Entwickler von Drittanbietersoftware bewusst sein, dass das Blue-Green Deployment umgesetzt wird. Shopware unterstützt dies von Haus aus seit der Version 5.4.

Auf der Serverseite benötigen wir mindestens SSHZugriff und eine Verzeichnisstruktur, wie sie in Listing 1 beschrieben ist. Der symbolische Link httpdocs ist als DocumentRoot konfiguriert und verweist auf die aktuell ausgelieferte Softwareversion. Im Verzeichnis media werden alle statischen Daten von Shopware gespeichert. Diese sind wiederum durch einen symbolischen Link im ShopwareDocumentRoot verknüpft.

httpdocs → 1.0.1
  1.0.0
1.0.1
  - media → ../media
media

Blue-Green Deployment

Die Möglichkeit, die Produktivumgebung einfach up- und downgraden zu können, wird allgemein als Blue-Green Deployment bezeichnet. Jede neue Version darf keine destruktiven Änderungen in einem Deploymentschritt ausführen, um einen einfachen Rollback zu ermöglichen. Das bedeutet, dass die neueste Datenbankversion immer noch mit der vorherigen Softwareversion einwandfrei funktionieren muss und es darf durch einen Rollback kein Datenverlust entstehen.

Durch dieses Prinzip benötigt eine Namensänderung an einer Datenbankspalte mindestens drei separat deployte Softwareversionen. In der ersten Version wird eine neue, korrigierte Spalte angelegt. Die Daten aus der alten Spalte werden in die Neue übernommen und durch einen Datenbanktrigger aktuell gehalten. In der zweiten Version wird nun die neue Datenbankspalte verwendet und durch ein Datenbank-Connection-Parameter ändert der Trigger die Speicherrichtung von „Altespalte → Neuespalte“ in „Neuespalte → Altespalte“. Im letzten Schritt wird die nun nicht mehr benötigte alte Datenbankspalte inklusive der Trigger entfernt.

Den vollständigen Artikel lesen Sie in der Ausgabe:

PHP Magazin 5.18 - "Node.js 10: What's next?"

Alle Infos zum Heft
579849325Deployment von Shopware in Multistage Environments
X
- Gib Deinen Standort ein -
- or -