Aller au contenu
Vimonto Deploy

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. 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. 2

    Créez un site Symfony

    Choisissez le préréglage Symfony et votre dépôt sur GitHub, GitLab ou Bitbucket. Nginx sert /public via PHP-FPM, et le site reçoit une adresse on-deploy.link gratuite qui fonctionne immédiatement.

  3. 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é.

Script de déploiement — Symfony par défaut
$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
fi

Pensé 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écute messenger:consume, et chaque déploiement envoie messenger: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 .env de 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_AUTH et 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.

Un déploiement terminé dans Vimonto Deploy, avec ses phases Récupération, Build et En ligne, les détails du commit et le log de chaque étape

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.

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.