Trasferire sito WordPress: la guida completa

18 Luglio 2020 / Pubblicato in:  da Ivan Messina
Nessun commento

Trasferire un sito WordPress è un'operazione abbastanza semplice, se si sa come fare.

Senza sapere come fare è possibile creare problemi al sito, in alcuni casi irreparabili.

Esistono vari modi per trasferire un sito WordPress, il modo più semplice è forse usando un plugin, come scriverò a breve in un altro articolo. In questa guida tralascerò la parte relativa al trasferimento delle email, di cui parlerò in un articolo successivo

Ogni settimana trasferiamo una decina di siti web da altri provider, abbiamo quindi sviluppato una certa esperienza in questo tipo di operazioni.

Ti ricordo che se vuoi cambiare hosting pensiamo noi alla migrazione del tuo sito. Per quanto riguarda le email, se il tuo provider ha cPanel saranno trasferite in automatico. Se invece il tuo provider non ha cPanel possiamo migrarle ad un costo extra per account email.

Vediamo quindi come fare per migrare un sito WordPress da un provider all'altro. Se vuoi capire come migrare da WordPress.com a WordPress self hosted ho scritto un articolo ad hoc.

Trasferire Sito WordPress Guida Completa

Un sito WordPress altro non è che un insieme di files ospitati su un server ed un database mysql che contiene tutte le informazioni, ad esempio il contenuto delle pagine e degli articoli e le impostazioni del tuo sito web.

Avere chiaro come funziona ci serve a capire cosa dobbiamo fare per trasferire un sito WordPress da un server all'altro. In pratica l'operazione si riduce a tre passaggi:

  • Spostamento dei files
  • Spostamento del database
  • Riconfigurazione di WordPress per funzionare col nuovo database

Una volta eseguite queste operazioni possiamo procedere a modificare il puntamento del dominio oppure verificare che il sito web sia funzionante modificando il file hosts locale.

Vediamo quindi come eseguire il trasferimento manuale di WordPress e cosa si intende per trasferimento manuale. Una volta capito come fare vedremo che ci sono vari sistemi, a seconda del caso conviene usare uno piuttosto che l'altro.

Trasferire sito WordPress manualmente

Il nostro staff si riferisce ad un trasferimento manuale in quei casi in cui dobbiamo manualmente spostare i files ed il database da un altro provider verso SupportHost.

Quando invece il precedente provider usa cPanel ed ha la funzione backup nativa attiva possiamo procedere con un trasferimento da cPanel a cPanel, che ci risparmia tempo ed esegue un lavoro più completo, copiando l'account da un server all'altro in modo completamente automatico.

Trasferimento manuale dei files

Il primo passo quando vogliamo spostare un sito web da un server all'altro consiste nel trasferimento dei files. Per eseguire questa operazione abbiamo varie opzioni. Vediamo come fare.

File manager

Molti hosting provider offrono un file manager che permette di gestire i files sull'account tramite una semplice interfaccia grafica direttamente dal browser.

La maggior parte di questi file manager ha una funzione per comprimere file e cartelle in un file zip.

File Manager Comprimi
Crea un file zip con file manager

Una volta creato l'archivio puoi scaricarlo tramite il file manager, caricarlo sul nuovo account tramite il file manager del nuovo provider e scompattarlo.

Trasferire Sito WordPress Estrai Zip
Decomprimi un file zip con il file manager

Se hai accesso SSH al tuo account, puoi scaricare il file compresso direttamente sul server usando "wget" quindi senza la necessità di scaricare prima i files sul tuo computer per poi doverli caricare dal tuo computer sul nuovo server.

FTP

Puoi scaricare i files tramite FTP sul tuo computer, quindi caricarli sempre tramite FTP sul nuovo server. Per fare questo puoi usare un software come Filezilla che tramite una semplice interfaccia grafica ti permette di eseguire queste operazioni.

Trasferire Sito WordPress Filezilla

Il problema di questo sistema, e dell'utilizzo del file manager, è che devi scaricare tutti i files sul tuo computer prima di poterli ricaricare sul nuovo server.

Vediamo come saltare questo passaggio.

LFTP con SSH

Se il tuo provider offre accesso SSH, noi lo offriamo incluso nel prezzo sull'hosting semidedicato, hosting Magento e hosting PrestaShop, e con SSH offre LFTP allora puoi velocizzare l'operazione.

Non devi necessariamente avere i permessi di root per eseguire questa operazione, puoi infatti farlo anche come utente cPanel.

