9.9. Gestión de configuración en Drupal. Activa, Sincronizar configuración, transferir configuraciones de DEV a LIVE.
La configuración en Drupal es la base para todos los ajustes de tipos de contenido, campos, formularios de configuración y variables. Con la ayuda de la configuración, podemos transferir cambios de un sitio a otro, desarrollar diferentes funcionalidades al mismo tiempo y sin interferencias entre sí.
Las configuraciones se pueden exportar a archivos YML y agregar al repositorio Git, de modo que puedas realizar commits de tus cambios en la configuración del sitio y transferirlos al entorno de desarrollo o producción. La idea de configuración en Drupal es similar a cómo funciona el módulo Features:
https://www.drupal.org/project/features
Solo que Features no está integrado con todos los módulos y no siempre era posible transferir todos los ajustes del sitio. La configuración en Drupal funciona con todos los ajustes y permite exportarlo todo a archivos.
Al instalarse, Drupal crea una carpeta para almacenar la configuración. Por defecto, es una carpeta con un nombre largo que se encuentra en sites/default/files
:
El nombre de la carpeta se genera aleatoriamente porque está en el directorio de archivos públicos, que tiene permisos 777. Un nombre tan largo evita que alguien pueda adivinarlo y descargar configuraciones confidenciales. Ya que la configuración puede contener accesos a API, Solr, SMTP, esta información debe mantenerse protegida. Podemos especificar la ruta de la carpeta de configuración en el archivo settings.php
:
$config_directories['sync'] = 'sites/default/files/config__RPFDnw0-VygzmxgHiXPoXGNKYmjVi3mDZmP5exZX8tRleV9jXG6ZECaPRaxekelYsMCF42HwA/sync';
La carpeta sync
se usará para transferir configuraciones entre sitios. Drupal almacena la configuración activamente en la base de datos, lo cual es más eficiente. Puedes consultar la tabla config
desde PhpMyAdmin o Adminer:
Allí se almacenan los arrays serializados de configuración.
Normalmente, la carpeta sync
se almacena fuera de sites/default/files
, ya que el directorio files
no se guarda en Git. Cambiamos la ruta a una carpeta dentro del proyecto:
$config_directories['sync'] = 'config/sync';
Ahora podemos agregar nuestras configuraciones al repositorio Git. También puedes exportar manualmente las configuraciones desde:
/admin/config/development/configuration/full/export
Configuración → Sincronización de configuración → Exportar
Al hacer clic en Exportar, Drupal genera un archivo comprimido con todas las configuraciones. Puedes agregar estos archivos a Git:
Sin embargo, la exportación manual no siempre funciona bien cuando hay muchas configuraciones. Es mejor usar Drush:
drush config-export
O usar Drupal Console:
drupal config:export
Para importar configuraciones:
drush config-import
o
drupal config:import
No es recomendable guardar configuraciones en la raíz del sitio. Es mejor moverlas fuera del sitio web y actualizar settings.php
:
$config_directories['sync'] = '../config/sync';
Mientras estudias Drupal, puedes dejar la carpeta sync
en la raíz del sitio.
Una vez que exportas las configuraciones y las agregas a Git, puedes importarlas en otro sitio. Por ejemplo, cambia el nombre del sitio en:
/admin/config/system/site-information
Luego visita la página de sincronización de configuración:
/admin/config/development/configuration
Drupal comparará la configuración activa (de la base de datos) con la configuración de la carpeta sync
y mostrará las diferencias. Si haces clic en "Importar todo", se cargarán las configuraciones sincronizadas como configuraciones activas en la base de datos. Así puedes aplicar tus cambios.