Salta al contenuto principale

Aggiornare Drupal dalla versione 9 alla 10

Profile picture for user luca77king

Quando gestiamo un sito con Drupal (ma vale per qualsiasi tipo di software), è fondamentale rimanere sempre aggiornati non solo per sfruttare le ultime funzionalità, ma anche per garantire che il nostro sito sia sicuro e protetto. Proprio questa necessità mi ha recentemente portato a eseguire un importante aggiornamento di sicurezza: il passaggio dalla versione 9 alla versione 10 di Drupal.

Durante un controllo di routine nel pannello di amministrazione del mio sito Drupal, mi sono imbattuto in un avviso critico: era richiesto un aggiornamento di sicurezza. Questo tipo di aggiornamenti non sono da prendere alla leggera; possono contenere correzioni per vulnerabilità di sicurezza che, se non risolte, potrebbero lasciare il sito esposto a rischi come attacchi informatici o perdita di dati.

avviso sicurezza

Analisi dei moduli e compatibilità con la nuova versione

Navigando nel pannello di amministrazione, ho notato una serie di moduli che richiedevano attenzione. Il passaggio dalla versione 9 alla 10 di Drupal, presenta alcune problematiche. Alcuni erano segnalati come non supportati, mentre altri avevano aggiornamenti disponibili. Questo è un segnale chiaro che l'ecosistema del mio sito aveva bisogno di una revisione manuale per assicurarmi che tutte le componenti fossero aggiornate e sicure.

Moduli da aggiornare

Il Processo di Aggiornamento non è sempre automatico, soprattutto quando ci sono moduli personalizzati o contribuiti che non sono stati ancora aggiornati dagli sviluppatori per la nuova versione. È un'operazione che richiede attenzione, pianificazione e, idealmente, un ambiente di test per assicurarsi che tutte le funzionalità del sito rimangano intatte dopo l'aggiornamento.

Inoltre, è cruciale verificare la compatibilità dei temi e dei moduli esistenti con la nuova versione di Drupal. Un aggiornamento maggiore di versione può comportare cambiamenti significativi che potrebbero richiedere la revisione o la riscrittura di codice personalizzato.

Disabilitazione di CKEditor 4

Nell'evolvere da Drupal 9 a Drupal 10, ci troviamo di fronte a significative evoluzioni nelle tecnologie e negli strumenti incorporati nel core di Drupal. Una delle modifiche più rilevanti riguarda l'editor WYSIWYG integrato: la transizione dal CKEditor 4 al CKEditor 5. Questo cambio rappresenta un salto qualitativo importante, poiché CKEditor 5 è stato completamente riscritto e offre un'esperienza utente migliorata, oltre a una migliore integrazione con le moderne prassi del web.

Prima di procedere con l'aggiornamento del core di Drupal, è essenziale disabilitare CKEditor 4. Questo passaggio precauzionale è vitale per evitare conflitti e "brutte sorprese" durante l'aggiornamento. Se CKEditor 4 rimanesse attivo, potrebbero sorgere incompatibilità con la nuova versione del core di Drupal che include CKEditor 5, portando a potenziali problemi di funzionalità o a errori nel sistema di gestione dei contenuti.

Come Disabilitare CKEditor 4

Per disabilitare CKEditor 4, si può procedere in due modi:

  1. Interfaccia Utente di Drupal: Accedere all'area di amministrazione del sito, navigare alla pagina dei moduli (/admin/modules) e disabilitare CKEditor 4 dalla lista dei moduli installati.
  2. Utilizzo di Drush: Utilizzare il comando Drush da terminale per disabilitare il modulo in modo rapido ed efficiente. Ecco il comando che si può utilizzare:
drush pm:uninstall ckeditor

Questo comando rimuoverà il modulo CKEditor 4 e tutte le sue configurazioni dal sistema.

Rimozione dei Temi dal Core

Con l'introduzione di Drupal 10, alcuni temi che erano precedentemente inclusi nel core di Drupal sono stati rimossi. Questa scelta è stata fatta per vari motivi, tra cui la manutenzione e la focalizzazione sulle nuove direzioni che il CMS sta prendendo. I temi come Bartik, Seven e Stable non fanno più parte del nucleo essenziale di Drupal nella sua ultima versione.

