Drupal está en constante evolución e mellora, e por iso teremos que actualizar periodicamente de versión. Neste exemplo explico como migrar de Drupal 8 á versión 9 de maneira bastante sinxela. Pero iso non quita que poden aparecer problemas e teremos que completar este método xenérico coa información que atopamos na rede. Ao gran e ánimo!

Paso 1. O primeiro é facer unha copia de seguridade na máquina orixe

No caso de Digital Ocean, dispoñemos dunha magnífica ferramenta para facer unha copia de seguridade. Entramos na configuración do droplet e pinchamos en Snapshots

 

E pinchamos en Take live snapshot, despois de darlle o nome desexado

Se algo sae mal no proceso de migración, sempre podemos restaurar a versión orixinal pinchando en Restore Droplet

Paso 2. Instalación de Composer e Drush

Podes consultar como se instala aquí: https://blog.atio.es/node/444

Paso 3. Instalación do módulo upgrade_status

Instalamos o módulo upgrade_status. Esta utilidade serve para indicarnos se os módulos que temos instalados no Drupal 8.0 non compatibles ou non na versión 9.0. Sen embargo para que este módulo funcione estamos obrigados a cambiar o core do Drupal que estamos empregando por unha versión de desarrollo, dev. Sen embargo esta aplicación é útil neste caso pois o salto entre unha versión e a outra é moi importante, pero nas seguintes actualizacións prescindiremos do upgrade_status.

a. Descargamos a versión 8.9.x-dev e descomprimímola. Podemos atopala na web drupal.org

wget https://ftp.drupal.org/files/projects/drupal-8.9.x-dev.zip

unzip drupal-8.9.x-dev.zip

b. Do cartafol onde teñamos aloxada a nosa páxina Drupal borramos o cartafoles vendor e core así como todos os ficheiros

rm -r vendor core
rm *

c. E do cartafol drupal-8.9.x-dev copiamos os cartafoles e fichieros que acabamos de borrar. É dicir no cartafol que tiñamos en funcionamento substituímos os cartafoles vendor e core, así como todos os ficheiros polos da versión 8.9.x-dev

cp -rp vendor core ../web
cp * ../web

d. Se abrimos no navegador a páxina que estamos migrando, funcionará e ao pinchar en Informes > Informes de estado, veremos que estamos empregando o novo core.

e. Instalamos o módulo upgrade_status

composer require --dev drupal/core-dev:8.9.x-dev –update-with-all-dependencies

No caso de non ter claro cal é a versión de core, podemos consultala coa seguinte instrución:

composer show drupal/core | grep versions

e instalamos na estrutura de cartafoles o upgrade_status

composer require drupal/upgrade_status

Finalmente pinchamos en estender e na lapela Lista, procuramos o módulo e clic en instalar

Paso 4. Consultamos o informe de Upgrade_status

Pinchamos en Informes > Upgrade status

Paso 5. Requirimentos

Teremos que cumprir unha serie de requirimentos. E para actualizalos iremos consultando varias páxinas web.

E no caso dos módulos instalaremos as últimas versións coa axuda do Composer. A metodoloxía de traballo que emprego eu é ir pouco a pouco.

a. Procuro a última versión do módulo que queremos instalar. Empregamos o buscador de drupal.org

https://www.drupal.org/project/project_module

b. Accedo ao cartafol onde está o drupal

cd /var/www/html/drupal

c. E vou instalando coa axuda de Drush no terminal

composer require 'drupal/addtoany:^1.16'
composer require 'drupal/back_to_top:^2.0'
composer require 'drupal/better_search:^1.6'
composer require 'drupal/bricks:^2.0'
composer require 'drupal/context:^4.1'
composer require 'drupal/responsive_menu:^4.4'
composer require 'drupal/eck:^1.0@beta'
composer require 'drupal/imce:^2.4'
composer require 'drupal/inline_entity_form:^1.0@RC'
composer require 'drupal/memcache:^2.3'
composer require 'drupal/pdf:^1.1'
composer require 'drupal/taxonomy_menu:^3.5'
composer require 'drupal/xmlsitemap:^1.2'
composer require 'drupal/bootstrap_business:^1.0@beta'
composer require 'drupal/d8w3css:^2.0'

d. Despois de instalar, veremos que a maioría dos módulos non se verán actualizados no informe de upgrade status. O que temos que facer é entrar por ssh e ir ao cartafol dos módulos e proceder  a borrar os módulos de web/modules. Sen embargo non borres todos, vaite aos poucos, pois é posible que borres un módulo que si é necesario e despois aparece un erro ao abrir o Drupal. E ademais o que fago despois de borrar cada módulo é executar o orde:

drush cr

ou o seu equivalente ir a Configuración > Rendemento > Baleirar todas as cachés

e. É posible que algún módulo incompatible coa versión Drupal 9 non cho deixe instalar porque ten campos asociados. Neste caso podes facelo directamente na base de datos coa axuda das instrucións:

drush sqlq "DELETE FROM cache_config"
drush sqlq "DELETE FROM config WHERE name = 'field.storage.node.field_iframe' OR data LIKE '%field.storage.node.field_iframe%'"

Unha vez executadas estas instrucións, desinstalas o módulo de forma ordinaria desde Estender > Desinstalar

Seguiremos co proceso ata obter un 100% de compatibilidade no informe de compatibilidade

Paso 6. Instalación do core 9.x

Unha vez que pasas o test de upgrade-status, descargamos o core da versión 9, nese caso descarguei a última a 9.3.11, descomprimimos. Borramos os cartafoles vendor e core e os ficheiros, tal e como fixemos no paso 3 da versión instalada. E copiamos vendor, core e os ficheiros do novo core, tal e como fixemos no apartado e, pero obviamente desde o core 9.3.11

Executamos as instrucións:

composer update
drush cr

E probamos. É posible que teñamos que instalar algún módulo a maiores. Por exemplo se aparece un erro como o seguinte:

The following theme is missing from the file system: jquery_ui in Drupal

Instalamos o módulo

composer require 'drupal/jquery_ui:^1.4'

E finalmente consultamos o informe de estado e comprobamos que xa empregamos a versión 9.x