In pratica ti connetti al server, e poi dal server di destinazione (quello sul quale vuoi spostare i files del tuo sito) ti connetti al server sorgente (quello che al momento ospita il sito) tramite LFTP.

In questo modo potrai scaricare tutti i files dal server sorgente senza bisogno di scaricarli prima sul tuo computer, velocizzando di molto l'operazione.

Questo è quello che facciamo quando trasferiamo un sito di un cliente da Aruba, dal momento che Aruba non usa cPanel.

Se non hai i permessi di root

Se hai soltanto i permessi di cPanel dovrai spostarti all'interno della cartella public_html del tuo account quindi lanciare il comando:

lftp -c 'open -e "set ftp:list-options -a; set ftp:ssl-allow no; set xfer:log 1; mirror cartella_sorgente . -c -P10 --log=./transfer.log" -u utente_ftp,password indirizzo_ip'

Se hai i permessi di root

Se invece sei su una macchina dedicata ed hai i permessi di root devi spostarti all'interno della cartella public_html dell'account che vuoi migrare e lanciare questo comando:

sudo -u user_cpanel_supporthost lftp -c 'open -e "set ftp:list-options -a; set ftp:ssl-allow no; set xfer:log 1; mirror cartella_sorgente . -c -P10 --log=./transfer.log" -u utente_ftp,password indirizzo_ip'

Come vedi in entrambi gli esempio abbiamo bisogno dell'accesso FTP per poter scaricare tutti i files. Creiamo un file di log nel caso qualcosa andasse storto ed impostiamo il numero di trasferimenti simultanei a 10 per fare prima.

Nel nostro caso specifico preferiamo usare il comando "screen" in modo che nel caso chiudessimo accidentalmente la shell il server continui il trasferimento fino a che questo non viene completato.

Trasferimento manuale del database MySQL

A questo punto abbiamo trasferito i files sul nuovo server, oppure sono in corso di trasferimento. Questo dipende dalla dimensione totale dei files da trasferire e dal loro numero.

Adesso dobbiamo spostare il database dal vecchio al nuovo server.

La maggior parte dei CMS, tra cui ovviamente anche WordPress usano un database MySQL per memorizzare i dati. Come dicevo prima ad esempio, il testo gli articoli viene memorizzato sul database. Il testo che stai leggendo altro non è che una riga nel database, all'interno di una tabella chiamata "wp_posts".

Per l'esportazione e la successiva importazione di una database MySQL si usa un formato di file .sql, solitamente compresso per ridurne le dimensioni e rendere più agevole il download dal server sorgente e l'upload sul server di destinazione.

Il file sql altro non è che un file di testo che contiene una serie di direttive (queries) che spiegano al server come creare un database identico.

Per poter gestire ed esportare un database ogni hosting ti mette a disposizione uno strumento per la gestione, solitamente phpMyAdmin.

phpMyAdmin

phpMyAdmin è senza dubbio lo strumento più usato per la gestione del database MySQL. Questo ci permette di eseguire operazioni base, ma anche le operazioni più avanzate. In pratica ci permette di gestire completamente il database. Ovviamente è possibile creare dei problemi se eseguiamo una modifica in modo errato.

Se vogliamo trasferire il nostro sito web da un server all'altro dobbiamo esportare il database in formato SQL compresso, assicurandoci di esportare sia la struttura che i dati.

Adminer

Adminer è un ottimo strumento per la gestione del database ed ha il vantaggio di essere un solo file php ed uno strumento molto leggero.

Questo è inoltre lo strumento di default che viene usato da local by flywheel e quindi potresti aver bisogno di usarlo.

Il fatto che adminer si compone di un solo file lo rende molto utile in quei casi in cui ci sia un problema nel server sorgente. Alcuni provider per cercare di bloccare i trasferimenti uscenti bloccano la funzione esporta di phpMyAdmin eliminando un file, in questo modo diventa impossibile esportare il database perché si riceve un errore.

In alcuni casi ci siamo trovati in questa situazione, ed abbiamo caricato adminer sul server tramite FTP, un'operazione velocissima visot che si tratta di un solo file. Abbiamo poi usato adminer per esportare il database in formato sql per la migrazione.

Importare il database

Per completare la migrazione dobbiamo creare un database sul server di destinazione. Una volta creato il database con il suo utente andiamo ad importare il database sul server di destinazione.

Se stai spostando un sito da un altro provider verso SupportHost per l'importazione dovrai usare phpMyAdmin, dal momento che questo è lo strumento che mettiamo a disposizione col nostro servizio.

