Aan de slag
Wanneer je een Laravel-applicatie naar een productieomgeving deployt, moet je die zo voorbereiden dat hij zo efficiënt mogelijk draait. Deze gids behandelt de belangrijkste punten om je productiedeploy betrouwbaar uit te voeren.Deployflow
Serververeisten
Het Laravel-framework heeft de volgende systeemvereisten. Je hebt PHP 8.3 of hoger nodig, plus de onderstaande PHP-extensies.Serverconfiguratie
Nginx
Als je Nginx gebruikt, neem dan het volgende configuratiebestand als basis. Het is belangrijk dat alle requests worden doorgestuurd naarpublic/index.php.
Verplaats index.php niet naar de projectroot: vertrouwelijke configuratiebestanden zouden dan publiek toegankelijk worden.
FrankenPHP
FrankenPHP is een moderne PHP-applicatieserver geschreven in Go. Met alleen het volgende commando start je een Laravel-applicatie:Maprechten
Laravel moet kunnen schrijven naar de mappenbootstrap/cache en storage.
Stel de rechten zo in dat de proceseigenaar van de webserver naar deze mappen kan schrijven.
Optimalisatie
Bij het deployen naar productie verbeter je de prestaties door configuratie, events, routes en views te cachen. Met het commandooptimize cache je alles in één keer.
optimize:clear om de cache te verwijderen.
Individuele optimalisatiecommando’s
optimize voert de volgende commando’s gebundeld uit. Je kunt ze indien nodig ook afzonderlijk uitvoeren.
Nadat je
config:cache hebt uitgevoerd, mag je de env()-functie alleen nog binnen configuratiebestanden aanroepen.
Na het cachen wordt het .env-bestand niet meer geladen; als je env() buiten configuratiebestanden aanroept, krijg je null terug.Services herladen
Na het deployen van een nieuwe versie moeten langlopende services zoals queue-workers, Laravel Reverb en Laravel Octane opnieuw worden gestart om de nieuwe code te gebruiken.Als je Laravel Cloud gebruikt, wordt het gracieus herladen van alle services automatisch afgehandeld en heb je het
reload-commando niet nodig.Debugmodus
Dedebug-optie in config/app.php bepaalt hoeveel foutinformatie aan gebruikers wordt getoond.
Standaard wordt de waarde van de omgevingsvariabele APP_DEBUG uit het .env-bestand gebruikt.
Healthcheck-route
Laravel heeft een ingebouwde healthcheck-route om de status van je applicatie te monitoren. Je kunt deze koppelen aan uptime-monitors, loadbalancers en orkestratiesystemen zoals Kubernetes. Standaard is er een/up-endpoint dat 200 teruggeeft als de applicatie correct is opgestart, en 500 als er tijdens het opstarten een exception is opgetreden.
Je kunt de URI aanpassen in bootstrap/app.php:
Illuminate\Foundation\Events\DiagnosingHealth afgevuurd,
zodat je in een listener aanvullende controles op de database of cache kunt implementeren.
Deployen met Laravel Cloud of Forge
Laravel Cloud
Zoek je een volledig managed, automatisch schalend deployplatform, dan is Laravel Cloud een aanrader. Het is een voor Laravel geoptimaliseerd PaaS dat managed compute, databases, caches en objectopslag biedt. Het wordt rechtstreeks door het Laravel-ontwikkelteam getuned en werkt naadloos samen met het framework.Laravel Forge
Wil je zelf je servers beheren, maar geen tijd steken in het opzetten van services zoals Nginx en MySQL, dan is Laravel Forge handig. Het maakt servers aan bij grote cloudproviders zoals DigitalOcean, Linode en AWS, en installeert en beheert automatisch tools zoals Nginx, MySQL, Redis, Memcached en Beanstalk.Volgende stappen
Deployment — officiële documentatie
In de officiële documentatie vind je de details van de nieuwste deployconfiguratie.