99 lines
3.5 KiB
Markdown
99 lines
3.5 KiB
Markdown
|
|
# SumediaStage
|
|||
|
|
|
|||
|
|
Shopware 6 Plugin zur Nutzung einer lizenzierten Installation unter einem URL-Unterverzeichnis (z. B. `/stage/`, `/local/`), ohne dass Plugin-Lizenzprüfungen oder die interne Shop-Identifikation fehlschlagen.
|
|||
|
|
|
|||
|
|
## Hintergrund
|
|||
|
|
|
|||
|
|
Shopware speichert die `APP_URL` zusammen mit der Shop-ID (`core.app.shopId`) in der Systemkonfiguration. Bei jedem Request vergleicht `ShopIdProvider` die aktuelle `APP_URL` mit dem gespeicherten Wert. Weichen Live (`https://example.com`) und Stage (`https://example.com/stage/`) ab, wirft Shopware eine `AppUrlChangeDetectedException` – Plugins melden daraufhin fehlende Lizenzen.
|
|||
|
|
|
|||
|
|
Das Plugin registriert einen `EnvironmentHelperTransformer`, der bei jedem internen `APP_URL`-Lesezugriff den Pfad-Anteil automatisch entfernt:
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
https://www.example.com/stage/ → https://www.example.com
|
|||
|
|
https://www.example.com/local/ → https://www.example.com
|
|||
|
|
https://www.example.com → https://www.example.com (no-op)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Installation auf dem Stage-System
|
|||
|
|
|
|||
|
|
### Voraussetzungen
|
|||
|
|
|
|||
|
|
- Shopware 6.6.x
|
|||
|
|
- SSH-Zugang zum Stage-Server
|
|||
|
|
- `APP_ENV` muss `dev` oder `staging` sein – **nicht** `prod`
|
|||
|
|
- `APP_URL` in `.env.local` ist auf das Unterverzeichnis gesetzt, z. B.:
|
|||
|
|
```
|
|||
|
|
APP_URL=https://www.example.com/stage/
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
> **Wichtig:** Das Plugin lässt sich in `APP_ENV=prod` nicht aktivieren und registriert den Transformer auch dann nicht, falls es doch installiert sein sollte. Es ist ausschliesslich fuer Staging- und lokale Umgebungen gedacht.
|
|||
|
|
|
|||
|
|
### 1. Plugin übertragen
|
|||
|
|
|
|||
|
|
Plugin-Verzeichnis auf den Stage-Server kopieren (z. B. per rsync oder git):
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
rsync -av custom/plugins/SumediaStage/ user@stage-server:/var/www/shopware/custom/plugins/SumediaStage/
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Oder per git, wenn das Stage-System dasselbe Repository nutzt – dann ist das Plugin bereits vorhanden.
|
|||
|
|
|
|||
|
|
### 2. Plugin installieren und aktivieren
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
php bin/console plugin:refresh
|
|||
|
|
php bin/console plugin:install --activate SumediaStage
|
|||
|
|
php bin/console cache:clear
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. Konfiguration prüfen
|
|||
|
|
|
|||
|
|
Im Shopware-Admin unter **Einstellungen → Erweiterungen → SumediaStage**:
|
|||
|
|
|
|||
|
|
| Einstellung | Empfohlener Wert |
|
|||
|
|
|---|---|
|
|||
|
|
| Normalize APP_URL | aktiv (true) |
|
|||
|
|
| Base URL override | leer lassen |
|
|||
|
|
|
|||
|
|
### 4. Verifizieren
|
|||
|
|
|
|||
|
|
Nach der Installation sollte der Admin-Login funktionieren und keine Plugin-Lizenzfehler mehr erscheinen. Zur Kontrolle:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
php bin/console system:config:get core.app.shopId
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Der gespeicherte `app_url`-Wert sollte nun ohne den Unterverzeichnis-Pfad gespeichert werden.
|
|||
|
|
|
|||
|
|
## Deinstallation
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
php bin/console plugin:uninstall SumediaStage
|
|||
|
|
php bin/console cache:clear
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Konfigurationsoptionen
|
|||
|
|
|
|||
|
|
**Admin (Einstellungen → Erweiterungen → SumediaStage):**
|
|||
|
|
|
|||
|
|
| Schlüssel | Typ | Default | Beschreibung |
|
|||
|
|
|---|---|---|---|
|
|||
|
|
| `normalizeAppUrl` | bool | `true` | Transformer aktiv/inaktiv |
|
|||
|
|
| `baseUrl` | string | leer | Explizite Basis-URL statt Auto-Erkennung (z. B. hinter Proxy mit falschem Host-Header) |
|
|||
|
|
|
|||
|
|
**Umgebungsvariablen (`.env.local`):**
|
|||
|
|
|
|||
|
|
| Variable | Wert | Beschreibung |
|
|||
|
|
|---|---|---|
|
|||
|
|
| `SUMEDIA_STAGE_ENABLED` | `0` | Transformer deaktivieren, ohne das Plugin zu deinstallieren |
|
|||
|
|
| `APP_ENV` | `prod` | Transformer wird automatisch blockiert, Aktivierung wird verweigert |
|
|||
|
|
|
|||
|
|
Beispiel `.env.local` um das Plugin temporaer zu deaktivieren:
|
|||
|
|
```
|
|||
|
|
SUMEDIA_STAGE_ENABLED=0
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Hinweis
|
|||
|
|
|
|||
|
|
Das Plugin muss auf **allen** Instanzen (live, stage, local) installiert und aktiviert sein. Auf Live-Instanzen, bei denen `APP_URL` keinen Pfad-Anteil enthält, ist der Transformer ein No-Op.
|