Zum Inhalt springen
Vimonto Deploy

Symfony Hosting

Symfony, deployt ohne Downtime

Verbinde dein Repository und pushe. Jeder Deploy installiert die Composer-Pakete in einem frischen Release, leert den Cache, führt deine Doctrine-Migrationen aus und schaltet erst dann um, während Supervisor deine Messenger-Worker auf dem neuen Code am Laufen hält.

In drei Schritten vom Repository in die Produktion

  1. 1

    Server erstellen

    Bei Hetzner Cloud, DigitalOcean, Vultr, Akamai, AWS oder Google Cloud oder auf jedem Ubuntu-24.04-VPS. Wähle PHP 8.1 bis 8.5 und MySQL, MariaDB oder PostgreSQL; Redis, Node.js und Supervisor sind mit dabei.

  2. 2

    Symfony-Site anlegen

    Wähle die Symfony-Vorlage und dein Repository bei GitHub, GitLab oder Bitbucket. Nginx liefert /public über PHP-FPM aus, und die Site bekommt eine kostenlose on-deploy.link-Adresse, die sofort funktioniert.

  3. 3

    Pushen

    Ein Webhook deployt jeden Push auf deinen Branch. Das neue Release geht erst live, wenn Composer, der Cache und die Migrationen alle erfolgreich waren.

Deploy-Skript

Das Standard-Deploy-Skript für Symfony

Reines Bash, das mit set -e im neuen Release als Benutzer der Site läuft. Migrationen laufen nur, wenn dein Projekt einen migrations-Ordner hat. Bearbeite das Skript im Browser, um eigene Schritte wie asset-map:compile oder einen npm-Build zu ergänzen.

Nutze $VIMONTO_PHP und $VIMONTO_COMPOSER statt php und composer, damit das Skript der PHP-Version der Site folgt, wenn du sie änderst. $VIMONTO_BRANCH und $VIMONTO_COMMIT verraten dir, was gerade deployt wird.

Deploy-Skript — Symfony-Standard
$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

Gebaut dafür, wie Symfony in Produktion läuft

  • Messenger-Worker

    Schalte die Messenger-Worker ein und wähle deine Transports, etwa async scheduler_default, sowie 1 bis 20 Prozesse. Supervisor führt messenger:consume aus, und jeder Deploy sendet messenger:stop-workers.

  • Rollbacks in Sekunden

    Die neuesten fünf Releases bleiben auf dem Server. Zurücksetzen macht ein früheres Release wieder live, ohne etwas neu zu bauen.

  • Eine gemeinsame .env

    Schreibe die Produktions-.env auf der Seite Umgebung. Sie wird verschlüsselt gespeichert, in jedes Release verlinkt und mit einem Verlauf der letzten 50 Versionen aufbewahrt.

  • Private Pakete

    Zugangsdaten für private Composer- und npm-Registries werden verschlüsselt gespeichert und nur während des Builds genutzt, über COMPOSER_AUTH und eine temporäre npm-Konfiguration.

Jeder Deploy, Schritt für Schritt

Verfolge die Phasen Abrufen, Build und Live, während ein Deploy läuft, mit der Ausgabe jedes Schritts. Schlägt ein Schritt fehl, wird das Release verworfen, und die Live-Site bleibt unverändert.

Ein abgeschlossener Deploy in Vimonto Deploy mit den Phasen Abrufen, Build und Live, den Commit-Details und dem Log jedes Schritts

Fragen zum Symfony Hosting

Wo setze ich APP_ENV, APP_SECRET und DATABASE_URL?

Auf der Seite Umgebung der Site. Die .env, die du dort speicherst, wird auf den Server geschrieben, anstelle der .env aus deinem Repository in jedes Release verlinkt und übersteht Deploys und Rollbacks. Setze APP_ENV=prod, damit die Composer-Skripte mit deinen Produktions-Bundles laufen.

Welche PHP-Versionen kann ich nutzen?

PHP 8.1 bis 8.5. Installiere mehrere Versionen nebeneinander auf einem Server und wähle pro Site eine aus; das Deploy-Skript folgt ihr über $VIMONTO_PHP.

Kann ich den Symfony Scheduler betreiben?

Ja. Füge seinen Transport zu den Messenger-Workern hinzu, zum Beispiel async scheduler_default. Für einen einfachen Cron-Befehl legst du stattdessen einen geplanten Job auf dem Server an.

Funktioniert es mit API Platform oder einem Monorepo?

Ja. Jede Symfony-App mit einer public/index.php funktioniert. In einem Monorepo setzt du das Stammverzeichnis der Site auf den Ordner der App, etwa /api.

Was kostet es?

Der kostenlose Tarif umfasst 1 Server und 3 Sites mit allen Funktionen. Premium kostet 15 € pro Monat und Organisation, ohne Grenzen. Deine Server rechnet dein Cloud-Anbieter ab.

Dein nächster Deploy ist live, bevor dein Kaffee fertig ist.

Erstelle eine Organisation, verbinde einen Server und pushe. Mehr nicht.