Context-Snapshot · other · supersedes: 0005-mittwald-hosting.html
SOLCOM Mittwald Staging — Live-State nach Bootstrap
TL;DR — Ablöst 0005-mittwald-hosting.html (Stand: Greenfield). Alle Komponenten sind provisioniert, Drupal läuft, Pipeline deployt durch. Nächste offene Aufgaben: Document Root auf
/current/web, Domain-Mapping, Cronjobs.
Live-Befund staging (Stand 2026-05-06)
| Aspekt | Wert |
|---|---|
| App-Name | staging |
| App-UUID | 61284ca9-0a65-495d-bda9-2edfe8bf26a1 |
| App-Installationsverzeichnis | /home/p-nxm58l/html/staging |
| PHP-Version | 8.4.18 |
| SSH-Hostname | ssh.altgemeinde.project.host |
| SSH-Deploy-User | ssh-dpwyjd@a-q7fxvm |
| MySQL-DB | mysql_dqgxag (MySQL 8.0, utf8mb4_0900_ai_ci) |
| MySQL-Host (intern) | mysql-dqgxag.pg-s-g5h2kg.db.project.host:3306 |
| MySQL-Host (extern/SSL) | mysql.altgemeinde.project.host |
| Redis-Host (intern) | redis-pwdlbk.pg-s-g5h2kg.db.project.host:6379 |
| Project-Domain | p-nxm58l.project.space — noch kein Ziel gesetzt |
| Document Root | noch /html/staging — muss auf /current/web geändert werden |
| Drupal | installiert, DB aus DDEV-Seed, alle Module aktiv |
| Pipeline | End-to-End funktionsfähig (Deploy + Smoke Test) |
Capistrano-Layout auf dem Server
/home/p-nxm58l/html/staging/
├── current → symlink auf neuesten Release
├── releases/
│ └── YYYYMMDD-HHmmss-<sha>/ (max. 5 Releases)
└── shared/
├── files/ (Drupal public files)
├── private/ (Drupal private files)
└── settings.mittwald.php (Credentials + Redis)
Upload via SSH-Pipe → Shared-Symlinks setzen → Maintenance-Mode an → Symlink-Switch (current → neuer Release) → drush updatedb → drush config:import → drush cache:rebuild → Maintenance-Mode aus → Smoke Test
MySQL-User-Setup
Mittwald vergibt beim DB-Anlegen einen Haupt-User (dbu_dqgxag). Dieser hat per Default keinen externen Zugang — Verbindungen vom SSH-Gateway (100.121.108.117) werden abgelehnt.
| User | Zweck | External Access |
|---|---|---|
dbu_dqgxag | Mittwald-Haupt-User (gesperrt für SSH-Gateway) | ja (aktiviert) |
dbu_dqgxag_1 | Aktiver App-User in settings.mittwald.php | ja |
SSH-Gateway-Pitfall
Der Deploy-SSH-User ssh-dpwyjd@a-q7fxvm landet auf IP 100.121.108.117 (Mittwald-SSH-Gateway), nicht auf dem PHP-App-Host. Konsequenz:
- Direktes
mysql-CLI via SSH schlägt fehl (Access denied) drushvia SSH funktioniert nur wenn der DB-User External-Access hatmw database mysql importschlägt mit EPIPE fehl (bekannter Bug in CLI v1.15.0)- Workaround für DB-Import:
mw database mysql port-forward+ lokaler Import via DDEV-Container
settings.mittwald.php — Struktur
Die Datei liegt in shared/ und wird per Deploy-Symlink in jeden Release eingehängt. Ein Template (ohne Credentials) liegt unter web/sites/example.settings.mittwald.php im Repo.
$databases['default']['default']- Mit
dbu_dqgxag_1-Credentials - Redis-Verbindung
- Host, Port, Interface = PhpRedis
- Redis-Service-Guard
if (class_exists('Drupal\redis\ClientFactory'))— schützt vor Bootstrap-Fehler beidrush site:installbevor das Redis-Modul geladen isttrusted_host_patterns- Für
p-nxm58l.project.space,www.solcom.de,solcom.de reverse_proxy- TRUE für Cloudflare-Edge
Pipeline-State (azure-pipelines.yml)
| Stage | Trigger | Status |
|---|---|---|
PR_Validation | PR auf main | aktiv (PHP-Lint, PHPCS, PHPStan, Theme-Build) |
Build | Push auf main | aktiv (Composer + npm, Tar-Artefakt) |
DeployTest | Push auf main | aktiv — Deploy nach Mittwald Staging + Smoke Test |
DeployProd | Tag v* | Placeholder — noch nicht konfiguriert |
Secrets in Variable Group solcom-mittwald-secrets-test
MITTWALD_API_TOKEN— Mittwald-API-Token für mw-CLI-ZugangMITTWALD_APP_ROOT_TEST—/home/p-nxm58l/html/stagingMITTWALD_APP_ID_TEST—61284ca9-0a65-495d-bda9-2edfe8bf26a1MITTWALD_SSH_USER_TEST—ssh-dpwyjd@a-q7fxvmMITTWALD_TEST_URL— Staging-URL für Smoke TestMITTWALD_SSH_PRIVATE_KEY_TEST— Deploy-Key (Secure File:solcom_azure_mittwald_deploy_key)
Offene Aufgaben
| # | Aufgabe | Prio |
|---|---|---|
| 1 | Document Root auf /current/web setzen (mStudio → Apps → staging → Konfiguration) | hoch |
| 2 | Domain p-nxm58l.project.space auf App zeigen lassen | hoch |
| 3 | Cronjobs einrichten (Drupal-Cron, ggf. drush cron via Mittwald-Cronjob) | mittel |
| 4 | Production-App + -Pipeline anlegen (nach Go-Live-Entscheidung) | später |
| 5 | mw database mysql import Bug reporten / auf neuere CLI-Version prüfen | low |
Re-Sync
- Zugang
- Login: https://studio.mittwald.de → Project
6709341f-37af-4ea7-a988-475dc49cecae— App-UUID:61284ca9-0a65-495d-bda9-2edfe8bf26a1 - Was prüfen?
- PHP-Version, DB-Users, Domain-Ziel, Cronjob-Status.
- Pipeline-Secrets
- Wenn sich Secrets ändern: Variable Group
solcom-mittwald-secrets-testin Azure DevOps aktualisieren.