Linguaggio Francoforte, Germania

Fai il deploy di PHP su Nodion

Nodion riconosce un'app PHP dal suo composer.json. Il buildpack PHP installa le dipendenze con Composer e serve l'app con FrankenPHP da public/; in alternativa puoi eseguire php-fpm dietro nginx o Apache. L'app gira a Francoforte, accanto a un database MySQL o PostgreSQL gestito, se ti serve.

Fai il deploy su Nodion ›

da 1 EUR / mese

Fino a 15 € di credito di benvenuto alla registrazione

Riconosciuto da
composer.json nella base directory
Web server
FrankenPHP (predefinito), nginx o Apache con php-fpm
PHP
da 8.2 a 8.5, predefinita 8.3
Regione
EU Central (Francoforte)

Deploy di PHP passo dopo passo

  1. Aggiungi composer.json e fai il commit di composer.lock Nodion riconosce PHP dal composer.json. Un repository con solo un index.php non viene riconosciuto; se non hai ancora un composer.json, ne basta uno piccolo come questo. La build esegue composer install --no-dev --optimize-autoloader, quindi tutto ciò che serve all'app in esecuzione va in require, non in require-dev. Fai il commit di composer.lock, così la build installa le versioni che hai testato. composer.json
    {
      "require": {
        "php": "8.4.*"
      }
    }
  2. Metti i file pubblici in public/ FrankenPHP usa public/ come document root. Se manca, Nodion prende web/, e se mancano entrambe, la root del repository. Metti index.php e i tuoi asset in public/ e tieni vendor/, configurazione e codice sorgente accanto, così vengono serviti solo i file pensati per il web.
    composer.json
    composer.lock
    src/
    public/
      index.php
  3. Scegli il server web FrankenPHP è la scelta predefinita e non richiede configurazione. Per php-fpm dietro nginx o Apache httpd, aggiungi BP_PHP_SERVER con il valore nginx o apache nella scheda Environment e spunta Build. Apache legge anche i tuoi file .htaccess. Qualsiasi altro valore fa fallire la build.
  4. Crea l'app e collega un database Nella dashboard, crea un'applicazione dal tuo repository GitHub, GitLab, Bitbucket o Gitea, scegli il branch e la regione EU Central e lascia la strategia di build su Buildpacks. Poi crea un database MySQL o PostgreSQL nella stessa regione e collegalo nella scheda Environment: l'app riceve DATABASE_URL al deploy successivo, solo in fase di esecuzione. Contrassegna password e chiavi API come segrete.
  5. Esegui le migrazioni a ogni deploy Una riga release: in un Procfile viene eseguita una volta per ogni build, dopo la build e prima che parta la nuova versione. Se fallisce, il deploy si ferma e la versione in esecuzione resta online. Tieni lo strumento di migrazione, per esempio Doctrine Migrations o Phinx, in require. Procfile
    release: vendor/bin/doctrine-migrations migrate --no-interaction

Da sapere

  • Fissa la versione di PHPNodion legge prima .php-version, poi require.php in composer.json; senza nessuno dei due ottieni PHP 8.3. Un intervallo sceglie la release più recente compatibile, quindi con "^8.2" ottieni PHP 8.5. Per restare su una sola versione, scrivi 8.3 in .php-version o richiedi "8.3.*".
  • SymfonyNodion riconosce Symfony da bin/console più symfony.lock, esegue bin/console cache:warmup --env=prod durante la build e imposta APP_ENV=prod e APP_DEBUG=0 in fase di esecuzione. Aggiungi APP_ENV=prod anche con il flag Build, così gli script Composer eseguiti durante l'installazione non usano dev dal tuo .env. Nodion non esegue asset-map:compile; con AssetMapper, aggiungilo agli auto-scripts in composer.json. Per le build con Encore o Vite, usa un Dockerfile.
  • WorkerPer un worker delle code, aggiungi al Procfile una riga come worker: php bin/worker.php insieme a una riga web: esplicita, perché senza di essa la prima voce del Procfile diversa da release: diventa il comando predefinito. Il log di build mostra il comando di avvio predefinito; per FrankenPHP funziona web: frankenphp php-server --listen :$PORT --root public/. Poi aggiungi un processo chiamato worker senza porta nella scheda Processes.
  • Percorso dell'health checkIl traffico passa a una nuova release appena / risponde con 2xx o 3xx. Se / risponde con 401 o 404, imposta nelle impostazioni dell'app un percorso di health check che restituisca 200.

