Devops With Laravel By Martin Joo -
When you push git push origin main , your code should test, build, deploy, and migrate without you logging into a server. If you are SSH'ing into a box to run composer update , you have lost the DevOps game.
Treat your infrastructure the way you treat your code: versioned, automated, and boring. Boring is stable. Stable is fast. Martin Joo writes about Laravel architecture and clean code. If you enjoyed this, stop fighting your server and start shipping. DevOps with Laravel by Martin Joo
# Typical Forge Deploy Script cd $site git pull origin $branch composer install --no-interaction --prefer-dist --optimize-autoloader --no-dev Maintenance mode (for zero-downtime? No. We'll fix this below) php artisan down --retry=60 || true Migrate php artisan migrate --force Clear caches php artisan optimize:clear php artisan config:cache php artisan event:cache php artisan route:cache php artisan view:cache Restart queue workers php artisan queue:restart Bring it back up php artisan up 2. The Enemy of Laravel: "php artisan down" That script above has a problem. php artisan down takes your site offline. In 2024, that is unacceptable. When you push git push origin main ,
Here is how you stop "deploying" like a junior and start "releasing" like a pro. If you are using FileZilla to upload files to a shared hosting server, stop reading this and fix that first. Modern Laravel DevOps requires a repeatable environment. Boring is stable
* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1 If you have multiple servers (load balancer), only run the scheduler on one server (usually the primary). Otherwise, your daily report will run 3 times. 5. Assets are not your server's problem Laravel Mix or Vite? Great. Running npm run prod on your production server is slow and requires Node.js installed on your PHP server.
DevOps isn't a job title. It's a set of practices. For a Laravel developer, that means treating your servers, queues, caches, and deploys as part of the codebase.