Sprache Frankfurt, Deutschland

PHP auf Nodion deployen

Nodion erkennt eine PHP-App an ihrer composer.json. Das PHP-Buildpack installiert deine Dependencies mit Composer und liefert die App mit FrankenPHP aus public/ aus; auf Wunsch läuft stattdessen php-fpm hinter nginx oder Apache. Die App läuft in Frankfurt, bei Bedarf neben einer Managed MySQL- oder PostgreSQL-Datenbank.

Auf Nodion deployen ›

ab 1 EUR / Monat

Bis zu 15 € Guthaben beim Registrieren

Erkannt an
composer.json im Base Directory
Webserver
FrankenPHP (Standard), nginx oder Apache mit php-fpm
PHP
8.2 bis 8.5, Standard 8.3
Region
EU Central (Frankfurt)

PHP Schritt für Schritt deployen

  1. composer.json anlegen und composer.lock committen Nodion erkennt PHP an der composer.json. Ein Repository mit nur einer index.php wird nicht erkannt; hast du noch keine composer.json, reicht eine kleine wie diese. Der Build führt composer install --no-dev --optimize-autoloader aus, alles, was die App zur Laufzeit braucht, gehört also in require, nicht in require-dev. Committe die composer.lock, dann installiert der Build genau die Versionen, die du getestet hast. composer.json
    {
      "require": {
        "php": "8.4.*"
      }
    }
  2. Öffentliche Dateien in public/ ablegen FrankenPHP nutzt public/ als Document Root. Gibt es das Verzeichnis nicht, nimmt Nodion web/, und fehlen beide, das Wurzelverzeichnis des Repositorys. Leg index.php und deine Assets in public/ und lass vendor/, Konfiguration und Quellcode daneben liegen, damit nur ausgeliefert wird, was ins Web gehört.
    composer.json
    composer.lock
    src/
    public/
      index.php
  3. Webserver wählen FrankenPHP ist der Standard und braucht keine Einrichtung. Für php-fpm hinter nginx oder Apache httpd legst du auf dem Tab Environment BP_PHP_SERVER mit dem Wert nginx oder apache an und setzt das Häkchen Build. Apache liest dann auch deine .htaccess-Dateien. Jeder andere Wert lässt den Build scheitern.
  4. App anlegen und Datenbank anhängen Lege im Dashboard eine Application aus deinem GitHub-, GitLab-, Bitbucket- oder Gitea-Repository an, wähle Branch und Region EU Central und lass die Build-Strategie auf Buildpacks. Dann legst du eine MySQL- oder PostgreSQL-Datenbank in derselben Region an und hängst sie auf dem Tab Environment an: Die App bekommt beim nächsten Deploy DATABASE_URL, und zwar nur zur Laufzeit. Passwörter und API-Keys markierst du als Secret.
  5. Migrationen bei jedem Deploy ausführen Eine release:-Zeile in einer Procfile läuft bei jedem Build einmal, nach dem Build und bevor die neue Version startet. Scheitert sie, stoppt der Deploy und die laufende Version bleibt live. Das Migrations-Tool, etwa Doctrine Migrations oder Phinx, gehört in require. Procfile
    release: vendor/bin/doctrine-migrations migrate --no-interaction

Gut zu wissen

  • PHP-Version pinnenNodion liest zuerst .php-version, dann require.php aus der composer.json; ohne beides bekommst du PHP 8.3. Ein Bereich nimmt das neueste passende Release, "^8.2" landet also bei PHP 8.5. Willst du auf einer Version bleiben, schreib 8.3 in die .php-version oder verlange "8.3.*".
  • SymfonyNodion erkennt Symfony an bin/console plus symfony.lock, führt im Build bin/console cache:warmup --env=prod aus und setzt zur Laufzeit APP_ENV=prod und APP_DEBUG=0. Leg APP_ENV=prod zusätzlich mit dem Häkchen Build an, damit die Composer-Skripte während der Installation nicht mit dev aus deiner .env laufen. asset-map:compile führt Nodion nicht aus; mit AssetMapper ergänzt du es in den auto-scripts der composer.json. Für Builds mit Encore oder Vite nimmst du ein Dockerfile.
  • WorkerFür einen Queue-Worker ergänzt du die Procfile um eine Zeile wie worker: php bin/worker.php und eine ausdrückliche web:-Zeile, denn ohne sie wird der erste Procfile-Eintrag außer release: zum Standardbefehl. Den Standard-Startbefehl zeigt das Build-Log; für FrankenPHP passt web: frankenphp php-server --listen :$PORT --root public/. Dann legst du auf dem Tab Processes einen Prozess worker ohne Port an.
  • Health-Check-PfadDer Traffic wechselt auf ein neues Release, sobald / mit 2xx oder 3xx antwortet. Antwortet / mit 401 oder 404, trag in den App-Einstellungen einen Health-Check-Pfad ein, der 200 liefert.