Se il tuo sito sta attualmente utilizzando uno di questi temi, dovresti pianificare di passare a un altro tema prima di aggiornare a Drupal 10. Mentre questi temi potrebbero ancora essere disponibili come progetti contribuiti o potrebbero essere sostituiti da alternative più moderne, non faranno più parte del pacchetto di installazione standard di Drupal.

Disabilitazione dei Temi Precedenti all'Aggiornamento

Prima di procedere con l'aggiornamento, è buona norma disabilitare qualsiasi tema che sarà rimosso dal core. Questo previene problemi che potrebbero sorgere quando il tema in uso non è più supportato o incluso nel core aggiornato. Ecco i passaggi consigliati per gestire questa transizione:

  1. Identifica i Temi Core Utilizzati: Controlla se il tuo sito sta utilizzando uno dei temi che sono stati rimossi dal core di Drupal 10.
  2. Seleziona un Nuovo Tema: Scegli un nuovo tema per il tuo sito. Potresti optare per un tema core che è incluso in Drupal 10, come Olivero, o per un tema contribuito che soddisfa le tue esigenze.
  3. Installa e Configura il Nuovo Tema: Prima di disabilitare il vecchio tema, installa e configura il nuovo tema selezionato per assicurarti che tutto funzioni correttamente.
  4. Disabilita il Vecchio Tema: Una volta che il nuovo tema è configurato e sei soddisfatto di come appare il tuo sito, puoi disabilitare il vecchio tema tramite l'interfaccia utente di Drupal o utilizzando Drush con il comando seguente:

    ​​​​​​​drush theme:uninstall nome_del_tema
  5. Procedi con l'Aggiornamento: Solo dopo aver disabilitato i temi che non sono più inclusi nel core di Drupal 10 dovresti procedere con l'aggiornamento.
  6. Verifica Post-Aggiornamento: Dopo l'aggiornamento, verifica attentamente il tuo sito per assicurarti che tutto sia funzionante e che l'aspetto sia conforme alle tue aspettative.

Se hai un tema custom che eredita uno di questi temi, la situazione è leggermente più complessa. Nel mio caso specifico ho un tema che eredita Stable, quindi avevo di fronte due alternative:

  1. Cambiare il tema genitore
  2. Installare il tema stable come modulo separato

Nel dubbio, complice anche l'inesperienza, ho lasciato invariata la situazione per poi risolvere la problema in fase di post-aggiornamento.

Aggiornamento delle dipendenze con Composer

Nel contesto degli aggiornamenti di Drupal, l'utilizzo di Composer è diventato lo standard per la gestione delle dipendenze, inclusi core, moduli e temi. Composer è uno strumento di gestione delle dipendenze per PHP che ti permette di dichiarare le librerie di cui il tuo progetto ha bisogno e le installa per te.

Aggiornamento del progetto con Composer

Prima di avviare l'aggiornamento a Drupal 10 tramite Composer, ci sono alcuni passi preparatori fondamentali da seguire. Prima di qualsiasi operazione di aggiornamento, è essenziale effettuare un backup completo del sito, inclusi file e database.

Assicurati che le versioni dei moduli e dei temi nel tuo composer.json siano compatibili con Drupal 10. Puoi verificare la compatibilità sulle pagine dei progetti individuali su Drupal.org o utilizzando il comando composer show.

Assicurati di avere la versione più recente di Composer eseguendo composer self-update e poi aggiorna tutte le dipendenze attuali alla loro ultima versione compatibile con la tua attuale versione di Drupal prima di passare a Drupal 10. Puoi farlo con composer update.

Nel blocco sottostante vediamo quali sono le dipendenze indispensabili per il passaggio a Drupal 10

    "require": {
            "composer/installers": "^2.0",
            "drupal/core-composer-scaffold": "^10.2",
            "drupal/core-project-message": "^10.2",
            "drupal/core-recommended": "^10.2",
            "drush/drush": "^12.4"
    },