Cosa gestisce Nodion per te

  • Deploy senza downtime Fai push sul tuo branch e Nodion crea una nuova release. Il traffico passa alle nuove istanze solo quando superano l'health check; una release fallita lascia attiva quella in esecuzione. Le app con un volume locale invece si riavviano, perché il disco appartiene a una sola istanza.
  • Database accanto all'app PostgreSQL, pgvector, MySQL, Valkey e ClickHouse gestiti, nella stessa regione. I database collegati arrivano come DATABASE_URL, REDIS_URL o CLICKHOUSE_URL.
  • Anteprime per ogni pull request Attiva le anteprime: ogni pull request del tuo repository riceve un'app dedicata, con un proprio URL e database nuovi e vuoti, creata automaticamente o manualmente. Le pull request dai fork e quelle dei bot vengono ignorate.
  • Worker, cron job e scalabilità Esegui i worker come processi aggiuntivi della stessa app, pianifica i job nella scheda Cron e scala ogni processo fino a 16 istanze.
  • Fase di release Con i buildpack, la riga release: del Procfile viene eseguita a ogni nuova build. Le app con Dockerfile, così come i redeploy e i rollback a un'immagine precedente, usano un comando di release impostato sull'app stessa, che ha anche la precedenza sulla riga del Procfile. Nei siti statici, la fase di release gira in un'immagine che contiene solo i file generati dalla build.
  • Log e metriche Nella dashboard trovi log di build, release e runtime, oltre alle metriche di CPU, memoria, disco e rete per ogni istanza.
  • Domini e HTTPS Un hostname predefinito con HTTPS dal primo deploy; i tuoi domini ricevono i certificati in automatico.

Per approfondire

PHP su Nodion: domande e risposte

Mi serve un composer.json per un semplice sito PHP?

Sì. Nodion riconosce PHP solo dal composer.json; basta un file che richieda solo PHP. Metti in public/ i file PHP che vuoi servire.

Posso usare nginx o Apache al posto di FrankenPHP?

Sì. Imposta BP_PHP_SERVER=nginx o BP_PHP_SERVER=apache come variabile di build e Nodion esegue php-fpm dietro nginx o Apache httpd. Senza la variabile, l'app viene servita da FrankenPHP.

Quali versioni di PHP posso usare?

PHP 8.2, 8.3, 8.4 e 8.5, con 8.3 come predefinita. Fissane una in .php-version o in composer.json. Se chiedi una versione che Nodion non offre più, la build fallisce con un messaggio chiaro invece di passare a un'altra versione senza avvisarti.

Mi serve un Dockerfile per PHP?

No. Il buildpack PHP installa per te PHP, Composer e il server web. Se il tuo repository ha un Dockerfile, il modulo di creazione sceglie quella strategia e Nodion fa la build del Dockerfile al suo posto.

Dove gira la mia app PHP?

Nella regione EU Central a Francoforte, in Germania. La build, il registry, l'app e i suoi database, volumi, bucket, log e metriche restano in quella regione. L'API e il control plane di Nodion sono ospitati in Germania. Nodion GmbH ha sede a Stoccarda.

Posso usare PHP in modo conforme al GDPR?

Nodion offre le basi per farlo: Nodion GmbH ha sede a Stoccarda, in Germania; nella regione di Francoforte l'app, i suoi database e i volumi girano in Germania; puoi sottoscrivere il DPA (accordo sul trattamento dei dati, art. 28 GDPR) in formato elettronico nella dashboard. La conformità del tuo utilizzo dipende anche da come configuri e usi l'app.

Quanto costa l'hosting di PHP su Nodion?

Un'istanza dell'app costa da 1 EUR al mese. La configurazione mostrata nel riquadro costa 2 EUR al mese: App 2 EUR. I prezzi sono IVA esclusa e la fatturazione è al secondo. Puoi scegliere dimensioni più grandi o più istanze quando ti servono.

Posso usare un mio dominio per la mia app PHP?

Sì. Ogni app riceve un hostname predefinito con HTTPS. Aggiungi il tuo dominio nella scheda Domains dell'app; il certificato TLS viene emesso e rinnovato automaticamente.

Dai al tuo agente un cloud tutto suo.

Fino a 15 € di credito quando ti registri.

Continua con GitHub

oppure con l'email

Resta aggiornato.

Novità sul prodotto, niente spam. Puoi annullare l'iscrizione quando vuoi.