Deployment
Vorwort
Für unser Shopware Cluster ist das Deployment von Shopware via Pipeline zwingend erforderlich, um sicherzustellen, dass alle betroffenen App-Server die gleichen Updates erhalten.
Für ein optimales Deployment empfehlen wir die Nutzung unseres GitLab-Hosting.
Voraussetzungen
- creoline Shopware Cluster
- GitLab mit mindestens einem aktiven GitLab-Runner
- SSH-Zugriff auf alle App-Server via Benutzer
deployer
Ordnerstruktur
Für alle App-Server existiert nach der Bereitstellung durch uns folgende Ordnerstruktur:
/var/www/shop.com/
│
├── current -> releases/test-release-2
│
├── releases
│ ├── test-release-1
│ └── test-release-2
│
└── shared
├── config
│ └── jwt
│
├── custom
│ ├── plugins
│ └── apps
│
├── files
│
├── public
│ ├── media
│ ├── thumbnail
│ └── sitemap
│
└── var
└── log Mithilfe des Ordners releases können mehrere Releases bereitgestellt werden und durch den aktiven Symlink aktiviert bzw. deaktiviert werden. Der symbolische Link current zeigt hier auf das gewünschte aktive Release.
Definition App-Server
Für unser Shopware Cluster gibt es zwei Arten von App-Servern:
- App-Server Master
- App-Server Slave
Der App-Server Master stellt folgende Funktionen bereit:
- Shopware Administration (Admin Traffic)
- Shopware Message Queue
- Cronjobs / interne Aufgaben
Der App-Server Slave stellt folgende Funktionen bereit:
- Shopware Storefront (Besucher Traffic)
Verteilung von Dateien und Ordnern
Folgende Dateien und Verzeichnisse werden via App-Server Master allen weiteren App-Servern bereitgestellt:
Geteilte Dateien
.env.local
install.lock
public/.htaccess
auth.json Geteilte Verzeichnisse
config/jwt
files
var/log
public/media
public/thumbnail
public/sitemap
custom/plugins
custom/apps Deployment-Schritte
Folgende Schritte sind für das Deployment erforderlich:
- Alle: Erstellung des neuen Release-Ordners
- Alle: Deployment aller Dateien und Ordner innerhalb des neuen Release-Ordners
- Master: Ausführung der Datenbankmigrationen
- Master: Aktualisierung der Plugin-Liste
sw:plugin:update:all - Master: Ausführung der Theme-Kompilierung
sw:theme:compile - Alle: Ausführung der Asset-Installation
sw:assets:install - Alle: Cache Leerung
sw:cache:clear - Alle: OpCache Leering (Mehr Informationen)
- Alle: Symlink-Wechsel
Zusätzliche Hinweise
Console Command sw:theme:compile
Dieser Befehl darf nur auf dem App-Server Master ausgeführt werden, da Shopware seit Shopware 6.5 einen zufälligen Hash pro Kompilierung generiert. Das Ausführen des Befehls auf weiteren Servern führt dazu, dass das kompilierte Theme auf den anderen Servern invalidiert wird.
Beispiele
Deployer mit GitLab Pipelines
Deployer (https://deployer.org/) eignet sich ideal für das Deployment von Shopware 6 auf unserem Shopware Cluster. Das hier bereitgestellte Beispiel wurde von unserem Partner, der webimpact GmbH entwickelt.
GitHub Repository:
https://github.com/creoline/shopware-deployer-example
Weiterführende Links
- Shopware Dokumentation: