Pasar al contenido principal

Cómo traspasar Drupal 8 o 9 al entorno de producción

A pesar de que el módulo Backup and Migrate está pensado para facilitarnos las tareas relacionadas con copias de la base de datos y que con él podremos exportarlas importarlas o descargarlas; al momento de utilizarlo para traspasar nuestro Drupal de un entorno de desarrollo al de producción, nos podríamos encontrar con varios errores, principalmente si en nuestro Drupal tenemos instalados varios módulos o mucho contenido, el traspaso de tablas no funcionará.

Existen nuevas formas de conectar entornos utilizando la exportación de configuración, mediante Drush y repositorios, pero en mi experiencia personal, suele dar problemas a la hora de implementarlo, porque generalmente los Planes básicos de hosting e incluso, algunos Planes avanzados, no incluyen la memoria suficiente para ejecutar los comandos o permisos para poder implementar correctamente lo necesario.

Por esta razón, si haz desarrollado tu proyecto Drupal en un servidor local, y sólo quieres traspasarlo al entorno de producción sin que tengas que perder demasiado tiempo en averiguar cómo hacerlo, te presento los tres fundamentos que deberías saber para llevar a cabo el proceso con el mínimo esfuerzo. 

Requisitos a tomar en cuenta si quieres traspasar un Drupal al entorno de producción

  1. Traspasar todos los archivos a al carpeta pública del servidor de destino


         Lo primero que deberás hacer es comprimir la carpeta completa de tu proyecto drupal y subirla a tu servidor de producción, tomando en cuenta que la ubicación cambiará si haz realizado la instalación usando Composer o descargando el Drupal directamente de la página oficial.

         En la mayoría de los proveedores de hosting o alojamiento web, cuando contratamos el servicio de dominio + hosting, el nombre o dominio apunta  a la carpeta "public_html" o "html" y espera encontrar el archivo index.php para mostrar la web; en el caso de Drupal 8 y 9, si hemos realizado la instalación descargando el archivo directamente desde la Página oficial de drupal, entonces, sólo tendremos que copiar todo el contenido del Drupal dentro de la carpeta pública, donde estará este archivo index.php, pero si hemos optado por utilizar Composer para nuestro proyecto, que es la nueva recomendación para instalar Drupal a partir de la versión 8, nos encontraremos con que al carpeta principal ahora se encuentra dentro de "web", por lo que tendríamos que modificar la ruta  a la que apunta el dominio principal, para que se dirija a public_html/web
     
  2. Copiar la base de datos en producción


    Cómo ya sabrás, Drupal funciona al conectar los archivos físicos con la base de datos correspondiente. Así que para esto ocurra, una vez tengas todos los archivos de tu proyecto Drupal en el servidor de producción, sólo tendrías que importar la base de datos y modificar los parámetros de conexión en el archivo settings.php.

    Opción A Backup and Migrate:
         Si decides utilizar Backup and Migrate, tendrías que realizar una instalación nueva en el servidor de producción, utilizando los mismos archivos que haz copiado, asignándole la base de datos vacía y al terminar la instalación de producción, activas el módulo Backup and Migrate, configuras el archivo "/private" para que te funcione la copia de seguridad y lo siguiente sería exportar desde tu servidor de desarrollo e importarla en el de producción.

    Opción B Exportación Base de datos:
         Si el Drupal que haz desarrollado tiene varios módulos o demasiado contenido, es posible que el módulo Backup and Migrate no te permita realizar la importación, aunque suele funcionar la mayoría de las veces sin mayores inconvenientes. Sin embargo, también puedes exportar la base de datos de tu entorno local usando el siguiente comando desde tu consola 
     

    mysqldump -u usuario -p -q nombre_bbdd > bbdd.sql


    Esto te permitirá utilizar la opción --quick o -q para que MySQL exporte fila a fila en lugar de meter en buffer toda la tabla y agotar la memoria. Ver documentación.

    De esta forma al importarla en tu servidor de producción, no te dará errores de tiempo de ejecución o conexión.
     
  3. Actualizar settings.php:

         Ló último que deberás tener en cuenta, es que al pasar a un entorno de producción, necesariamente tendrás que modificar los detalles de acceso a la base de datos que están declarados en tu settings.php

               Cuando instalamos Drupal, el añadirá las líneas que conectan con la base de datos al final del archivo settings.php, deberías buscar en la parte inferior y encontrarás una líneas parecidas a las siguientes:

$databases['default']['default'] = array (
  'database' => 'midb',
  'username' => 'misuariodb',
  'password' => '1234567',
  'prefix' => '',
  'host' => 'localhost',
  'port' => '3306',
  'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
  'driver' => 'mysql',
);
$settings['config_sync_directory'] = 'sites/default/files/configurador856978854adfasdf4a44454/sync';

$settings['file_temp_path'] = 'sites/default/files/tmp';
$settings['file_private_path'] = 'sites/default/files/private';

          Las dos últimas líneas, son si quieres configurar la carpeta para archivos temporales y la de archivos privados dentro de tu servidor, puedes usar "../tmp" y "../private" para que las carpetas sean creadas por el servidor o por ti a nivel de la carpeta principal.

 

     NOTA: En el caso de instalaciones multisitio, tendrás que revisar el archivo "sites/sites.php", que es el que indica los diferentes dominios o subdominios con las carpetas a las que apunta cada instalación, deberías ver algo parecido a lo siguiente:

$sites['misito1.localhost'] = 'sitio1';
$sites['misitio2.localhost'] = 'sitio2';

     Econtrarás el archivo settings.php dentro de cada una de las carpetas especificadas, donde deberás actualizar los datos para que puedan conectarse en cada caso con la base de datos que le corresponde a cada sitio.