Einführung
Beim Ausrollen einer Laravel-Anwendung in Produktion sind einige Vorbereitungen sinnvoll, damit sie möglichst effizient läuft. Dieser Leitfaden zeigt die wichtigsten Punkte für ein zuverlässiges Produktions-Deployment.Deployment-Ablauf
Server-Voraussetzungen
Laravel benötigt PHP 8.3 oder höher und die folgenden Erweiterungen:| Erweiterung | Beschreibung |
|---|---|
| Ctype | Zeichentyp-Prüfung |
| cURL | HTTP-Kommunikation |
| DOM | XML/HTML-DOM |
| Fileinfo | MIME-Typ-Erkennung |
| Filter | Datenfilter |
| Hash | Hashing |
| Mbstring | Multibyte-Strings |
| OpenSSL | Verschlüsselung |
| PCRE | Reguläre Ausdrücke |
| PDO | Datenbank |
| Session | Session-Handling |
| Tokenizer | PHP-Token |
| XML | XML-Verarbeitung |
Serverkonfiguration
Nginx
Für Nginx nutzen Sie folgende Konfiguration als Basis. Wichtig: Alle Anfragen anpublic/index.php weiterleiten.
Verschieben Sie index.php nicht in den Projekt-Root – sonst werden vertrauliche Dateien öffentlich.
FrankenPHP
FrankenPHP ist ein moderner, in Go geschriebener PHP-Server. Sie starten Ihre Laravel-Anwendung mit einem einzigen Befehl:Verzeichnisrechte
Laravel benötigt Schreibrechte aufbootstrap/cache und storage.
Sorgen Sie dafür, dass der Webserver-Prozess in diese Verzeichnisse schreiben kann.
Optimierung
Zur Produktions-Deployzeit sollten Sie Konfiguration, Events, Routen und Views cachen. Der Befehloptimize erledigt alles gebündelt.
Einzelne Optimierungsbefehle
optimize führt folgende Befehle aus – bei Bedarf können Sie sie einzeln nutzen.
| Befehl | Beschreibung |
|---|---|
php artisan config:cache | Konfigurationsdateien zusammenfassen und cachen |
php artisan event:cache | Event → Listener-Mapping cachen |
php artisan route:cache | Routen cachen |
php artisan view:cache | Blade-Views vorkompilieren |
Nach
config:cache darf env() nur noch innerhalb von Konfigurationsdateien aufgerufen werden.
Nach dem Cachen wird .env nicht mehr gelesen, sodass env() außerhalb null liefert.Dienste neu laden
Nach einem Deployment müssen langlaufende Dienste wie Queue-Worker, Laravel Reverb oder Laravel Octane den neuen Code laden – also neu starten.Bei Laravel Cloud erfolgt das grazile Reloaden aller Dienste automatisch – der
reload-Befehl entfällt.Debug-Modus
Die Optiondebug in config/app.php steuert, wie viel Fehlerinformation an Nutzer geht.
Standardmäßig richtet sich der Wert nach APP_DEBUG aus .env.
Health-Check-Route
Laravel bringt eine Health-Check-Route mit, die sich mit Uptime-Monitoren, Load Balancern oder Kubernetes verbindet. Standardmäßig gibt es den Endpunkt/up. Er antwortet mit 200, wenn die Anwendung ordnungsgemäß gestartet ist, andernfalls mit 500.
Der Pfad ist in bootstrap/app.php konfigurierbar:
Illuminate\Foundation\Events\DiagnosingHealth gefeuert, sodass Sie eigene Prüfungen (Datenbank, Cache) in Listenern ergänzen können.
Deployment mit Laravel Cloud oder Forge
Laravel Cloud
Suchen Sie eine vollständig verwaltete, automatisch skalierende Plattform, ist Laravel Cloud die Empfehlung. Eine für Laravel optimierte PaaS mit Managed Compute, DB, Cache und Object Storage. Sie wird vom Laravel-Team direkt getunt und integriert sich nahtlos.Laravel Forge
Wenn Sie Server selbst verwalten möchten, sich aber nicht mit dem Setup von Nginx, MySQL usw. befassen wollen, ist Laravel Forge praktisch. Forge erstellt Server bei DigitalOcean, Linode, AWS und Co. und installiert Nginx, MySQL, Redis, Memcached, Beanstalk automatisch.Nächste Schritte
Deployment — Offizielle Doku
Ausführliche und aktuelle Details zur Deployment-Konfiguration finden Sie in der offiziellen Dokumentation.