Trasferire Sito WordPress Importa Database
Importa un database con phpMyAdmin

A questo punto abbiamo completato il trasferimento di tutti i files e pure del database. Molto probabilmente mentre eseguivamo la migrazione del database i files hanno completato il trasferimento. Ma non abbiamo ancora finito.

Adesso è il momento di riconfigurare WordPress.

Ri-configurazione di WordPress

Cosa vuol dire riconfigurare WordPress?

Come ho detto all'inizio WordPress altro non è che un insieme di files che ha bisogno di un database per funzionare.

Per accedere al database un qualsiasi script ha bisogno di un nome utente e di una password. Inoltre per poter accedere si deve conoscere il nome del database ed il suo hostname, ovvero l'indirizzo al quale possiamo raggiungerlo.

Alcuni provider hanno dei server separati per i database MySQL (come ad esempio Aruba) e quindi nel campo hostname dovrai inserire l'indirizzo IP. Nel nostro caso dovrai usare localhost, significa che il database è ospitato sullo stesso server che ospita i files del tuo sito web.

Dobbiamo quindi modificare il file di configurazione di WordPress per fornire i dati di accesso al nuovo database. Molto probabilmente infatti se visitassi adesso il tuo sito internet appena migrato vedresti un errore di connessione al database.

Dovrai modificare il file wp-config.php.

Puoi farlo scaricandolo sul tuo computer e modificandolo con un editor di testo, oppure usando il file manager che mettiamo a disposizione.

Dovrai andare a cercare questa parte e modificare inserendo i dati corretti:

/** The name of the database for WordPress */
define( 'DB_NAME', 'nome_database' );

/** MySQL database username */
define( 'DB_USER', 'username' );

/** MySQL database password */
define( 'DB_PASSWORD', 'password');

/** MySQL hostname */
define( 'DB_HOST', 'localhost' );

A questo punto salviamo e abbiamo completato la migrazione.

Prima di andare a spiegare come fare per controllare che abbiamo trasferito WordPress correttamente e modificare il puntamento del dominio voglio spendere due parole su come trasferire il sito in un modo più automatizzato.

Migrazione sito WordPress in automatico

In realtà in processo non è manuale, ma all'interno del nostro team lo chiamiamo così, dal momento che chiamiamo il processo appena descritto "trasferimento manuale".

Inizio col dire che esistono svariati plugin per trasferire un sito WordPress, a mio avviso fin troppi. Scriverò un articolo dettagliato su questi plugin in futuro.

La migrazione a cui faccio riferimento è la migrazione da cPanel a cPanel. Ovvero se il tuo vecchio provider ha cPanel è possibile copiare l'account in pochi semplici passi.

Per eseguire questo tipo di operazione hai bisogno dei permessi di root. Vale a dire che se non hai una soluzione dedicata non puoi farlo in autonomia.

Permessi di root su entrambi i server

Se hai i permessi di root su entrambi i server l'operazione è piuttosto facile. Accedi a WHM del server di destinazione e clicca sull strumento "transfer tool".

Trasferire Sito WordPress Transfer Tool

