![]() |
![]() |
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