Joomla: aggiornamento dalla versione 2.5.x alla versione 3.3.3

Come noto, il supporto alla versione 2.5 di Joomla! terminerà il 31 dicembre 2014 (http://docs.joomla.org/What_version_of_Joomla!_should_you_use%3F ) e, anche se si tratta di una versione molto stabile e collaudata che può essere utilizzata ancora a lungo, per ragioni prettamente legate alla sicurezza dei sistemi di produzione vale la pena iniziare a programmare l’upgrade ad una versione LTS (Long Term Support) più recente.
Io ho provato con la nuova versione 3.3.3, in attesa della 3.5 che, da settembre 2014, dovrebbe essere LTS a tutti gli effetti.

Joomla version

Un articolo utile allo scopo che illustra dettagliatamente gli steps necessari ad eseguire l’aggiornamento in modo molto preciso ed esaustivo è quello di Alessandro Rossi (AlexRed) (http://www.joomla.it/notizie/7485-guida-all-aggiornamento-dalla-versione-2-5-alla-3-di-joomla.html ).

La soluzione da me proposta è, invece, un’alternativa che bypassa il problema di Blank Page (pagina bianca) lato front end e back end che spesso si verifica al termine della procedura di upgrade.

Nell’articolo su Bamboo Blog (http://www.joomlabamboo.com/blog/how-to-joomla/how-to-fix-a-blank-screen-after-upgrading-to-joomla-3-2 ) vengono riportati alcuni passi per fissare lo spiacevole inconveniente attraverso la momentanea disabilitazione del file remeber.xml (/plugins/system/remember), così da poter investigare sulle cause d’errore nell’installazione di Joomla!
Tuttavia, anche questo metodo nel mio caso non è stato sufficiente a risolvere i problemi riscontrati, quindi ho sviluppato una procedura manuale alternativa che vado ad illustrare di seguito.

VERIFICHE PRE UPGRADE

Upgrade Joomla - System information (PHP version)

Prima di iniziare l’aggiornamento occorre eseguire alcune verifiche preliminari e apportare le dovute correzioni:
1) Aggiornare il sito con Joomla 2.5 all’ultima versione disponibile (esempio 2.5.24). Dal menu Componenti -> Aggiornamento di Joomla!

2) Dal menu Sito -> Informazioni di sistema verificare che la versione di PHP utilizzata dal server che ospita il nostro sito sia superiore alla 5.3.10:
PHP ver. > 5.3.10: procedere pure con l’aggiornamento alla versione 3.3.x;
PHP ver. < 5.3.10: NON è possibile eseguire l’upgrade alla versione 3.3.x;

3) Dal menu Estensioni -> Gestione estensioni -> Esplora verificare la presenza di estensioni che non sono state installate attraverso il normale processo di installazione. Nel caso, procedere con la correzione.

4) Qualora fosse attiva la cache (menu Sito -> Pannello di Controllo -> Configurazione globale -> Sistema), disattivarla e svuotarla: menu Sito -> Manutenzione -> Pulisci cache

5) Verificare che la struttura del database sia allineata (menu Estensioni -> Gestione estensioni -> Database): di norma dovrebbe esserlo; in caso contrario, è possibile allinearla alla versione attuale.

BACKUP
Come noto, è buona prassi eseguire sempre un backup completo del database e del sito prima di procedere con qualsiasi modifica, in modo di avere una versione funzionante sempre a disposizione e di provvedere ad un veloce ripristino nel caso in cui le cose andassero storte. Io, in genere, li eseguo manualmente con phpMyAdmin e FileZilla ma l’attività può essere automatizzata con ottimi moduli o estensioni, come Akeeba Backup (https://www.akeebabackup.com/download.html ) .

Una volta conclusa l’operazione, si consiglia di eseguire la procedura in un ambiente di test offline e, solo successivamente, caricare il database e i files di Joomla aggiornati nel sistema di produzione online, avendo cura di apportare le dovute modifiche al file configuration.php.

IL TEMPLATE
Siccome i templates compatibili con la versione 3.x sono realizzati con specifiche differenti rispetto a quelli delle distribuzioni precedenti, occorre verificare se della nostra versione in 2.5.24 ne esiste uno compatibile con la major release superiore.

Nel mio caso, usando il free template Zenith di Themexpert (http://demo.themexpert.com/joomla/zenith/ ), ho potuto scaricare facilmente il pacchetto compatibile con la versione 3.x.

ESECUZIONE DELL’UPGRADE
In ambiente locale di test (esempio Xampp) eseguire i seguenti passaggi:

1) Installare l’ultima versione di Joomla!: la 3.3.3

2) Installare il template compatibile con la versione 3.x

3) Installare le versioni compatibili con Joomla 3.x dei moduli, delle estensioni e dei plugin già presenti sulla versione 2.5.24

4)  Da phpMyAdmin rimuovere il database aggiornato alla versione 3.x dopo averne fatta una copia locale per eventuali ripristini.

5) Sempre da phpMyAdmin, installare la versione del database in 2.5.24.

A questo punto ci troviamo il nostro sito aggiornato alla versione di Joomla! 3.3.3, completo di tutti i moduli e le estensioni, che utilizza un database in versione 2.5.24.

6) Da phpMyAdmin eseguire manualmente l’aggiornamento del database partendo dal file .sql meno recente (3.0.0.sql) al più recente (3.3.0-2014-04-02.sql). I files si trovano in ROOT/administrator/components/com_admin/sql/updates : scegliere gli scripts .sql a seconda del database utilizzato.

Joomla: importazione del file sql in phpMyAdmin

Ogni file deve essere opportunamente modificato con un editor (trova/sostituisci) in modo di non avere problemi nel momento in cui viene eseguito con PhpMyAdmin. Nel dettaglio, la stringa “#__”va sostituita con il dbprefix che stiamo già utilizzando (nel mio caso “J25upg_”).

Di seguito un esempio pratico:

– prima: ALTER TABLE `#__update_sites` ADD COLUMN `extra_query` VARCHAR(1000) DEFAULT ”;
– dopo: ALTER TABLE ` J25upg_update_sites` ADD COLUMN `extra_query` VARCHAR(1000) DEFAULT ”;

Joomla: importazione del file sql in phpMyAdmin

Ora la situazione dovrebbe essere allineata: il sito e il database sono in Joomla 3.3.3. E’ sempre possibile verificare l’allineamento del database attraverso il metodo illustrato in precedenza (menu Estensioni -> Gestione estensioni -> Database). Se la procedura è andata a buon fine, il sito dovrebbe essere aggiornato alla nuova release e si può passare alla fase di test.

Successivamente, possiamo sostituire il vecchio database con il nuovo e caricare tutti i files della nuova versione su server tramite FTP.

Prima, però, non dimentichiamoci di modificare nel file configuration.php i principali parametri necessari alla connessione al database e il gioco è fatto:

public $dbtype = ‘mysqli’;
public $host = ‘xxx.xxx.xxx.xxx’;
public $user = ‘xxxxxxxxx’;
public $password = ‘xxxxxxxxx’;
public $db = ‘xxxxxxx’;
public $dbprefix = ‘xxxxx_’;