Hero

Tips para actualizar Drupal 8 a Drupal 9!

Julio 04, 2022

Diana Casanova
Drupal

Este artículo es una guía para aquellas personas que necesitan actualizar Drupal 8 a 9. A lo largo de este documento encontrarán ciertos tips o consejos que les serán de gran ayuda para ejecutar el proceso de actualización.

Como todos ya sabemos D8 depende de Symfony 3, el cual terminó su vida útil en noviembre del 2021 y por lo tanto D8 tuvo soporte hasta el 2 de Noviembre del 2021. Pero gracias al arduo trabajo de la comunidad Drupalera en Junio del 2021 se lanzó Drupal 8.9 que nos permite saltar a D9 de una manera más sencilla.

Consideraciones iniciales

Antes de empezar hay detalles que debemos considerar:

  • Realizar un backup de nuestro sitio y base de datos.
  • Revisar los requerimientos técnicos para la instalación de Drupal 9 https://www.drupal.org/docs/system-requirements
  • Comprobar que D8 tenga la última actualización disponible instalada.

Upgrade paso a paso

Una vez que hemos realizado los pasos anteriores es hora de empezar con nuestro upgrade:

  1. Instalar el modulo ✨ Status Upgrade
    composer require drupal/upgrade_status
  1. Instalar el modulo ✨ Upgrade Rector
	composer require drupal/upgrade_rector

Tip 1: Crea un documento que te sirva de guía para poder registrar toda la información importante del proceso.

  1. Revisar el informe generado por el módulo Status Upgrade /admin/reports/upgrade-status

upgrade status

Tip 2: En esta URL pueden verificar la lista de módulos deprecados y su estatus actual.

  1. Agregar al reporte los módulos contribuidos instalados que requieren actualización.

Tip 3: En este punto debemos tener creado el Reporte que menciono en el Tip 1, ya que empezaremos a agregar la información que nos permitirá seguir un orden y no olvidar los detalles.

  1. Agregar al reporte los módulos contribuidos y personalizados que no están instalados pero requieren actualización.

Tip 4: Los módulos que ya no serán utilizados en el proyecto deben ser eliminados, pero debemos tener en cuenta que si estamos actualizando un multisite muchos de los módulos deshabilitados en el sitio que trabajamos pueden estar habilitados para otro sitio por lo que es preferible actualizarlos.

  1. Instalar los módulos requeridos por el Status upgrade, estos módulos complementarán la actualización.
	composer require drupal/composer_deploy
	composer require mglaman/drupal-check --dev
  1. Generar el reporte de Upgrade rector, este reporte se puede generar de las siguientes maneras:
    • Chequear todos los módulos en el módulo de Status upgrade y al final de la página dar click sobre el botón Scan selected. Esto mostrará en ese mismo reporte una columna donde nos indican los problemas que tiene cada módulo y su referencia.
    • Ir a /admin/reports/upgrade-rector donde podemos escoger el módulo que queremos revisar y Drupal nos mostrará el resultado. (En muchas ocasiones este método particularmente me ha fallado pero ustedes pueden intentarlo)
    • Correr en su consola el siguiente comando que les presentará toda la lista de problemas existentes:
		drupal-check -ad project/modules
  1. Agregar los resultados del reporte del punto 7 en el reporte general para contar con toda la información inicial de nuestro sitio.

Tip 5: Empezar siempre a corregir los errores que nos devuelve el Status upgrade en la sección general; es decir versiones de PHP, Drush, Mysql, etc.

  1. Actualizar los módulos y temas contribuídos.

Tip 6: Verifica los requerimientos para actualizar el tema existente en tu sitio, existen temas como el de Acquia site studio que deben seguir un proceso particular.

  1. Actualizar nuestros módulos personalizados con las recomendaciones que nos indica el Upgrade rector.

Tip 6: Instalar la herramienta de validación PHPCS en nuestro editor de preferencia. composer global require squizlabs/php_codesniffer

  1. Verificar por medio de phpcs si todos los cambios ejecutados nos dan como resultado un archivo valido.
  2. Dar accesos temporales a las carpetas:
   chmod 777 web/sites/default
   chmod 666 web/sites/default/*settings.php
   chmod 666 web/sites/default/*services.yml
  1. Actualizar el core a D9 y todas sus dependencias:

Tip 7: Utilizar —no-update al final del comando de actualización permite que al momento de actualizar no se genere una referencia circular, sino que todas las dependencias y referencias se ejecuten de forma correcta.

	composer require 'drupal/core-recommended:^9' 'drupal/core-composer-scaffold:^9' 'drupal/core-project-message:^9' --update-with-dependencies --no-update
  1. Si tenemos instalado drupal/core-dev debemos ejecutar lo siguiente:
    composer require 'drupal/core-dev:^9' --dev --update-with-dependencies --no-update
  1. Ejecutar el comando de actualización:
	composer update

Tip 8: Si obtenemos un error en el proceso por algún módulo incompatible revisar la lista que mencioné en el Tip 2 y aplicar el parche correspondiente.

  1. Luego de que la actualización se realice exitosamente, debemos correr el comando para la actualización de la base. Para lo cual tenemos dos formas:
    • Desde el navegador con el path /update.php
    • Por consola con el comando Drush:
      	drush updatedb
  2. Cuando termine la actualización de la base, debemos restaurar los permisos de las carpetas:
	chmod 755 web/sites/default
	chmod 644 web/sites/default/*settings.php
	chmod 644 web/sites/default/*services.yml
  1. Verificamos que nuestros sitio se encuentra actualizado a ✨ D9✨

Debemos recordar que cada upgrade es diferente ya que depende de los componentes del sitio, pero los pasos mencionados en este blog nos dan una guía generalizada de cómo realizar el proceso y los aspectos a considerar.

Tip 9: Acudir a foros de la comunidad Drupalera donde encontrarás a otras personas que han presentado el mismo problema o pueden ayudarte a resolver a tu inconveniente.

Recibe consejos y oportunidades de trabajo 100% remotas y en dólares de weKnow Inc.

CONTACTS

Logo

Santa Ana, San Jose

+1 703 831 3307

yes@weknowinc.com

Contact us

Follow Us

7Sabores® y SieteSabores® son marcas registradas por Ingeniarte Consultores S.A. Todos los derechos reservados 2022.