Lenguaje Fráncfort, Alemania

Despliega PHP en Nodion

Nodion reconoce una app PHP por su composer.json. El buildpack de PHP instala tus dependencias con Composer y sirve la app con FrankenPHP desde public/; si lo prefieres, php-fpm se ejecuta detrás de nginx o Apache. La app se ejecuta en Fráncfort, junto a una base de datos MySQL o PostgreSQL gestionada si la necesitas.

Desplegar en Nodion ›

desde 1 EUR / mes

Hasta 15 € de crédito de bienvenida al registrarte

Detectado por
composer.json en el Base directory
Servidor web
FrankenPHP (por defecto), nginx o Apache con php-fpm
PHP
de 8.2 a 8.5, por defecto 8.3
Región
EU Central (Fráncfort)

Despliega PHP paso a paso

  1. Añade composer.json y haz commit de composer.lock Nodion detecta PHP por el composer.json. Un repositorio que solo tiene un index.php no se detecta; si aún no tienes composer.json, basta con uno pequeño como este. La build ejecuta composer install --no-dev --optimize-autoloader, así que todo lo que la app necesita en tiempo de ejecución va en require, no en require-dev. Haz commit de composer.lock para que la build instale las versiones que has probado. composer.json
    {
      "require": {
        "php": "8.4.*"
      }
    }
  2. Guarda los archivos públicos en public/ FrankenPHP usa public/ como document root. Si no existe, Nodion usa web/, y si no existe ninguno de los dos, la raíz del repositorio. Pon index.php y tus assets en public/ y deja vendor/, la configuración y el código fuente al lado, para que solo se sirvan los archivos pensados para la web.
    composer.json
    composer.lock
    src/
    public/
      index.php
  3. Elige el servidor web FrankenPHP es la opción por defecto y no necesita configuración. Para usar php-fpm detrás de nginx o Apache httpd, añade BP_PHP_SERVER con el valor nginx o apache en la pestaña Environment y marca la casilla Build. Apache también lee tus archivos .htaccess. Con cualquier otro valor, la build falla.
  4. Crea la app y vincula una base de datos En el dashboard, crea una aplicación desde tu repositorio de GitHub, GitLab, Bitbucket o Gitea, elige la rama y la región EU Central, y deja la estrategia de build en Buildpacks. Después crea una base de datos MySQL o PostgreSQL en la misma región y vincúlala en la pestaña Environment: la app recibe DATABASE_URL en el siguiente despliegue, solo en tiempo de ejecución. Marca las contraseñas y las claves de API como secretas.
  5. Ejecuta las migraciones en cada despliegue Una línea release: en un Procfile se ejecuta una vez por build, después de la build y antes de que arranque la nueva versión. Si falla, el despliegue se detiene y la versión en ejecución sigue activa. Deja la herramienta de migraciones, por ejemplo Doctrine Migrations o Phinx, en require. Procfile
    release: vendor/bin/doctrine-migrations migrate --no-interaction

A tener en cuenta

  • Fija la versión de PHPNodion lee primero .php-version y después require.php en composer.json; si no hay ninguno de los dos, obtienes PHP 8.3. Un rango elige la versión más reciente que lo cumpla, así que con "^8.2" obtienes PHP 8.5. Para quedarte en una misma versión menor, escribe 8.3 en .php-version o exige "8.3.*".
  • SymfonyNodion reconoce Symfony por bin/console junto con symfony.lock, ejecuta bin/console cache:warmup --env=prod durante la build y define APP_ENV=prod y APP_DEBUG=0 en tiempo de ejecución. Añade también APP_ENV=prod con la casilla Build marcada, para que los scripts de Composer que se ejecutan durante la instalación no usen dev de tu .env. Nodion no ejecuta asset-map:compile; si usas AssetMapper, añádelo a los auto-scripts de composer.json. Para builds con Encore o Vite, usa un Dockerfile.
  • WorkersPara un worker de colas, añade al Procfile una línea como worker: php bin/worker.php junto con una línea web: explícita, porque sin ella la primera entrada del Procfile que no sea release: se convierte en el comando por defecto. El log de la build muestra el comando de arranque por defecto; para FrankenPHP funciona web: frankenphp php-server --listen :$PORT --root public/. Después añade en la pestaña Processes un proceso llamado worker sin puerto.
  • Ruta del health checkEl tráfico pasa a una nueva release en cuanto / responde con 2xx o 3xx. Si / responde con 401 o 404, define en los ajustes de la app una ruta de health check que devuelva 200.