Was Nodion für dich betreibt

  • Deploys ohne Downtime Push auf deinen Branch und Nodion baut ein neues Release. Der Traffic wechselt erst, wenn die neuen Instanzen ihren Health Check bestehen; ein fehlgeschlagenes Release lässt das laufende stehen. Apps mit lokalem Volume starten stattdessen neu, weil die Disk zu einer Instanz gehört.
  • Datenbanken neben der App Managed PostgreSQL, pgvector, MySQL, Valkey und ClickHouse in derselben Region. Angehängte Datenbanken kommen als DATABASE_URL, REDIS_URL oder CLICKHOUSE_URL in die App.
  • Previews pro Pull Request Schalte Previews ein, und Pull Requests aus deinem Repository bekommen eine eigene App mit eigener URL und frischen, leeren Datenbanken, automatisch oder per Hand angelegt. Forks und Bot-Pull-Requests werden übersprungen.
  • Worker, Cron Jobs und Skalierung Worker laufen als weitere Prozesse derselben App, Jobs planst du auf dem Tab Cron, und jeden Prozess skalierst du auf bis zu 16 Instanzen.
  • Release-Schritt Mit Buildpacks läuft eine release:-Zeile in der Procfile bei jedem neuen Build. Dockerfile-Apps sowie Redeploys und Rollbacks auf ein früheres Image nutzen einen Release Command, der an der App selbst gesetzt ist; er hat auch Vorrang vor der Procfile-Zeile. Bei statischen Sites läuft ein Release-Schritt in einem Image, das nur die gebauten Dateien enthält.
  • Logs und Metriken Build-, Release- und Laufzeit-Logs sowie CPU-, Speicher-, Disk- und Netzwerk-Metriken für jede Instanz im Dashboard.
  • Domains und HTTPS Ein Default-Hostname mit HTTPS ab dem ersten Deploy; deine eigenen Domains bekommen automatisch Zertifikate.

Weiterlesen

PHP auf Nodion: Fragen und Antworten

Brauche ich eine composer.json für eine einfache PHP-Seite?

Ja. Nodion erkennt PHP nur an der composer.json; eine Datei, die nur PHP verlangt, reicht. Die PHP-Dateien, die ausgeliefert werden sollen, legst du in public/.

Kann ich nginx oder Apache statt FrankenPHP nutzen?

Ja. Setz BP_PHP_SERVER=nginx oder BP_PHP_SERVER=apache als Build-Variable, dann betreibt Nodion php-fpm hinter nginx oder Apache httpd. Ohne die Variable liefert FrankenPHP die App aus.

Welche PHP-Versionen kann ich nutzen?

PHP 8.2, 8.3, 8.4 und 8.5, Standard ist 8.3. Pinne eine davon in .php-version oder in der composer.json. Verlangst du eine Version, die Nodion nicht mehr anbietet, scheitert der Build mit einer klaren Meldung, statt still zu wechseln.

Brauche ich ein Dockerfile für PHP?

Nein. Das PHP-Buildpack installiert PHP, Composer und den Webserver für dich. Liegt ein Dockerfile im Repository, wählt das Formular beim Anlegen diese Strategie, und Nodion baut stattdessen das Dockerfile.

Wo läuft meine PHP-App?

In der Region EU Central in Frankfurt. Build, Registry, die App und ihre Datenbanken, Volumes, Buckets, Logs und Metriken bleiben in dieser Region, API und Control Plane von Nodion werden in Deutschland gehostet. Die Nodion GmbH hat ihren Sitz in Stuttgart.

Kann ich PHP DSGVO-konform betreiben?

Nodion schafft die Voraussetzungen dafür: Die Nodion GmbH hat ihren Sitz in Stuttgart, in der Region Frankfurt laufen App, Datenbanken und Volumes in Deutschland, und den Auftragsverarbeitungsvertrag (AVV) nach Art. 28 DSGVO schließt du im Dashboard elektronisch ab. Ob dein Einsatz DSGVO-konform ist, hängt auch davon ab, wie du die App konfigurierst und nutzt.

Was kostet PHP-Hosting auf Nodion?

Eine App-Instanz gibt es ab 1 EUR im Monat. Das Setup im Kostenkasten kostet 2 EUR im Monat: App 2 EUR. Preise sind netto, Abrechnung pro Sekunde, größere Varianten oder mehr Instanzen wählst du jederzeit.

Kann ich eine eigene Domain für meine PHP-App nutzen?

Ja. Jede App bekommt einen Default-Hostnamen mit HTTPS. Deine eigene Domain nimmst du auf dem Tab Domains dazu, das TLS-Zertifikat wird automatisch ausgestellt und erneuert.

Gibt es Support auf Deutsch?

Ja. Nodion ist ein deutsches Unternehmen mit Sitz in Stuttgart, der Support antwortet auf Deutsch und auf Englisch.

Gib deinem Agenten eine Cloud.

Bis zu 15 € Guthaben beim Registrieren.

Weiter mit GitHub

oder per E-Mail

Bleib auf dem Laufenden.

Produktnews, kein Spam. Jederzeit abbestellen.