Vai al contenuto
Vimonto Deploy

Hosting Symfony

Symfony, distribuito senza downtime

Collega il tuo repository e fai push. Ogni deploy installa i pacchetti Composer in una release nuova, svuota la cache, esegue le migrazioni Doctrine e solo allora passa alla nuova versione, mentre Supervisor tiene attivi i worker di Messenger sul nuovo codice.

Dal repository alla produzione in tre passaggi

  1. 1

    Crea un server

    Su Hetzner Cloud, DigitalOcean, Vultr, Akamai, AWS o Google Cloud, oppure su qualsiasi VPS Ubuntu 24.04. Scegli PHP da 8.1 a 8.5 e MySQL, MariaDB o PostgreSQL; Redis, Node.js e Supervisor sono inclusi.

  2. 2

    Crea un sito Symfony

    Scegli il preset Symfony e il tuo repository su GitHub, GitLab o Bitbucket. Nginx serve /public tramite PHP-FPM e il sito riceve un indirizzo gratuito on-deploy.link che funziona subito.

  3. 3

    Fai push

    Un webhook fa il deploy di ogni push sul tuo branch. La nuova release va online solo quando Composer, la cache e le migrazioni sono andati tutti a buon fine.

Script di deploy

Lo script di deploy predefinito per Symfony

Semplice Bash che gira con set -e nella nuova release, con l'utente del sito. Le migrazioni partono solo se il progetto ha una cartella migrations. Modifica lo script dal browser per aggiungere i tuoi passaggi, come asset-map:compile o una build npm.

Usa $VIMONTO_PHP e $VIMONTO_COMPOSER al posto di php e composer, così lo script segue la versione di PHP del sito quando la cambi. $VIMONTO_BRANCH e $VIMONTO_COMMIT ti dicono cosa si sta distribuendo.

Script di deploy — Symfony predefinito
$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

Pensato per come Symfony gira in produzione

  • Worker di Messenger

    Attiva i worker di Messenger e scegli i tuoi transport, come async scheduler_default, e da 1 a 20 processi. Supervisor esegue messenger:consume e ogni deploy invia messenger:stop-workers.

  • Rollback in pochi secondi

    Le cinque release più recenti restano sul server. Rollback rimette online una release precedente senza ricompilare nulla.

  • Un .env condiviso

    Scrivi il .env di produzione nella pagina Ambiente. Viene salvato cifrato, collegato in ogni release e conservato con una cronologia delle ultime 50 versioni.

  • Pacchetti privati

    Le credenziali per i registry privati di Composer e npm vengono salvate cifrate e usate solo durante la build, tramite COMPOSER_AUTH e una configurazione npm temporanea.

Ogni deploy, passo dopo passo

Segui le fasi Recupera, Build e Live mentre un deploy è in corso, con l'output di ogni passaggio. Se un passaggio fallisce, la release viene scartata e il sito online non cambia.

Un deploy completato in Vimonto Deploy con le fasi Recupera, Build e Live, i dettagli del commit e il log di ogni passaggio

Domande sull'hosting Symfony

Dove imposto APP_ENV, APP_SECRET e DATABASE_URL?

Nella pagina Ambiente del sito. Il .env che salvi lì viene scritto sul server, collegato in ogni release al posto del .env del repository e sopravvive a deploy e rollback. Imposta APP_ENV=prod, così gli script di Composer girano con i bundle di produzione.

Quali versioni di PHP posso usare?

Da PHP 8.1 a 8.5. Installa più versioni affiancate sullo stesso server e scegline una per sito; lo script di deploy la segue tramite $VIMONTO_PHP.

Posso usare Symfony Scheduler?

Sì. Aggiungi il suo transport ai worker di Messenger, per esempio async scheduler_default. Per un semplice comando cron, aggiungi invece un'attività pianificata sul server.

Funziona con API Platform o con un monorepo?

Sì. Qualsiasi app Symfony con un public/index.php funziona. In un monorepo, imposta la Directory root del sito sulla cartella dell'app, come /api.

Quanto costa?

Il piano gratuito comprende 1 server e 3 siti con tutte le funzionalità. Premium costa 15 € al mese per organizzazione, senza limiti. I tuoi server li fattura il tuo provider cloud.

Il tuo prossimo deploy potrebbe essere online prima che finisca il caffè.

Crea un’organizzazione, collega un server e fai push. Tutto qui.