Esistono diverse ragioni per cui potrebbe essere utile clonare un sito WordPress: una di esse รจ ad esempio l’esigenza di dover migrare un’installazione da uno spazio hosting ad un altro cosรฌ come da un remoto a locale e viceversa, oppure si potrebbe predisporre di una copia completa del proprio sito su cui effettuare dei test al di fuori dell’ambiente di produzione (creando quella che tecnicamente viene chiamata “area di staging”) in cui eseguire modifiche e aggiornamenti senza influire sulla continuitร di servizio e mettendosi al riparo da malfunzionamenti e comportamenti inattesi.
Le operazioni di clonazione sono sostanzialmente delle procedure di backup e ripristino in una posizione differente da quella di origine che coinvolgono il database dell’applicazione e i file che la costituiscono. In questo breve approfondimento analizzeremo due modalitร differenti che permettono di portarla a termine, la prima completamente manuale, la seconda effettuabile tramite l’ausilio di un plugin.
Clonazione manuale di un’istanza di WordPress
Per descrivere la clonazione manuale di un sito Web creato con WordPress terremo conto di quello che รจ l’ambiente di produzione di riferimento per la piattaforma: Linux.
Clonazione del database con PhpMyAdmin
Generalmente anche i Web hosting piรน economici mettono a disposizione un’installazione di PhpMyAdmin, interfaccia visuale per l’interazione con il DBMS MySQL, che consente di effettuare una copia del database di WordPress.
Per far questo รจ sufficiente lanciare l’applicazione, selezionare la base di dati che si desidera copiare per poi cliccare su “Esporta”. Verrร cosรฌ visualizzato un semplice form che permette di scegliere il metodo di esportazione da utilizzare (quello “Rapido” รจ piรน che sufficiente per i nostri scopi) e il formato della copia che, per semplificare la procedura, sarร SQL.
Una volta cliccato su “Esegui” non rimane altro da fare che scegliere il percorso di destinazione del file “.sql” generato (“cp-db-wp.sql” nel caso del nostro esempio) e cliccare su “Salva”.
Fatto questo, sempre da PhpMyAdmin, รจ possibile scegliere il database (ad esempio “test-db”) nel quale si desidera importare i dati precedentemente estratti cliccando su “Database” per poi utilizzare il pulsante “Importa” con cui accedere alla sezione chiamata “Importazione nel server corrente in corso”. In essa รจ disponibile l’opzione “Cerca sul tuo computer:” che, dopo aver cliccato su “Scegli file”, permette di selezionare la copia da importare dal proprio terminale e di concludere la procedura tramite il pulsante “Esegui”.
Clonazione del database da linea di comando
Le operazioni precedentemente descritte possono essere effettuate anche da linea di comando tramite un client SSH o il Terminale di Linux. In questo caso, se non รจ stato ancora creato il database di destinazione per i dati prelevati dalla base di dati d’origine, รจ possibile effettuare questo passaggio lanciando la seguente istruzione basata sul comando SQL CREATE DATABASE, dove l’argomento “-e” consente di concluderne l’esecuzione per poi arrestare il processo inizializzato:
mysql --user=nomeutente --password=password -e 'CREATE DATABASE test-db;'
Una volta creato il nuovo database รจ possibile utilizzarlo per la clonazione tramite l’istruzione proposta di seguito, dove mysqldump รจ appunto il comando di MySQL che consente di effettuare una copia fedele del database passato come argomento (“cp-db-wp”):
mysqldump --user=nomeutente --password=password cp-db-wp | mysql --user=nomeutente --password=password test-db
Migrazione dei file
Se desideriamo semplicemente migrare il nostro sito Web basato su WordPress da uno spazio hosting ad un altro, magari modificando anche il nome a dominio associato, l’opzione piรน immediata per trasferire i file รจ quella di utilizzare un classico client FTP come FileZilla.
In ogni caso Linux supporta un comando invocabile da Terminale (o piรน precisamente un’utility) denominato scp (secure copy) che consente qualsiasi tipo di trasferimento: da locale a remoto, da remoto a locale e tra due macchine in remoto tramite un’istruzione lanciata da una postazione locale. Quest’ultima operazione puรฒ essere effettuata ad esempio digitando l’istruzione seguente:
scp -Cpr /var/www/wp user@serverdidestinazione:/var/www/copia-di-wp
In essa vengono utilizzate nell’ordine le opzioni โC, che determina la compressione dei dati inviati, -p, che preserva le modifiche effettuate sui file, e โr, che comunica a scp di copiare ricorsivamente le directory.
Nell’esempio le directory di origine e di destinazione si trovano entrambe sul percorso “/var/www/” che รจ in genere quello in cui vengono salvati i file di un sito Internet in una configurazione basata sul Web engine Apache in ambiente Linux.
Si noti infine l’uso della stringa user@serverdidestinazione in cui “user” deve essere sostituito con l’utente del server di destinazione e “serverdidestinazione” con l’indirizzo IP di quest’ultimo.
Se invece l’intenzione รจ quella di effettuare dei test di sviluppo su modifiche o aggiornamenti prima del passaggio in produzione, la scelta migliore รจ probabilmente quella di replicare l’installazione del CMS in un sottodominio appositamente dedicato. A partire da un nome a dominio come per esempio “mrw.it” si puรฒ creare ad esempio il sottodominio “testwww.mrw.it.”
Dato che in questo secondo caso si opera sul medesimo server il comando di riferimento per la copia dei file non รจ piรน scp ma cp che ha una funzione molto simile ma viene impiegato per la copia interna di file e directory e puรฒ essere utilizzato in un’espressione come quella proposta di seguito:
cp -a /var/www/mrw /var/www/mrw/testwp
Nell’istruzione risulta evidente l’utilizzo di un’unica opzione, -a, che permette di effettuare l’archiviazione dei file coinvolti.
Modifica del file di configurazione e delle impostazioni
Una volta migrati i dati e i file, per completare la procedura di migrazione manuale non rimane altro che rendere la copia del sito raggiungibile dal Web a dal proprio ambiente locale di sviluppo.
Per far questo รจ necessario innanzitutto editare il file di configurazione di WordPress, wp-config.php, ciรฒ con lo scopo di modificare le informazioni relative alla sezione “MySQL settings” dove si devono aggiornare i dati relativi a nome del database, nome utente, password e host con quelli della nuova istanza del CMS:
Completato anche questo passaggio non rimane altro che accedere alla dashboard di WordPress e accedere alla sezione “Impostazioni generali” tramite il percorso “Impostazioni > Generali” in cui settare l’URL del nuovo indirizzo di WordPress e quella del nuovo indirizzo del sito.
Fatto questo la copia creata dovrebbe essere perfettamente funzionante.
Clonazione di WordPress tramite plugin
Esistono diversi plugin che permettono di effettuare il backup e il ripristino di un’installazione di WordPress consentendone la clonazione. Per questa trattazione รจ stato scelto Duplicator, una soluzione estremamente semplice da utilizzare che puรฒ essere installata come qualsiasi altra estensione del CMS.
Accediamo quindi alla dashboard del sito Web da clonare, seguiamo il percorso “Plugin > Aggiungi nuovo”, utilizziamo il motore di ricerca dei plugin digitando la keyword “Duplicator”, portiamoci sul riquadro “Duplicator โ Plugin di migrazione per WordPress”, clicchiamo su “Installa adesso” e infine su “Attiva”.
Nella sidebar dell’area di amministrazione comparirร cosรฌ la voce “Duplicator” che, se cliccata, consente di visualizzare il sottomenรน “Pacchetti” da utilizzare per la copia di database e file.
Clonazione di database e file con Duplicator
I pacchetti di Duplicator non sono altro che dei backup contenenti i dati di un’installazione di WordPress. La prima fase per la creazione di un pacchetto รจ quella della configurazione durante la quale รจ possibile innanzitutto definire un nome per quest’ultimo (“20210506_bk_wp” nel nostro esempio).
ร inoltre possibile decidere se archiviare soltanto il database o se abilitare dei filtri per escludere directory, estensioni o file specifici dalla duplicazione. Nel caso in cui si voglia creare un package completo basterร non operare alcuna scelta nella sezione “Archivio”.
La sezione “Installer” consente di configurare il pacchetto da generare indicando i dati del server MySQL di destinazione, anche questa parte puรฒ essere ignorata in quanto i medesimi parametri saranno specificabili al momento della clonazione vera e propria.
Una volta terminata la fase di configurazione, cliccando sul pulsante “Successivo” si puรฒ passare a quella di scansione del sistema che permette di capire se il sito di origine non presenta delle controindicazioni alla duplicazione, come per esempio una dimensione eccessiva dell’archivio composto da file e database che potrebbe determinare un timeout e quindi un’estrazione incompleta dei dati.
Se la scansione non dovesse evidenziare delle criticitร si potrร cliccare sul pulsante “Compila” e procedere alla creazione del pacchetto che avviene in modalitร completamente automatica.
La compilazione produce due output: un file per l’installazione del pacchetto (“installer.php”) e l’archivio contenente file e database.
Questi ultimi devono essere scaricati e successivamente uploadati nello spazio FTP del server in cui si desidera installare il clone del proprio sito WordPress.
Installazione del clone
Per installare il pacchetto creato in precedenza รจ necessario aprire il file “installer.php” tramite il proprio browser Web. Se per esempio stiamo lavorando sul sottodominio “testwww.mrw.it” l’URL da digitare sarร “https://testwww.mrw.it/installer.php”. Il sistema effettuerร un controllo per verificare che l’ambiente di destinazione sia compatibile con l’installazione e se l’esito dovesse essere positivo si potrร cliccare su “Next”.
Fatto questo inizia la fase di estrazione dei file dall’archivio che potrebbe avere una durata variabile a seconda della grandezza di quest’ultimo.
Una volta terminata l’estrazione, il sistema richiederร di indicare i parametri relativi alla connessione con il database in cui si desidera importare i dati. Prima di procedere รจ necessario superare una fase di validazione (pulsante “Test database”) durante la quale verrร operata la verifica dei requisiti necessari per l’installazione.
Se la verifica dovesse avere successo si potrร cliccare su “Next” tenendo conto che tutti i dati eventualmente contenuti in precedenza nel database scelto verranno rimossi definitivamente.
Si passerร quindi alla fase di aggiornamento dei dati relativi all’istanza di WordPress da generare. In questo caso perรฒ, a parte un’eventuale modifica al parametro relativo al titolo, il sistema dovrebbe essere in grado di identificare autonomamente sia l’URL del sito che il percorso di destinazione nel server ospitante.
Cliccando per l’ultima volta sul pulsante “Next” la clonazione sarร conclusa e l’installer di Duplicator presenterร da subito un collegamento alla pagina di login di WordPress tramite la quale autenticarsi con gli stessi dati del sito Web clonato.
La prima autenticazione permette anche di rimuovere tutti i file precedentemente utilizzati per la procedura di installazione.
In questo modo si puรฒ avere la garanzia che tale operazione non potrร essere ripetuta causando la sovrascrittura di eventuali aggiornamenti del sito Web.