Hébergement Symfony
Symfony, déployé sans interruption
Connectez votre dépôt et poussez. Chaque déploiement installe les paquets Composer dans une nouvelle version, vide le cache, exécute vos migrations Doctrine et ne bascule qu’ensuite, pendant que Supervisor fait tourner vos workers Messenger sur le nouveau code.
Du dépôt à la production en trois étapes
- 1
Créez un serveur
Chez Hetzner Cloud, DigitalOcean, Vultr, Akamai, AWS ou Google Cloud, ou sur n’importe quel VPS Ubuntu 24.04. Choisissez PHP 8.1 à 8.5 et MySQL, MariaDB ou PostgreSQL ; Redis, Node.js et Supervisor sont fournis.
- 2
Créez un site Symfony
Choisissez le préréglage Symfony et votre dépôt sur GitHub, GitLab ou Bitbucket. Nginx sert
/publicvia PHP-FPM, et le site reçoit une adresseon-deploy.linkgratuite qui fonctionne immédiatement. - 3
Poussez
Un webhook déploie chaque push sur votre branche. La nouvelle version ne passe en ligne que si Composer, le cache et les migrations ont tous réussi.
Script de déploiement
Le script de déploiement Symfony par défaut
Du Bash simple, lancé avec set -e dans la nouvelle version, sous l’utilisateur du site. Les migrations ne s’exécutent que si votre projet contient un dossier migrations. Modifiez le script dans le navigateur pour ajouter vos propres étapes, comme asset-map:compile ou un build npm.
Utilisez $VIMONTO_PHP et $VIMONTO_COMPOSER au lieu de php et composer : le script suit ainsi la version de PHP du site quand vous la changez. $VIMONTO_BRANCH et $VIMONTO_COMMIT indiquent ce qui est déployé.
$VIMONTO_COMPOSER install --no-dev --no-interaction --prefer-dist --optimize-autoloader
$VIMONTO_PHP bin/console cache:clear --env=prod
if [ -d migrations ]; then
$VIMONTO_PHP bin/console doctrine:migrations:migrate --no-interaction --allow-no-migration --env=prod
fiPensé pour Symfony en production
Workers Messenger
Activez les workers Messenger et choisissez vos transports, comme
async scheduler_default, et de 1 à 20 processus. Supervisor exécutemessenger:consume, et chaque déploiement envoiemessenger:stop-workers.Rollback en quelques secondes
Les cinq versions les plus récentes restent sur le serveur. Revenir en arrière remet une version précédente en ligne sans rien reconstruire.
Un .env partagé
Rédigez le
.envde production sur la page Environnement. Il est stocké chiffré, lié dans chaque version et conservé avec un historique des 50 dernières versions.Paquets privés
Les identifiants des registres Composer et npm privés sont stockés chiffrés et utilisés uniquement pendant le build, via
COMPOSER_AUTHet une configuration npm temporaire.
Chaque déploiement, étape par étape
Suivez les phases Récupération, Build et En ligne pendant un déploiement, avec la sortie de chaque étape. Si une étape échoue, la version est écartée et le site en ligne ne change pas.

Questions sur l’hébergement Symfony
Où définir APP_ENV, APP_SECRET et DATABASE_URL ?
Sur la page Environnement du site. Le .env que vous y enregistrez est écrit sur le serveur, lié dans chaque version à la place du .env de votre dépôt, et survit aux déploiements comme aux rollbacks. Définissez APP_ENV=prod pour que les scripts Composer s’exécutent avec vos bundles de production.
Quelles versions de PHP puis-je utiliser ?
PHP 8.1 à 8.5. Installez plusieurs versions côte à côte sur un même serveur et choisissez-en une par site ; le script de déploiement la suit grâce à $VIMONTO_PHP.
Puis-je utiliser le Symfony Scheduler ?
Oui. Ajoutez son transport aux workers Messenger, par exemple async scheduler_default. Pour une simple commande cron, ajoutez plutôt une tâche planifiée sur le serveur.
Est-ce compatible avec API Platform ou un monorepo ?
Oui. Toute app Symfony avec un public/index.php fonctionne. Dans un monorepo, réglez le Répertoire racine du site sur le dossier de l’app, par exemple /api.
Combien ça coûte ?
Le forfait Gratuit couvre 1 serveur et 3 sites, avec toutes les fonctionnalités. Premium coûte 15 € par mois et par organisation, sans limites. Vos serveurs sont facturés par votre fournisseur cloud.
Pages associées
- DéploiementsDes versions sans interruption, le déploiement à chaque push, des URL de déploiement pour la CI et le rollback en un clic.
- PHPDes apps PHP natives avec plusieurs versions de PHP côte à côte et des réglages PHP-FPM ajustables.
- LaravelDes déploiements Laravel sans interruption, avec Horizon, Reverb, Pulse, les queues et le planificateur à portée d’interrupteur.
- Hetzner CloudDes serveurs en Allemagne, en Finlande, aux États-Unis et à Singapour, avec DNS et sauvegardes sur Object Storage.
Votre prochain déploiement pourrait être en ligne avant que votre café ne refroidisse.
Créez une organisation, connectez un serveur et poussez. C'est tout.