Aggiornare Joomla 1.5 a Joomla 2.5: come migrare i dati senza perdere nulla

Joomla è uno dei più famosi software CMS (Content Management System) che consente di realizzare in poco tempo siti web professionali.

Joomla è uno dei più famosi software CMS (Content Management System) che consente di realizzare in poco tempo siti web professionali. Qualunque tipo di contenuti si voglia pubblicare sul web, Joomla rappresenta un’ottima soluzione. Realizzato completamente nel linguaggio PHP e distribuito sotto forma di software libero (licenza GNU GPLv2), Joomla offre un elevato grado di personalizzazione grazie al supporto per numerose tipologie di estensioni (moduli, componenti e plugin) ed alla possibilità di utilizzare una vasta gamma di template “preconfezionati”.

Mantenere il pacchetto Joomla costantemente aggiornato è la prima regola per tutti coloro che gestiscono un sito Internet a qualunque livello. L’applicazione delle patch via a via rilasciate dagli sviluppatori di Joomla rappresenta la chiave di volta per evitare che il proprio sito web possa essere attaccato o “defacciato”. Problemi di sicurezza vengono infatti periodicamente scoperti in qualunque tipo di software: è ovvio che le piattaforme per la gestione dei contenuti costituiscono un boccone assai ghiotto per i malintenzionati. All’interno dei database delle più famose piattaforme CMS sono infatti contenute informazioni personali, password, indirizzi e-mail, numeri di carte di credito ed altri dati di grande rilevanza. Da qui la responsabilità dell’amministratore del sito web che deve accertarsi del livello di sicurezza garantito dal suo prodotto.
Oltre alla tempestiva installazione delle patch di sicurezza, nel caso di Joomla così come di qualunque altro pacchetto opensource per la gestione di contenuti, da qualche tempo a questa parte è divenuta sempre più impellente l’esigenza di migrare alle versioni più recenti dell’applicazione web. L’utilizzatissima versione 1.5 di Joomla, infatti, non viene più supportata a partire dal 1° dicembre 2012. Ciò significa che gli sviluppatori di Joomla non rilasceranno più alcun aggiornamento di sicurezza per questa versione del CMS opensource.
Trattandosi di una versione LTS (Long Term Support), così come Joomla 1.5, la migliore idea è quella di aggiornarsi a Joomla 2.5, prodotto che resterà costantemente supportato fino al mese di marzo 2014. Diversamente, il seppur successivo Joomla 3.0 non verrà più aggiornato a partire da aprile 2013.

Aggiornare Joomla 1.5 a Joomla 2.5

La procedura di aggiornamento da Joomla 1.5 a Joomla 2.5 non è di per sé affatto semplice perché presuppone uno studio della struttura delle varie tabelle MySQL delle due versioni ed una successiva migrazione manuale dei dati.
Fortunatamente ci sono dei componenti che possono aiutare enormemente a snellire il processo di migrazione da Joomla 1.5 a Joomla 2.5. Tra i componenti gratuiti vi sono jUpgrade e J2XML, entrambi citati nella guida ufficiale pubblicata sul sito ufficiale di Joomla (vedere questa pagina).

Durante i nostri test, però, abbiamo ripetutamente rilevato comportamenti anomali da parte di jUpgrade, un componente che viene distribuito sì a titolo completamente gratuito ma che difficilmente, almeno allo stato attuale, riesce a portare a compimento una migrazione su siti web Joomla 1.5 particolarmente complessi (con un elevato numero di record da elaborare).
Basta effettuare una ricerca con Google per accorgersi di come gli utenti lamentino frequentemente la comparsa dell’errore Migrating Undefined con jUpgrade senza riuscire a risalire alle cause del problema.
Nel corso delle nostre prove siamo riusciti a risolvere gran parte degli errori Migrating Undefined di jUpgrade accorgendoci, tuttavia, che sono davvero molteplici le cause che possono portare alla loro comparsa. Talvolta si tratta di problemi di diritti, della mancanza di alcune tabelle nel database, della mancata generazione del file configuration.php ma in tutti i casi la migrazione è apparsa davvero problematica, soprattutto allorquando si debbano gestire basi di dati contenenti qualche migliaio di record.

J2XML, pur impiegando un differente approccio, non ci è sembrato efficace nel migrare migliaia di record (il file XML generato, oltretutto, è estremamente pesante). Certamente il componente ben si comporta trovandosi ad elaborare basi di dati ridotte ma appare inadeguato per lavorare su database Joomla molto più pesanti. Inoltre, J2XML non mantiene gli ID originali dei contenuti: ciò significa che la presenza del sito web sui motori di ricerca potrebbe gravemente risentirne.