Qui dovrai inserire i dati di accesso di root del server sorgente:

  • IP
  • Porta SSH
  • Password di root (a meno che non hai configurato una chiave pubblica per l'accesso)
Trasferire Sito WordPress Transfer Tool Access

A questo punto vedrai una lista di account e potrai selezionare quelli da migrare, che verranno copiati tali e quali dal vecchio al nuovo server.

Usando questo sistema l'account viene copiato in maniera integrale, come se facessi copia-incolla.

Se non hai la password di root

Questo è il metodo che usiamo quando trasferiamo il sito di clienti che è ospitato su un provider che usa cPanel, come ad esempio SiteGround.

Nella maggior parte dei casi ti ritroverai a migrare account senza avere accesso root al server sorgente. In questi casi avrai soltanto i dati di accesso al cPanel.

Ma non c'è da disperarsi, possiamo ancora eseguire la migrazione in modo automatico. In questo caso la funzione "Transfer or Restore a cPanel Account" ci viene in aiuto.

Trasferire Sito WordPress Cpanel

Andiamo quindi a selezionare "Transfer from Remote cPanel Account" ed inseriamo i dati di accesso dell'account cPanel del server sorgente: ip, username e password.

Trasferire Sito WordPress Trasferisci Account Remoto

In alcuni casi questo metodo può dare degli errori.

In alcuni casi è necessario aggiungere, nel server di destinazione, l'IP del server sorgente alla lista degli IP consentiti. In caso contrario non sarà possibile completare la migrazione e si ottiene un errore.

In alcuni casi la funzione di backup tramite API (proprio quella che stiamo cercando di usare) viene bloccata dal provider allo scopo di rendere la vita difficile ai clienti che vogliono andarsene. Una pratica a nostro avviso scorretta ma non possiamo farci niente, se non evitare lo stesso trattamento ai nostri clienti.

In questo caso sarà necessario accedere al cPanel del server sorgente, quindi tramite la funzione backup di cPanel creare un backup. Durante la creazione di questo backup possiamo decidere di inviare il backup su un altro server tramite FTP, inviandolo quindi sul nostro account cPanel.

Possiamo in alternativa crearlo nella cartella home del server sorgente, quindi scaricarlo tramite wget sul server di destinazione. L'opzione di inviarlo tramite FTP ci fa risparmiare tempo.

Una volta che abbiamo il file di backup sul server di destinazione possiamo eseguire un ripristino.

Nota che per poter eseguire un ripristino devi avere accesso root e il file deve essere all'interno della cartella /home del server.

Per eseguire il ripristino devi usare lo stesso tool che ho indicato prima: "Transfer from Remote cPanel Account" selezionando però la prima opzione: "Restore from a local cpmove file".

Modificare il puntamento del dominio

A questo punto ci troviamo con lo stesso sito funzionante in due diversi server, o almeno è quello che speriamo.

Il prossimo passo consiste nel controllare che il sito effettivamente funzioni. Operazione che va eseguita prima di modificare il puntamento del dominio.

Dobbiamo quindi dire al nostro computer, ma solo al nostro, che quando visitiamo il sito vogliamo vedere quello che sta sul nuovo server e non quello che è ancora sul vecchio server.

Per fare questo è necessario modificare il file hosts sul nostro computer. Questo dirà al nostro computer che quando visualizziamo il sito vogliamo che questo sia caricato dal nuovo server, di cui indichiamo l'indirizzo IP.

In questo modo siamo sicuri che il sito funzioni correttamente. Ci basta controllare la home ed una pagina interna. Se entrambe funzionano abbiamo completato la migrazione del nostro sito WordPress con successo.

A questo punto abbiamo quindi lo stesso sito, funzionante su entrambi i server e possiamo procedere alla modifica del puntamento del dominio.

Agendo in questo modo non avremo alcun downtime. Adesso il dominio punta al server sorgente, dove il sito è funzionante. Appena cambiamo il puntamento del dominio questo inizierà a puntare al nuovo server, dove lo stesso identico sito è già stato trasferito ed è funzionante e non avremo quindi nessun disservizio.

Se hai ordinato il trasferimento del dominio non sempre potrai modificare il puntamento, alcuni provider non permettono la modifica del puntamento del dominio se un dominio è in fase di trasferimento.

In questo caso è possibile modificare a mano le zone DNS da cPanel modificando, sul server sorgente, il vecchio IP e cambiandolo con il nuovo. In questo modo in pochi minuti il sito punterà al nuovo.

Trasferimento di un sito ecommerce

Se hai un sito ecommerce, ad esempio usi woocommerce al trasferimento si aggiunge un livello di complessità.

Se un cliente ordina uno dei tuoi prodotti dopo che hai eseguito il backup, ma prima che il dominio punta al nuovo server il nuovo ordine sarà registrato sul database del vecchio server e non sarà presente nel nuovo sito. Questo perché abbiamo generato il backup del database prima che l'ordine fosse creato.

Possiamo prevenire questo problema in un modo abbastanza semplice.

Prima di iniziare il trasferimento in questi casi è consigliabile impostare il sito web in manutenzione, in modo tale che nessun utente possa visitarlo. Soltanto a questo punto procediamo col trasferimento del sito web.

Una volta terminato il trasferimento, come indicato sopra modifichiamo il file hosts sul nostro computer in modo da controllare che tutto funzioni correttamente. In questo momento disabilitiamo la modalità manutenzione sul sito web sul nuovo server.

In questo modo dopo che modifichiamo il puntamento del dominio gli utenti inizieranno a vedere il sito sul nuovo server, non più in manutenzione. Mentre quegli utenti che a causa dei tempi di propagazione del dominio continueranno a vedere il vecchio sito lo vedranno in manutenzione, senza quindi la possibilità di ordinare, creando un ordine che andrebbe perduto durante la migrazione.

Ovviamente data la delicatezza della migrazione di un sito ecommerce è consigliabile eseguire la migrazione in un momento in cui il traffico è minimo, come ad esempio in orari notturni o nel weekend.

Errori durante la migrazione

Se qualcosa può andar male, lo farà.

Legge di Murphy

È possibile riscontrare alcuni errori durante la migrazione o quando andiamo a controllare il corretto funzionamento del sito web.

Andiamo a vedere i principali per capire come risolverli.

L'importazione del database dà errore

In alcuni casi è possibile che un database troppo grande possa creare problemi durante l'importazione.

Il primo controllo da eseguire in questi casi consiste nel capire quale tabella ha dimensioni troppo grandi.

Ad esempio un sito di un cliente aveva poche pagine, ma un database di circa 100MB. Da un controllo abbiamo notato che la stragrande maggioranza dello spazio era usata dai commenti spam, mai approvati con email russe.

Abbiamo risolto lanciando una query per eliminare questi commenti.

DELETE FROM wp_comments WHERE comment_author_email LIKE '%.ru' and comment_approved != '1'

In pratica abbiamo eliminato tutti i commenti non approvati postati da email russe, quindi palesemente spam.

Abbiamo poi eliminato i meta per i commenti appena eliminati.

DELETE FROM wp_commentmeta WHERE NOT IN (SELECT comment_ID FROM wp_comments)

In pratica abbiamo eliminato tutti i campi nella tabella wp_commentmeta per cui era già stato eliminato il commento con la query precedente.

Se invece si tratta di un database di grandi dimensioni puoi esportare le tabelle a piccoli gruppi in modo da ridurne le dimensioni, oppure usare un software come Sequel Pro per importare il database

Errore di connessione al database

In questo caso la soluzione è semplicissima. Non devi far altro che controllare il file wp-config.php ed assicurarti che i dati inseriti sono corretti.

Questo problema è dovuto ai dati di connessione al database errati.

Errore 404 di WordPress

Se vedi la home page del tuo sito, ma non riesci a vedere le pagine interne a causa di un errore 404 la soluzione è molto semplice.

WordPress ha bisogno che il file .htaccess sia configurato correttamente. Detto in parole povere questo file indica al server come devono essere visti gli url del sito. Se questo file manca o contiene una configurazione errata non sarai in grado di vedere le sottopagine.

In Linux i files che iniziano col punto (.), come in questo caso .htaccess, sono files nascosti. È possibile quindi che durante la migrazione non hai trasferito quel file. In questo caso controlla se il file è presente sul server di destinazione. In caso negativo non devi far altro che spostarlo dal server sorgente al server di destinazione.

Se il file .htaccess è presente sul server di destinazione allora devi accedere come amministratore, andare su:

Impostazioni -> permalink

E salvare le impostazioni senza eseguire alcuna modifica. In WordPress il salvataggio delle impostazioni dei permalink forza una riscrittura di una parte del file .htaccess e rende nuovamente funzionante tutti i link delle pagine interne.

Errore 500 di WordPress

In alcuni casi è possible che WordPress ti mostri un errore 500 sul nuovo server, mentre resta perfettamente funzionante sul vecchio.

In questo caso il problema può essere dovuta ad un'impostazione sul nuovo server, una direttiva errata in .htaccess oppure qualche file php mancante che si è "perso per strada" durante la migrazione.

Il modo più semplice in questo caso è di controllare il file error_log, un file di errore che viene salvato nella root di WordPress e in base all'errore mostrato capire il motivo dell'errore in modo da risolvere.

Si scarica in file invece di vedere il sito

Questo è un errore molto comune.

Molti provider, incluso noi, usano un codice personalizzato nel file .htaccess per impostare una versione PHP diversa da quella di default del server.

Quando i sistemi usati per scegliere la versione PHP sono diversi succede che questi codici non siano compatibili tra i due server. In questo caso il sito viene visualizzato come una pagina bianca e viene scaricato un file.

Per risolvere non devi far altro che modificare il file .htaccess ed eliminare la parte di codice che genera problemi. Si tratta di un codice di questo tipo:

AddHandler application/x-httpd-php70 .php .php5 .php4 .php3

Conclusioni

In questo articolo abbiamo visto quali diversi metodi possiamo usare per trasferire un sito WordPress da un server ad un altro senza creare problemi.

Abbiamo poi visto come testare che tutto sia funzionante e come cambiare il puntamento del dominio in modo da non avere alcun downtime durante la migrazione.

Hai dubbi su come eseguire la migrazione del tuo sito web? Alcune parti della guida non erano chiare? Fammelo sapere nei commenti.

Potrebbe interessarti anche:

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *