Magento 2 Experten — Hyvä Theme, Tailwind CSS & SEO aus einer Hand ›

Die API für Produktion vorbereiten

Die API für Produktion vorbereiten

~16 Min. Lesezeit Zuletzt aktualisiert am 8. August 2026

JEDES Geheimnis, das in DIESER Schulung als Platzhalter diente (MERCURE_JWT_SECRET, JWT-Schlüsselpaar, Datenbank-Zugangsdaten), MUSS vor einem PRODUKTIONS-Deployment ERSETZT werden.

Umgebungsvariablen für Produktion

.env.prod (Ausschnitt, NIEMALS committen)
APP_ENV=prod
APP_DEBUG=0
APP_SECRET=
DATABASE_URL="postgresql://prod_user:ECHTES_PASSWORT@db-prod-host:5432/aufgaben_manager"
MERCURE_JWT_SECRET=
CORS_ALLOW_ORIGIN='^https://aufgaben-manager\.example\.com$'

Achtung: CORS_ALLOW_ORIGIN DARF in Produktion NIEMALS ein Wildcard-Muster wie in der lokalen Entwicklung (Kapitel 8) sein – NUR die TATSÄCHLICHE Domain des Frontends gehört in diesen regulären Ausdruck.

JWT-Schlüssel für Produktion generieren

php bin/console lexik:jwt:generate-keypair --overwrite
# Die erzeugten Dateien (config/jwt/private.pem, public.pem) SICHER
# außerhalb der Versionskontrolle aufbewahren, z. B. über Secrets-Management

Den Produktions-Container bauen

Die api-platform-Distribution liefert BEREITS ein compose.prod.yaml MIT – ANDERS als das lokale compose.yaml (Kapitel 2) baut es EIN OPTIMIERTES, produktionsreifes FrankenPHP-Image OHNE Entwicklungswerkzeuge (Xdebug, Composer-Dev-Abhängigkeiten).

docker compose -f compose.yaml -f compose.prod.yaml build
docker compose -f compose.yaml -f compose.prod.yaml up -d

Migrationen und Cache in Produktion

docker compose exec php bin/console doctrine:migrations:migrate --no-interaction
docker compose exec php bin/console cache:warmup

Achtung: doctrine:fixtures:load aus Kapitel 15 gehört NIEMALS in Produktion – die Testdaten (45 Beispielprojekte) würden ECHTE Nutzerdaten ÜBERSCHREIBEN. Migrationen ALLEIN reichen für eine PRODUKTIONS-Datenbank aus.

HTTPS in Produktion

GENAU wie das lokale, SELBSTSIGNIERTE Zertifikat (Kapitel 2) NUR für die Entwicklung taugt, benötigt PRODUKTION ein ECHTES Zertifikat – Caddy/FrankenPHP (BEREITS Teil der Distribution) kann Let's-Encrypt-Zertifikate AUTOMATISCH beziehen, sobald eine ECHTE Domain konfiguriert ist.

Tipp: EIN .env.prod.local (analog zu .env.local aus Kapitel 8) ist der ÜBLICHE Ort für die TATSÄCHLICHEN Produktions-Secrets, AUSSERHALB der Versionskontrolle – Symfonys Secrets-Vault (bin/console secrets:set) ist die NOCH SICHERERE Alternative für SENSIBLE Werte.