Il componente per Joomla che al momento ha evidenziato il comportamento migliore è senza ombra di dubbio SP Upgrade. Sviluppato e costantemente aggiornato dall’azienda cipriota Cyend, SP Upgrade è capace di aggiornare Joomla 1.5 a Joomla 2.5 migrando correttamente tutti i dati presenti nel database di partenza e senza l’esposizione di alcun messaggio d’errore.
Certo, SP Upgrade è prodotto commerciale (il download di SP Upgrade è effettuabile previo versamento, mediante carta di credito, di una somma pari a 29,95 euro) ma, durante i nostri test, si è comportamento in modo davvero eccellente.
Frutto di un attento studio sulla struttura dei database di Joomla, SP Upgrade sopperisce la carenza di un valido tool per la migrazione da Joomla 1.5 a Joomla 2.5.
Per procedere al download di SP Upgrade per Joomla, dopo aver correttamente configurato il server web, è necessario collegarsi con questa pagina, fare clic sul pulsante per il pagamento tramite PayPal e seguire le istruzioni. Qualora si avessero delle difficoltà in fase di acquisto, suggeriamo di contattare il supporto tecnico di Cyend inviando un’e-mail all’indirizzo mostrato nella stessa pagina web.

La migrazione da Joomla 1.5 a Joomla 2.5 è una procedura delicata che sconsigliamo di effettuare su di un server remoto. Durante il trasferimento dei dati, molto probabilmente, si sperimenterebbe la comparsa di un errore dovuto all’arresto imprevisto dello script PHP che effettua la conversione. Questo è dovuto al fatto che la maggior parte dei provider Internet impostano il server web Apache in modo da non permettere il caricamento continuo di uno script oltre 30 o 60 secondi.

Il nostro consiglio è quindi quello di allestire una macchina virtuale con Virtualbox o Vmware Player, di installarvi – ad esempio – Windows XP Professional e Microsoft IIS, il prodotto gratuito Zend Server Community Edition, MySQL Community Server 5.1 “Essential”e MySQL GUI Tools.

In Windows XP, IIS deve essere aggiunto dal Pannello di controllo, Installazione applicazioni così come spiegato nell’articolo Velocizzare l’esecuzione di script PHP con Zend Server CE. Nello stesso articolo, da leggere insieme con PHP a tutta velocità: come aggiornare Zend Server all’ultima versione, abbiamo spiegato che cos’è Zend Server e come sia possibile utilizzarlo in ambiente Windows per velocizzare l’esecuzione di script PHP (in alternativa, è possibile rivolgersi ad un pacchetto come XAMPP: Condividere file online allestendo un web server con XAMPP).

MySQL e MySQL GUI Tools dovranno essere anch’essi installati sempre nella macchina virtuale (bisognerà scegliere una password da abbinare all’utente root).

Trasferire in locale l’installazione di Joomla 1.5

Installato il server web IIS in Windows XP ed installato MySQL, dopo aver avviato MySQL Administrator si potrà creare una nuova base dati che andrà ad ospitare il contenuto della base dati di Joomla 1.5.

Per procedere, basta selezionare Catalogs quindi cliccare con il tasto destro sull’elenco dei database e scegliere il comando Create new schema.

Solitamente molti provider Internet mettono a disposizione PHPMyAdmin, un’applicazione web che consente di amministrare uno o più database MySQL remoti utilizzando unicamente il browser web. Dopo aver esportato la base dati del sito Joomla 1.5 si otterrà un file “dump” con estensione .sql.

Importare il contenuto di tale file è assai semplice. Basta infatti portarsi al prompt dei comandi e digitare quanto segue per portarsi nella cartella di lavoro di MySQL:

cd\Programmi\MySQL\MySQL Server 5.1\bin

(verificare il percorso corretto).

Digitando il comando seguente si potranno importare tutti i dati contenuti nel “dump” all’interno del database MySQL creato in locale:

mysql -uroot -ptest123 nomedeldatabaseJoomla15 < "%userprofile%\joomla15.sql"

Al posto di test123 dovrà essere specificata la password associata all’account root di MySQL sul sistema locale mentre nomedeldatabaseJoomla15 dovrà essere sostituito col nome del database MySQL che accoglierà i dati provenienti dall’installazione remota di Joomla 1.5.

