Come migrare da GLPI 10 a GLPI 11: guida passo passo

Il piano di migrazione da GLPI 10 a 11 che usiamo in manutenzione: checklist, tabella di compatibilità dei plugin, comandi reali di backup e aggiornamento, cosa si rompe davvero e come fare rollback.

La migrazione da GLPI 10 a GLPI 11 quasi mai fallisce sul comando di aggiornamento del database - fallisce in ciò che viene prima e dopo. Questa guida consolida il piano che applichiamo nella manutenzione degli ambienti dei clienti: dove le cose si rompono davvero, come blindare ogni passaggio e come tornare indietro se qualcosa va storto.

Prima di tutto: perché la migrazione richiede metodo

Migrare dalla 10 alla 11 modifica lo schema del database in modo irreversibile e sostituisce l'intero strato di presentazione (ora su Symfony e Twig). Non è un "sostituire i file e avviare". I due fattori che causano più downtime non pianificato sono i plugin incompatibili lasciati attivi durante l'aggiornamento e la versione di PHP sul server. Tratti la migrazione come un piccolo progetto, con finestra e piano di rollback, non come un hotfix. Pianifichi anche di avvisare gli utenti che l'interfaccia della 11 è diversa da quella della 10 - buona parte dei ticket post-migrazione sono persone perse nel nuovo layout, non bug reali.

Checklist di pre-migrazione

  • Backup completo del database (mysqldump) e delle directory di configurazione e dati.
  • Essere sull'ultima minor di GLPI 10 (10.0.x più recente) prima di saltare alla 11.
  • PHP 8.1+ installato e attivo nella versione corretta di CLI e FPM.
  • Un inventario dei plugin con lo stato di compatibilità di ciascuno in GLPI 11.
  • Un ambiente di collaudo con una copia reale del database per provare la migrazione.

Plugin: cosa cambia in GLPI 11

PluginSituazione in GLPI 11Azione prima di migrare
FormCreatorIncorporato nel core (moduli nativi)Disattivare e rimuovere
GenericObjectIncorporato nel core (oggetti personalizzati)Disattivare e rimuovere
FusionInventoryDismessoMigrare al GLPI Agent
Fields, Escalade, DataInjection, PDF, TagHanno una versione per la 11Aggiornare dopo la migrazione
NexToolCompatibile con 10 e 11Aggiornare alla versione della 11
Plugin senza aggiornamenti dal 2023Probabile incompatibilitàValutare la sostituzione

1. Backup completo (e testato)

Un backup che non ha mai ripristinato non è un backup, è una speranza. Lo generi e, come minimo, ne validi la dimensione del file:

# Database
mysqldump -u root -p --single-transaction glpi > /backup/glpi_pre_migration.sql

# File (configurazione, dati e plugin)
tar -czf /backup/glpi_files_pre_migration.tar.gz /var/www/glpi /etc/glpi /var/lib/glpi

2. Disattivare i plugin incompatibili

In GLPI 10, vada in Configurazione > Plugin e disattivi tutti quelli senza versione per la 11. Rimuova le directory di quelli incompatibili. Questo passaggio non è opzionale: è la causa numero 1 di fallimento al comando di aggiornamento.

3. Aggiornare i file di GLPI

cd /tmp
wget https://github.com/glpi-project/glpi/releases/download/11.0.0/glpi-11.0.0.tgz
tar -xzf glpi-11.0.0.tgz

# Sostituire i file preservando configurazione, dati e plugin
rsync -av --delete /tmp/glpi/ /var/www/glpi/ --exclude plugins/ --exclude marketplace/
chown -R www-data:www-data /var/www/glpi

Scarichi sempre l'ultima release stabile della linea 11.x, non necessariamente la 11.0.0.

4. Eseguire la migrazione del database

php /var/www/glpi/bin/console db:update --no-interaction

Questo comando applica tutte le migrazioni di schema. Segua tutto l'output - qualsiasi errore va risolto prima di procedere, mai ignorato.

5. Pulire cache e sessioni

