Migrazione di un sito web Drupal

In questo tutorial andremo a descrivere come migrare un sito web Drupal da un host ad un altro.

In questa guida mostreremo un processo di migrazione realizzato da scratch, senza l’ausilio di plugin. Verrà mostrato come creare un nuovo server lamp, installarvi i moduli e servizi necessari al funzionamento del CMS Drupal, e poi come esportare files e database dal vecchio server al nuovo host. Verranno infine offerti anche preziosi spunti di troubleshooting da applicare nel caso che qualcosa non sembri funzionare come ci si aspetta.

migrazione drupal

Migrazione di un sito web Drupal

Prima di iniziare è corretto aprire una piccola parentesi: esistono plugin Drupal che consentono di effettuare una migrazione automatica. Tuttavia, per motivi di sicurezza e performance, sarebbe meglio avere il più possibile sotto controllo l’intero iter processuale, in modo da ottenere una integrazione ad hoc del nuovo server lamp con il vostro ambiente di produzione.

In questo esempio utilizzeremo un sito web Drupal attualmente sul dominio www.ambiente-di-sviluppo.it/drupal che deve essere migrato su un altro dominio www.ambiente-di-produzione.it.

Controllo compatibilità ambientale

La prima cosa da fare è accertarci che il nuovo dominio dove migreremo il sito web Drupal sia compatibile con il vecchio dominio.

In soldoni dobbiamo controllare che le versioni di Apache, MySQL e PHP installate sul nuovo ambiente siano quanto meno aggiornate alle versioni installate sul vecchio ambiente.
Se non lo fossero, potremmo andare incontro a problematiche strutturali che potrebbero manifestarsi con errori in fase di caricamento delle pagine. In caso di errata configurazione di Apache il server web potrebbe non rispondere proprio alle richieste di caricamento delle pagine. Si possono intuire avvisaglie di un’errata configurazione di Php/mMsql invece già da due sintomi che Drupal manifesta sia nelle prime fasi di test. Il primo sintomo è una difficoltà a caricare correttamente la schermata del pannello di controllo di amministrazione del CMS, che si può manifestare in diverse varianti che vanno dal totale rifiuto di autenticare l’utente admin al mancato salvataggio delle modifiche. Il secondo è il temuto wsod (“white screen of death“) tristemente noto agli admin di portali Drupal. Se queste due evenienze si verificano già in fase di early testing, il provvedimento migliore da prendere è la completa reinstallazione e riconfigurazione dei pacchetti Php e Mysql.

Backup dei file e del database

Quando si eseguono queste operazioni così invadenti è sempre una buona abitudine effettuare il backup del sito che si sta migrando.

Collegandoci in FTP al sito www.ambiente-di-sviluppo.it/drupal scarichiamo localmente sul nostro computer tutti i file del sito, mentre loggandoci al phpMyAdmin eseguiamo un’esportazione dell’intero database. E’ sufficiente utilizzare un banale client FTP come, ad esempio, Filezilla. Durante l’operazione di backup, prestate attenzione a non cancellare erroneamente qualche file oppure a non modificare i permessi delle cartelle. Anche qui il risultato in fase di test sarebbero poi wsod difficili da debuggare.

Migrazione del database

Colleghiamoci al phpMyAdmin del nuovo dominio www.ambiente-di-produzione.it e creiamo un nuovo database, poi importiamo il database esportato in precedenza. Prestate attenzione ai character set e alle collations, che devono essere identiche tra i due database, per non ritrovarvi poi a importazione completata con caratteri particolari (solitamente accenti o segni di valuta) che non vengono visualizzati correttamente dal browser.

Migrazione dei file

Via FTP sul nuovo dominio effettuiamo l’upload dei file precedentemente salvati nella directory del dominio www.ambiente-di-produzione.it. Anche qui un’operazione banale durante la quale bisogna però prestare attenzione a non modificare erroneamente i permessi a files e cartelle. Soprattutto, evitate di assegnare distrattamente all’utente root la proprietà di files e cartelle che devono appartenere all’utente apache: anche qui la conseguenza sarebbero poi frustranti wsod.

Modifica del file settings.php

Ora che abbiamo riportato specularmente i files ed il database sul nuovo dominio dobbiamo aggiornare le credenziali di accesso al database e l’URL del sito.

Apriamo il file \sites\default\settings.php e andiamo a riga 208, leggeremo:

‘database’ => ‘Il tuo vecchio database’,
‘username’ => ‘Il tuo vecchio username’,
‘password’ => ‘La tua vecchia password’,
‘host’ => ‘localhost’,

Dobbiamo sostituire queste vecchie credenziale con le nuove credenziali che ci permetteranno di collegarci al database del nuovo dominio, il risultato sarà il seguente:

‘database’ => ‘Il tuo nuovo database’,
‘username’ => ‘Il tuo nuovo username’,
‘password’ => ‘La tua nuova password’,
‘host’ => ‘localhost’,

Se è cambiato, come nel nostro esempio, anche l’URL del sito web, dobbiamo:

  • aggiornare anche il valore della variabile $base_url a riga 281 di settings.php
  • aggiornare il valore di RewriteBase a riga 110 del file /.htaccess

Verifica dei permessi

Verifichiamo che i permessi delle sub-directory e dei files siano stati correttamente riportati anche nel nuovo dominio. Davvero, è importante, anche se sembra ripetitivo, ma la maggior parte dei problemi spesso sono causati proprio da questa distrazione, in cui cadono soprattutto webmaster provenienti dal mondo IIS non abituati a fare i conti con il sistema di permessi di Linux.

“Prova del 9”

Richiamiamo www.ambiente-di-produzione.it tramite browser.

Se la migrazione è stata portata a termine con successo vedremo il sito web Drupal come lo vedevamo sul vecchio host.

Troubleshooting

In caso di problemi, verificare :

  • corretta attribuzione dei permessi a cartelle e files,
  • corretta trascrizione delle impostazioni nel file settings.php,
  • password di accesso a Mysql,
  • se i precedenti punti sono corretti, potrebbe non rivelarsi un tentativo a vuoto reinstallare almento il modulo Php.

Michael Scarabelli
Argemonya s.r.l.

Link correlati / approfondimenti: