🐙 Code deployen met Git
Repo clonen, Composer draaien, cache leegmaken en permissies goed zetten.
Git installeren en repo clonen
De eenvoudigste manier om code op je server te krijgen is via Git clone. Zorg dat je repo op GitHub staat en publiek is (of gebruik een deploy key voor private repos).
sudo apt install git -y git --version
cd /var/www git clone https://github.com/jouwusername/jouwrepo.git mijnapp
Na clonen staat jouw app in /var/www/mijnapp — precies de map die nginx verwacht.
git clone heb je geleerd in Git les 1. Het verschil hier: je kloont naar een server in plaats van naar je lokale machine.
Composer install uitvoeren
In productie gebruik je composer install met extra vlaggen voor veiligheid en snelheid. Nooit composer update in productie!
cd /var/www/mijnapp composer install --no-dev --optimize-autoloader --no-interaction
Installeert geen development-packages (PHPUnit, profiler). Kleiner en veiliger in productie.
Genereert een geoptimaliseerde class-map. Laadt klassen sneller op — essentieel in productie.
Stelt geen vragen — handig bij geautomatiseerde deploys of CI/CD pipelines.
composer update upgradet packages en kan breaking changes introduceren. Gebruik altijd composer install met het vastgepende composer.lock bestand.
Cache leegmaken en opwarmen
Symfony cacht routes, templates en configuratie. Na elke deploy moet je de cache legen en opnieuw opbouwen voor de productieomgeving.
php bin/console cache:clear --env=prod --no-debug php bin/console cache:warmup --env=prod
cache:clear verwijdert de cache, cache:warmup bouwt hem direct opnieuw op zodat de eerste bezoeker niet hoeft te wachten.
php bin/console assets:install public
php bin/console cache:clear ken je al van lokale ontwikkeling. In productie voeg je --env=prod --no-debug toe voor de juiste omgevingsinstellingen.
Permissies instellen
Symfony schrijft naar de var/ map (cache, logs). PHP-FPM draait als www-data en moet schrijfrechten hebben op die map.
sudo chown -R www-data:www-data /var/www/mijnapp/var sudo chmod -R 775 /var/www/mijnapp/var
sudo chown -R www-data:www-data /var/www/mijnapp/public sudo chmod -R 755 /var/www/mijnapp/public
Database-migraties uitvoeren
Als je Doctrine-migraties hebt, voer je die uit op de productiedatabase. Controleer altijd welke migraties worden uitgevoerd voordat je ze uitvoert.
php bin/console doctrine:migrations:status --env=prod
php bin/console doctrine:migrations:migrate --env=prod --no-interaction
mysqldump -u symfony_user -p symfony_db > backup_$(date +%Y%m%d).sql
Een migratie die mislukt halverwege kan data corrupt maken. Een backup kost 10 seconden.
Deploy-workflow samengevat
Dit is de deploy-volgorde die je elke keer herhaalt bij een update. Sla hem op als script voor automatisering.
#!/bin/bash cd /var/www/mijnapp # 1. Haal nieuwe code op git pull origin main # 2. Installeer/update dependencies composer install --no-dev --optimize-autoloader --no-interaction # 3. Cache legen php bin/console cache:clear --env=prod --no-debug # 4. Migraties uitvoeren php bin/console doctrine:migrations:migrate --env=prod --no-interaction # 5. Permissies herstellen sudo chown -R www-data:www-data var/ echo "Deploy voltooid!"
Je app staat nu op de server maar werkt nog niet goed — je .env voor productie ontbreekt nog. Dat doe je in les 6.
Kennischeck
Les 5 afronden
Ga door naar: .env en productieconfiguratie →