php /var/www/glpi/bin/console cache:clear
rm -rf /var/lib/glpi/_sessions/*

6. Verifica post-migrazione

  • Il login funziona e la versione in Configurazione > Generale mostra 11.x.
  • Ticket, asset e utenti sono presenti con i totali attesi.
  • L'apertura di un nuovo ticket funziona da capo a fondo.
  • Log senza errori ricorrenti dopo qualche minuto di utilizzo.
  • Riattivi e aggiorni i plugin compatibili uno a uno, testando tra l'uno e l'altro.

Cosa abbiamo imparato in manutenzione

In pratica, la migrazione raramente fallisce sul db:update in sé. Fallisce dopo: un plugin incompatibile rimasto attivo che manda giù l'interfaccia con un errore 500, il PHP di FPM che punta a una versione che GLPI 11 non accetta (mentre il CLI è già alla 8.1), o il cliente che ha saltato una minor della 10 e arriva al comando di aggiornamento con uno schema che non torna. Per questo il nostro piano aggiorna prima all'ultima 10.0.x, valida, e solo allora salta alla 11 - riattivando i plugin uno a uno, mai tutti insieme, perché quando qualcosa si rompe bisogna sapere esattamente quale plugin ne è responsabile.

La trappola più comune

L'errore classico è credere che i moduli di FormCreator migrino da soli ai moduli nativi di GLPI 11. Non migrano: il plugin sparisce, ma i moduli che creava vanno ricostruiti manualmente nel nuovo core. Inventari i moduli di FormCreator prima di rimuovere il plugin, altrimenti scoprirà la perdita in produzione, con un utente che si lamenta che il modulo è sparito. Il secondo errore più comune è eseguire db:update con un plugin incompatibile ancora attivo: il console tenta di caricare il plugin, incontra un'API che non esiste più e si interrompe a metà migrazione.

Rollback: quando qualcosa va storto

Poiché il cambio di schema è irreversibile, il rollback non è un "annulla" - è ripristinare lo stato precedente. Per questo il backup testato del passaggio 1 è irrinunciabile:

# Ripristinare i file
tar -xzf /backup/glpi_files_pre_migration.tar.gz -C /

# Ripristinare il database
mysql -u root -p glpi < /backup/glpi_pre_migration.sql

Provare questo ripristino in collaudo prima della finestra reale è ciò che separa uno spavento da un incidente.

Prossimo passo

Dopo la migrazione, esplori i moduli nativi e le altre novità di GLPI 11, e reintroduca i plugin essenziali. Per estendere il core senza accumulare plugin che si rompono alla prossima major, NexTool concentra decine di moduli in un unico plugin, con versioni per 10 e 11. Serve supporto per la migrazione? Parli con il team.


Revisionato dal team NexTool Solutions.

Domande Frequenti

Sì, a patto di fare prima un backup completo e testato, essere sull'ultima 10.0.x, verificare la compatibilità di ogni plugin e provare in collaudo. La migrazione modifica lo schema del database in modo irreversibile, quindi il backup non è opzionale.

Dipende. FormCreator e GenericObject sono stati incorporati nel core e vanno rimossi prima di migrare. FusionInventory è stato dismesso (usi il GLPI Agent). Fields, Escalade e altri hanno una versione per la 11. NexTool è compatibile con 10 e 11. Mappi lo stato di ogni plugin prima di iniziare.

L'aggiornamento del database in sé dura da 5 a 30 minuti a seconda del volume di dati. Ciò che richiede tempo è la pianificazione, la prova in collaudo e la riattivazione dei plugin uno a uno - può richiedere da 1 a 5 giorni negli ambienti più grandi.

Non annullando: la migrazione modifica lo schema in modo irreversibile. Tornare indietro significa ripristinare il backup del database e dei file fatto prima della migrazione. Per questo testare il ripristino in collaudo fa parte del processo, non è un extra.

Quasi sempre per un plugin incompatibile ancora attivo: il console tenta di caricare il plugin, incontra un'API che non esiste più in GLPI 11 e si interrompe. Disattivi e rimuova ogni plugin senza versione per la 11 prima di eseguire db:update.

Hai bisogno di aiuto?