Tutto quello che causa problemi di compatibilità va rimosso o aggiornato (se ovviamente sono versioni compatibili con il core del software).

Se il processo termina senza errori, possiamo passare ai passaggi successivi.

Verifica dello stato di aggiornamento e risoluzione problematiche

Terminato l'aggiornamento con composer, la prima cosa che dobbiamo fare è cancellare la cache con drush e collegarci al portale per verificare lo stato dell'aggiornamento.

drush cr

Se dopo il lancio del comando o la verifica della richiesta http, qualcosa non funziona, bisogna indagare su quale componente sta causando il problema bloccante. Nel mio caso non si è verificato nulla di tutto ciò, per cui passaggio successivo. Invochiamo la rotta per aggiornare il db: /update.php

E qui possiamo trovare delle brutte soprese:

errori vari

Come possiamo vedere dall'immagine ho dovuto risolvere un bel set di problemi prima di poter andare avanti. Per quanto riguarda temi e moduli custom, il problema è abbastanza facile da risolvere, infatti basterà modificare il file .yml principale del modulo o tema, specificando il supporto anche alla versione 10 di Drupal.

core_version_requirement: ^8 || ^9 || ^10

Per quanto riguarda il problema Removed core modules, ci ho messo un pò più di tempo per risolvere....

Il Problema delle Configurazioni Orfane

Le configurazioni orfane in Drupal sono configurazioni rimaste nel sistema dopo che i moduli o i temi da cui dipendevano sono stati disinstallati. Questo può causare errori o comportamenti inaspettati, soprattutto durante l'importazione di configurazioni in un nuovo ambiente di Drupal. Ad esempio, se un tema personalizzato viene rimosso, ma esistono configurazioni di blocchi che dipendono da quel tema, Drupal segnalerà errori poiché queste dipendenze non sono più soddisfatte.

Modifica della configurazione con Drush

Il comando drush cedit core.extension è utilizzato con Drush per aprire in un editor un file di configurazione specifico, in questo caso, il file di configurazione core.extension. Questo file contiene informazioni sulle estensioni (moduli e temi) abilitate nel tuo sito Drupal. Utilizzando questo comando, puoi visualizzare e modificare direttamente quali moduli e temi sono abilitati o disabilitati.

​​​​​​​​​​​​​​

Quando esegui drush cedit core.extension, Drush aprirà il file di configurazione core.extension nell'editor di testo predefinito configurato per il tuo sistema o specificato nelle configurazioni di Drush. Ciò ti permette di vedere quali moduli e temi sono attualmente abilitati nel tuo sito e di apportare modifiche manualmente, come abilitare o disabilitare determinati moduli o temi aggiungendo o rimuovendo le loro voci da questo file. 

Il file core.extension non esiste fisicamente come un singolo file all'interno della struttura di directory di Drupal. Invece, fa parte del sistema di configurazione di Drupal, che gestisce le configurazioni attraverso la base di dati o file di configurazione sincronizzati. Quando modifichi core.extension tramite drush cedit, stai interagendo con i dati di configurazione salvati nel database di Drupal. Questi dati di configurazione possono essere esportati in file YAML tramite il sistema di configurazione di Drupal, che si trova tipicamente nella directory di sincronizzazione della configurazione del tuo sito.

Terminale drupal

Bene, ora elimina le righe dei moduli incriminati e salva il file. Il salvataggio potrebbe non riuscire in quanto il sistema ci avvisa che i moduli sono dipendenze di alcune configurazioni. Avvisi del genere

La configurazione <em class="placeholder">block.block.bartik_account_menu</ em> dipende dal tema <em class="placeholder">bartik</em> che non sarà insta llato dopo l'importazione.

Per risolvere, dobbiamo mettere mani al db, localizzare la tabella prefix_config e lanciare delle query come queste

SELECT * FROM prefix_config WHERE data LIKE '%nome_modulo%'

Completata questa operazione di pulizia, il file core.extension dovrebbe accettare le modifiche e finalmente possiamo lanciare lo script di aggiornamento del database.