Lo que Nodion gestiona por ti

  • Despliegues sin downtime Haz push a tu rama y Nodion construye una nueva release. El tráfico pasa a las nuevas instancias cuando superan el health check; si una release falla, la que está en marcha sigue activa. En cambio, las apps con un volumen local se reinician porque el disco pertenece a una sola instancia.
  • Bases de datos junto a la app PostgreSQL, pgvector, MySQL, Valkey y ClickHouse gestionados en la misma región. Al vincular una base de datos, sus datos de conexión llegan como DATABASE_URL, REDIS_URL o CLICKHOUSE_URL.
  • Previews por pull request Activa las previews: cada pull request de tu repositorio tendrá su propia app, con URL y bases de datos nuevas y vacías. Puedes crearla automáticamente o a mano. Se omiten las pull requests de forks y bots.
  • Workers, cron jobs y escalado Ejecuta workers como procesos adicionales de la misma app, programa tareas en la pestaña Cron y escala cada proceso hasta 16 instancias.
  • Paso de release Con buildpacks, una línea release: del Procfile se ejecuta con cada nueva build. Las apps con Dockerfile, así como los redeploys o rollbacks a una imagen anterior, usan un comando de release definido en la propia app, que además tiene prioridad sobre la línea del Procfile. En los sitios estáticos, el paso de release se ejecuta en una imagen que solo contiene los archivos generados por la build.
  • Logs y métricas Logs de build, release y runtime, además de métricas de CPU, memoria, disco y red de cada instancia, en el dashboard.
  • Dominios y HTTPS Un nombre de host predeterminado con HTTPS desde el primer despliegue; tus propios dominios reciben certificados automáticamente.

Para seguir leyendo

PHP en Nodion: preguntas y respuestas

¿Necesito un composer.json para un sitio PHP sencillo?

Sí. Nodion detecta PHP solo por el composer.json; basta con un archivo que no pida nada más que PHP. Pon en public/ los archivos PHP que quieras servir.

¿Puedo usar nginx o Apache en lugar de FrankenPHP?

Sí. Define BP_PHP_SERVER=nginx o BP_PHP_SERVER=apache como variable de build y Nodion ejecuta php-fpm detrás de nginx o Apache httpd. Sin esa variable, FrankenPHP sirve la app.

¿Qué versiones de PHP puedo usar?

PHP 8.2, 8.3, 8.4 y 8.5, con 8.3 por defecto. Fija una en .php-version o en composer.json. Si pides una versión que Nodion ya no ofrece, la build falla con un mensaje claro en lugar de cambiar de versión sin avisar.

¿Necesito un Dockerfile para PHP?

No. El buildpack de PHP instala por ti PHP, Composer y el servidor web. Si tu repositorio tiene un Dockerfile, el formulario de creación elige esa estrategia y Nodion hace la build con el Dockerfile.

¿Dónde se ejecuta mi app de PHP?

En la región EU Central, en Fráncfort (Alemania). La build, el registry, la app y sus bases de datos, volúmenes, buckets, logs y métricas permanecen en esa región. La API y el plano de control de Nodion están alojados en Alemania. Nodion GmbH tiene su sede en Stuttgart.

¿Puedo usar PHP conforme al RGPD?

Nodion te ofrece las bases para ello: Nodion GmbH tiene su sede en Stuttgart (Alemania); en la región de Fráncfort, la app, sus bases de datos y sus volúmenes se ejecutan en Alemania. Puedes formalizar electrónicamente el DPA (contrato de encargo del tratamiento, art. 28 del RGPD) en el dashboard. Que tu uso cumpla el RGPD también depende de cómo configures y uses la app.

¿Cuánto cuesta ejecutar PHP en Nodion?

Una instancia de app cuesta desde 1 EUR al mes. La configuración del recuadro de costes cuesta 2 EUR al mes: App 2 EUR. Los precios no incluyen IVA y la facturación es por segundo. Puedes elegir tamaños mayores o más instancias cuando lo necesites.

¿Puedo usar mi propio dominio para mi app de PHP?

Sí. Cada app recibe un nombre de host predeterminado con HTTPS. Añade tu propio dominio en la pestaña Domains de la app; el certificado TLS se emite y se renueva automáticamente.

Dale a tu agente un cloud.

Hasta 15 € de crédito al registrarte.

Continuar con GitHub

o con tu email

Mantente al día.

Novedades del producto, sin spam. Puedes darte de baja cuando quieras.