grav avanzados

Configuración del entorno

Grav tiene la capacidad de extender sus potentes capacidades de configuración para diferentes entornos, permitiendo soportar configuraciones distintas para escenarios de desarrollo, staging y producción.

Hasta Grav 1.6 los entornos se almacenaban en la carpeta user/. Grav 1.7 mueve los entornos a user/env/ para facilitar su mantenimiento. Se recomienda encarecidamente que muevas todos los entornos a esta nueva ubicación en tus sitios existentes.

Configuración Automática de Entornos

Esto significa que puedes proporcionar tantos o tan pocos cambios de configuración por entorno como necesites. Un buen ejemplo de esto es la Barra de Depuración. Por defecto, la nueva Barra de Depuración está desactivada en el archivo principal system/config/system.yaml, y también en el archivo de sobreescritura del usuario:

user/config/system.yaml

Si quisieras activarla, puedes hacerlo fácilmente en tu archivo user/config/system.yaml, pero una mejor solución sería tenerla activada para tu entorno de desarrollo cuando se accede via localhost, pero desactivada en tu servidor de producción.

Esto puede lograrse fácilmente proporcionando una sobreescritura de esa configuración en el archivo:

user/env/localhost/config/system.yaml

donde localhost es el nombre de host del entorno (esto es lo que introduces en tu navegador, ej. http://localhost/tu-sitio) y tu archivo de configuración contiene:

debugger:
  enabled: true

De manera similar, puedes querer activar la canalización de recursos CSS, Link, JS y Módulos JS (combinación + minificación) solo para tu sitio de producción ([user/env/www.misitio.com/config/system.yaml):

assets:
  css_pipeline: true
  js_pipeline: true
  js_module_pipeline: true

Si tu servidor de producción fuera accesible via http://www.misitio.com entonces podrías también proporcionar configuración específica para ese sitio de producción con un archivo ubicado en user/env/www.misitio.com/config/system.yaml.

Por supuesto, no estás limitado a cambios en system.yaml, ¡puedes realmente proporcionar sobreescrituras para cualquier configuración de Grav en el site.yaml o incluso en cualquier configuración de plugin!

Si estás usando el Planificador de Grav, ten en cuenta que usa el entorno localhost y por lo tanto su configuración.

Sobreescrituras de Plugins

Para sobreescribir un archivo de configuración YAML de un plugin es simplemente el mismo proceso que sobreescribir un archivo regular. Si el archivo de configuración estándar está ubicado en:

user/config/plugins/email.yaml

Entonces puedes sobreescribirlo con una configuración que solo cambie las opciones específicas que quieres usar para pruebas locales:

[version=15,16]

user/localhost/config/plugins/email.yaml

[/version] [version=17]

user/env/localhost/config/plugins/email.yaml

[/version]

Con la configuración:

mailer:
  engine: smtp
  smtp:
    server: smtp.mailtrap.io
    port: 2525
    encryption: none
    user: '9a320798e65135'
    password: 'a13e6e27bc7205'

Sobreescrituras de Temas

Puedes sobreescribir temas de manera similar:

user/config/themes/antimatter.yaml

Puede ser sobreescrito para cualquier entorno, digamos algún sitio de producción (http://www.misitio.com):

user/env/www.misitio.com/config/themes/antimatter.yaml

Configuración de Entorno Basada en Servidor

A partir de Grav 1.7, es posible configurar el entorno usando la configuración del servidor. En este escenario, configuras variables de entorno desde el servidor o desde un script que se ejecute antes que Grav para seleccionar el entorno a usar.

La forma más simple de configurar el entorno es usando GRAV_ENVIRONMENT. El valor de GRAV_ENVIRONMENT debe ser un nombre de servidor válido con o sin dominio.

El siguiente ejemplo selecciona el entorno development para localhost:

<VirtualHost 127.0.0.1:80>
    ...

    SetEnv GRAV_ENVIRONMENT development
</VirtualHost>

Rutas Personalizadas de Entorno

A partir de Grav 1.7, también puedes cambiar la ubicación de los entornos. Hay dos posibilidades: o configuras una ubicación común para todos los entornos o los defines uno por uno.

Ubicación personalizada para todos los entornos

Si por alguna razón no estás contento con la ubicación por defecto user/env para tus entornos, puede cambiarse usando la variable de entorno GRAV_ENVIRONMENTS_PATH.

El valor de GRAV_ENVIRONMENTS_PATH debe ser una ruta existente bajo GRAV_ROOT. No uses barra diagonal final.

En el siguiente ejemplo, todos los entornos estarán ubicados en user/sites/GRAV_ENVIRONMENT, donde GRAV_ENVIRONMENT es detectado automáticamente o configurado manualmente en la configuración del servidor:

<VirtualHost 127.0.0.1:80>
...

    SetEnv GRAV_ENVIRONMENTS_PATH user://sites
</VirtualHost>

Ubicación personalizada para el entorno actual

A veces puede ser útil tener una ubicación personalizada para tu entorno.

El valor de GRAV_ENVIRONMENT_PATH debe ser una ruta existente bajo GRAV_ROOT. No uses barra diagonal final.

En el siguiente ejemplo, solo el entorno actual estará ubicado en user/development:

<VirtualHost 127.0.0.1:80>
...

    SetEnv GRAV_ENVIRONMENT_PATH user://development
</VirtualHost>

Nota que GRAV_ENVIRONMENT_PATH es independiente de GRAV_ENVIRONMENT, por lo que quizás también quieras configurar el nombre del entorno si no quieres que coincida automáticamente con el nombre de dominio actual.

Personalización Adicional

Los entornos pueden personalizarse mucho más allá de lo descrito en esta página.

Para más información, por favor continúa a la siguiente página: Configuración Multisitio.