Nella cartella radice di IIS (di solito C:\Inetpub\wwwroot) dovrà essere quindi creata una nuova sottodirectory (ad esempio, joomla15) copiando al suo interno, ricorrendo ad un normale client FTP come FileZilla, il contenuto dell’installazione remota di Joomla 1.5.

Installazione in locale di Joomla 2.5

Il passaggio successivo consiste nel creare un nuovo sito nel server web e copiare, nella directory corrispondente, il contenuto dell’ultima versione di Joomla 2.5 prelevabile da questa pagina. Il pacchetto da scaricare si chiama Joomla_2.5.x-Stable-Full_Package.zip.
Nel nostro caso, abbiamo estratto il contenuto di tale archivio compresso in una sottocartella di C:\Inetpub\wwwroot (la directory radice di IIS).

Da MySQL Administrator si dovrà fare clic su Catalogs, cliccare con il tasto destro del mouse sull’elenco dei database in figura e selezionare il comando Create new schema:

Si dovrà quindi assegnare un nome al nuovo database che andrà ad ospitare tutti i dati migrati dalla versione 1.5 di Joomla.

Creato il nuovo database, si potrà avviare il browser quindi digitare l’indirizzo http://localhost/ seguito dal nome della directory nella quale si sono precedentemente estratti i file contenuti nell’archivio Zip di Joomla 2.5:

Nel caso in cui dovesse apparire il messaggio Non si è autorizzati a visualizzare questa pagina (HTTP 401.3 – Accesso negato dall’ACL sulla risorsa Internet Information Services), bisognerà portarsi all’interno della cartella di IIS (C:\Inetpub\wwwroot) fare clic con il tasto destro del mouse sulla directory contenente i file di Joomla 2.5, selezionare Proprietà, accedere alla scheda Protezione, selezionare l’account Account Internet Guest e cliccare su Avanzate.

Dalla finestra successiva, sempre assicurandosi che sia selezionato il medesimo account, si dovrà fare clic su Modifica:

Dalla finestra seguente, si dovrà spuntare anche la casella Eliminazione sottocartelle e file in modo che appaia così come rappresentato in figura:

Dopo aver fatto clic sul pulsante OK, si dovrà spuntare manualmente la casella Sostituisci le autorizzazioni su tutti gli oggetti figlio con le autorizzazioni appropriate qui specificate, cliccare su Applica quindi rispondere alla comparsa del messaggio seguente.

Dopo qualche istante di attesa, al termine dell’operazione, si potrà premere il pulsante OK due volte.

A questo punto, ricaricando la pagina dal browser web, verrà avviata la procedura di configurazione dell’ultima versione di Joomla 2.5:

Scelta la lingua preferita (l’italiano), si potrà premere Avanti, verificare le impostazioni dell’ambiente di lavoro, accettare la licenza GNU GPL quindi specificare i dati per la connessione al database MySQL precedentemente aggiunto con MySQL Administrator.

Nel campo Nome host, si dovrà specificare localhost mentre nelle caselle Nome utente e Password, rispettivamente, root e la password associata allo stesso utente MySQL. Come Nome database, si dovrà indicare il nome del database aggiunto poco fa con MySQL Administrator mentre come Prefisso tabelle si potrà accettare quello generato casualmente.

Alla comparsa della schermata Configurazione FTP, è sufficiente premere su Avanti quindi indicare, nell’ultimo passaggio, un nome per il sito web Joomla 2.5 in fase di creazione, l’indirizzo e-mail dell’amministratore, il suo nome utente ed una password sufficientemente lunga e complessa.

Non appena apparirà il messaggio Ricordati di rimuovere completamente la cartella Installation, si dovrà chiudere il browser e fermare temporaneamente il server web IIS digitando IISRESET /stop al prompt dei comandi.

Accedendo alla cartella C:\Inetpub\wwwroot\nomedelsitoJoomla25, si dovrà quindi provvedere ad eliminare la sottocartella denominata installation.

Poiché la procedura di migrazione dei dati può durare anche qualche minuto, a seconda del quantitativo di informazioni conservato nella base dati di Joomla 1.5, è bene inserire manualmente la direttiva ActivityTimeout nel file %windir%\system32\inetsrv\fcgiext.ini:

In fondo al file di testo si dovrà aggiungere ActivityTimeout=600 in modo tale che l’esecuzione degli script non decada dopo un solo minuto ma possa essere estesa fino ad un massimo di dieci minuti (il valore 600 è espresso in secondi). Evitando di applicare quest’importantissima modifica, la procedura di migrazione protrebbe arrestarsi in modo imprevisto e non arrivare mai conclusione (verrebbe mostrato l’errore seguente: FastCGI process exceeded configured activity timeout).

Dal prompt dei comandi si potrà poi procedere con il riavvio di IIS digitando il comando IISRESET /start.

Riavviando il browser web e digitando http://localhost/nomedelsitoJoomla25, dovrebbe immediatamente apparire la home page del sito Joomla 2.5.

A questo punto, digitando http://localhost/nomedelsitoJoomla25/administrator si accederà al pannello di amministrazione previo inserimento del nome utente e della password specificati in fase di installazione del pacchetto.

Installazione e configurazione di SP Upgrade

Dal menù Extensions, Extension manager di Joomla 2.5 si potrà procedere con l’installazione e la configurazione di SP Upgrade.
Effettuando il download di SP Upgrade dal sito ufficiale, si noterà che il componente viene distribuito sotto forma di un unico file UNZIPFIRST_supgrade_2.x.xx_3.0.x.zip. Tale archivio compresso contiene, a sua volta, due file: com_spugrade_2.x.xx.zip e pkg_spupgrade_3.0.x.zip.
Il primo file contiene il componente destinato a Joomla 2.5 mentre il secondo la versione sviluppata per Joomla 3.0. Nel nostro caso, provvederemo a copiare esclusivamente il file com_spugrade_2.x.xx.zip in una directory d’appoggio (va benissimo la cartella Documenti di Windows).

Cliccando sul pulsante Sfoglia di Joomla 2.5 si dovrà selezionare tale file quindi cliccare su Upload & Install.

Trascorso qualche secondo, apparirà – in rosso – il messaggio “Failed to connect to source database. Update source database connection credentials in options“.

La comparsa del messaggio è del tutto normale perché ancora non si è provveduto ad impostare le credenziali per l’accesso al database di Joomla 1.5. Diversamente rispetto a jUpgrade, SP Upgrade provvede a collegarsi alla base dati del vecchio sito web Joomla 1.5 e ad importare tutti i dati richiesti dall’utente.
La finestra Options permette di accedere alle impostazioni di SP Upgrade:

Consigliamo di lasciare inalterate le scelte della scheda Configuration: SP Upgrade provvederà a sovrascrivere i contenuti con ID identico eventualmente già presenti nel database di Joomla 2.5.

Cliccando sulla scheda Database, si dovrà lasciare selezionato MySQLi come tipo di database quindi compilare manualmente tutti gli altri campi:

Nelle varie caselle è indispensabile digitare i dati che consentono l’accesso al vecchio database Joomla 1.5. Nel campo Database tables prefix va indicato il prefisso delle tabelle della base dati Joomla 1.5 di origine (generalmente è jos_ ma è comunque possibile verificarlo utilizzando ad esempio MySQL Administrator). Nella casella Source path va invece specificato il percorso completo corrispondente all’installazione di Joomla 1.5.

Facendo clic su Save & close quindi attendendo alcuni istanti, dovrebbe apparire – questa volta in verde – il messaggio “Connection with source database is healthy“.

Adesso è finalmente giunto il momento di avviare il processo di migrazione vero e proprio: basterà selezionare le caselle corrispondenti ai contenuti da trasportare dal vecchio database Joomla 1.5 alla nuova base dati Joomla 2.5 e fare clic sul pulsante Transfer in alto a destra.

Noi suggeriamo di selezionare tutte le caselle fatta eccezione per le ultime tre ossia Modules->Modules, Media->Images e Media->Templates. In questo modo SP Upgrade non copierà moduli, cartella delle immagini e template. La cartella delle immagini potrà essere successivamente copiata in modo manuale.

Cliccando su Transfer, SP Upgrade mostrerà il messaggio Are you sure you want to proceed?; confermando la volontà di proseguire, inizierà la procedura di migrazione dei dati. È importante evidenziare che nella base dati di Joomla 1.5 nessun dato sarà sovrascritto, alterato od eliminato.

La finestra log.htm, automaticamente aggiornata ogni 15 secondi, visualizzerà lo stato di avanzamento della procedra di migrazione dei dati dal vecchio al nuovo database.

Al termine della procedura di migrazione dei dati da Joomla 1.5 a Joomla 2.5, si troveranno tutte le informazioni provenienti dalla precedente versione del CMS nel nuovo database.

Trasferire Joomla 2.5 già aggiornato su un server remoto

Completata la migrazione da Joomla 1.5 a Joomla 2.5, si dovranno trasferire tutti i nuovi dati sullo stesso server remoto, accessibile via Internet, sino ad oggi utilizzato per il sito Joomla 1.5.

Suggeriamo di creare, utilizzando un client FTP, una nuova cartella nella directory radice del server web remoto e di copiarvi tutti i file (upload) contenuti nella cartella locale C:\Inetpub\wwwroot\nomedelsitoJoomla25.

Nel frattempo, mentre il client FTP provvede ad effettuare l’upload dei file di Joomla 2.5 nella cartella remota, è possibile esportare tutte le informazioni contenute nel nuovo database MySQL. Per procedere, suggeriamo di aprire il prompt dei comandi e digitare quanto segue per portarsi nella cartella di lavoro di MySQL:

cd\Programmi\MySQL\MySQL Server 5.1\bin

(verificare il percorso corretto).

Digitando il comando seguente si potrà quindi generare il cosiddetto “dump” della base dati di Joomla 2.5, un file che è compatibile con PHPMyAdmin, prodotto messo a disposizione da molti provider Internet, e che consentirà di importare le informazioni MySQL sul server remoto:

mysqldump -uroot -ptest123 nomedeldatabaseJoomla25 > "%userprofile%\dump.sql"

Al posto di test123 dovrà essere specificata la password associata all’account root di MySQL sul sistema locale mentre nomedeldatabaseJoomla25 dovrà essere sostituito col nome del database MySQL di Joomla 2.5 che si desidera esportare.

Nel nostro caso, il file “dump” del database di Joomla 2.5 verrà memorizzato nella cartella di sistema dell’utente corrente di Windows. Per accedervi rapidamente, è sufficiente digitare %userprofile% in Start, Esegui. Qui si troverà un file denominato dump.sql: aprendolo con un normale editor di testo (senza modificarlo) ci si accorgerà di come esso contenga tutte le “istruzioni” per generare un database MySQL contenente tutte le informazioni dell’installazione di Joomla 2.5 locale.

Dopo aver effettuato il login sul server MySQL remoto, vi si potranno importare i dati generati in locale utilizzando il “dump” appena ottenuto.

Nel caso in cui si avesse a disposizione un pannello di controllo PHPMyAdmin, basterà cliccare su Importa quindi sul pulsante Sfoglia ed indicare il file dump.sql locale.

Ultimato anche questo passaggio, si dovrà modificare il file configuration.php contenuto nella sottodirectory \nomedelsitoJoomla25 sul server remoto. Per procedere, suggeriamo di utilizzare sempre un client FTP come FileZilla (vedere anche l’articolo Breve guida all’uso di FileZilla, il client FTP opensource), accedere alla cartella remota \nomedelsitoJoomla25, cliccare con il tasto destro del mouse sul file configuration.php e selezionare il comando “Visualizza/modifica“.

Affinché Joomla 2.5 appena caricato via FTP sul server remoto possa correttamente connettersi alla base dati MySQL, bisognerà variare le impostazioni di alcune variabili assegnate nel file configuration.php.

In particolare, alla variabile $host va associato l’IP del server MySQL remoto mentre, ovviamente, in corrispondenza di $user e $password vanno specificati nome utente e password necessari per l’accesso al database.
Poco più sotto, in corrispondenza della variabile $db, va specificato il nome della base dati MySQL.
Anche il contenuto delle variabili $log_path e $tmp_path dev’essere regolato in modo corretto.

Modificato e salvato il file configuration.php si dovrà acconsentirne il caricamento online (“Inviare il file modificato al server?“) con FileZilla.

Importantissima anche la modifica di due ulteriori variabili: $live_site e $ftp_root. Nella prima deve essere indicato l’indirizzo completo del sito (esempio: http://www.nomedelsito.abc/nomedelsito25) mentre nella seconda ($ftp_root) solo l’eventuale sottodirectory in cui è installato Joomla 2.5 preceduta da una barra (nel nostro esempio: /nomedelsito25).
Impostando correttamente queste due variabili si eviterà la comparsa di strani errori (“Fatal error: allowed memory size of bytes exhausted) ed il mancato caricamento dei fogli di stile e degli elementi grafici del template.

La parte più pesante del lavoro di migrazione da Joomla 1.5 a Joomla 2.5 può dirsi adesso finalmente conclusa.

Dopo aver riorganizzato, dal pannello di amministrazione, la struttura dei contenuti del sito, si potrà spostarlo nella root del server web ricordandosi di modificare l’impostazione delle quattro variabili $log_path, $tmp_path, $live_site e $ftp_root.

Ti consigliamo anche

Link copiato negli appunti