Wordpress: spostare il blog dal server remoto al computer locale

English version A volte è necessario far girare in locale la copia di un blog già presente sui server, per vari motivi: avere un backup su cui fare dei test, modificare un tema, muovere il blog da un server all’altro, eccetera. Col semplice metodo qui descritto, vedremo come modificare i dati di accesso al database (argomento già ampiamente discusso), ma soprattutto come cambiare, tramite un solo comando, tutti i link assoluti presenti nel blog, per evitare di avere in locale:
- nella home page: collegamenti ai post, pagine, categorie e tag che puntano al server remoto;
- nei singoli post o pagine: riferimenti ad immagini o ad altri oggetti che puntano, di nuovo, al server remoto.
Nota Questa guida sorvola rapidamente le fasi di configurazione del computer e di backup / ripristino dei database, volutamente: sono tutti argomenti ampiamente trattati sul web (vengono forniti comunque parecchi link). Preferisco concentrare l’attenzione sul problema dei collegamenti interni e dell’indirizzo della nuova home page (problema critico, in quanto rende non funzionante il blog). Siete tutti invitati a commentare / correggere / ampliare gli argomenti trattati (in particolare per quanto riguarda Windows, che al momento non posso usare e sono andato un po’ a memoria).
Preparativi
Occorre innanzitutto installare il server Web (Apache) con la mod per PHP e il server MySQL. Attenzione: i metodi proposti possono non soddisfare i requisiti minimi di sicurezza richiesti da un server web; sono pertanto da considerare solo per un uso “casalingo”, oppure per programmare in PHP.
Linux
Su Linux basta installare la piattaforma LAMP, cioè l’insieme dei programmi sopra citati:
- Se avete un processore i386 compatibile, vi consiglio di installare XAMPP: estraendo semplicemente un archivio sotto /opt, è possibile infatti installare tutto il necessario, senza interferire col vostro gestore di pacchetti (e quindi col sistema);
- Se avete un’altra architettura, dovrete installare “manualmente” tutti i pacchetti necessari dai repository della vostra distribuzione (per Debian esiste una bella guida di E-pillole).
Mac OS X
Per OS X è disponibile XAMPP (simile a LAMP per Linux); scegliete dalla pagina di download la versione corretta per la vostra architettura (powerpc o intel) e per la vostra versione OS X.
Windows
Per Windows consiglio Easy PHP, che svolge lo stesso sporco
lavoro di LAMP e XAMPP.
Aggiornamento: se volete il vostro ambiente di sviluppo sempre con voi, invece di installare Easy PHP vi consiglio l’ottima guida Come creare un ambiente di sviluppo portatile per WordPress di Cristiano Fino.
Esportare da remoto
Passiamo alla parte più importante (che dovreste già svolgere con una certa regolarità, per lo meno per quanto riguarda il database, che contiene i Dati che Non Volete Perdere
): il backup di Wordpress.
Backup dei file
Questo dovreste già saperlo fare, se siete stati voi ad installare Wordpress!
Utilizzando lo stesso programma con cui all’inizio avete caricato il blog sul server (ad esempio: Filezilla per Windows - e da poco tempo, anche per Linux e OS X, anche se ancora in versione beta, gFTP per Linux - su Debian / Ubuntu, basta il solito apt-get install gftp, e CyberDuck per Mac OS X), scaricate tutto il contenuto della directory contenente wordpress (sottodirectory comprese) in una directory locale.
Backup del database (file di dump)
Si può usare l’interfaccia web phpmyadmin (fornita solitamente da chi ci hosta), oppure, se il nostro servizio di hosting lo supporta, il plugin per Wordpress (che dovrebbe ovviare alla limitazione sulla dimensione del file di backup - o dump - imposta da phpmyadmin).
Importare in locale
Importare i file
Basta semplicemente copiare il backup dei file nella directory Document Root di Apache; solitamente questa si trova:
- in /var/www/ sotto Linux; consiglio di creare, da root, una sotto-directory, ad esempio wordpress, e, sempre da root, darle i permessi di lettura e scrittura a tutti gli utenti:
$ su (o sudo -s per Ubuntu)# cd /var/www # mkdir wordpress # chmod a+rw wordpress
In questo modo potrete copiare i file sotto wordpress anche come utente normale (ripeto, queste istruzioni sono solo per uso personale, non seguitele se dovete allestire un server di produzione!). Per accedervi da browser, digitate l’indirizzo http://localhost/wordpress (ma fatelo solo alla fine).
- in Applicazioni/XAMPP/htdocs sotto Mac OS X; anche qui consiglio di creare una sottodirectory wordpress. L’indirizzo sarà http://localhost:8888/wordpress;
- in c:\Easyphp\www\ sotto Windows; come sopra, copiate il backup in una sottodirectory (es: wordpress). L’indirizzo sarà http://localhost/wordpress.
Modifica di wp-config.php
Nella sottodirectory della document root, dove avete copiato il backup, duplicate il file wp-config.php in wp-config.php_remoto; adesso modificate le prime righe di wp-config.php, come segue:
define('DB_NAME', 'inserire-qui-il-nome'); // Il nome del database locale(probabilmente lo chiamerete come viene chiamato in remoto)
define('DB_USER', 'root'); // Your MySQL username
define('DB_PASSWORD', 'root'); // ...and password - probabilmente sarà questa la password di root, a meno che non vi venga chiesta durante l'installazione di mysql
define('DB_HOST', 'localhost'); // 99% chance you won't need to change this value
Salvate e infine duplicate ancora una volta il file wp-config.php in wp-config.php_locale (in questo modo potrete passare da locale a remoto - e viceversa - semplicemente ripristinando i file _remoto e _locale).
Importare il database
Veniamo all’ultimo passaggio, prima di poter accedere alla nostra copia locale del blog.
Modifica del file di dump del database
Questa è la parte più importante, che permette di navigare nel blog utilizzando i collegamenti locali e non remoti. Grazie a questo passaggio, ad esempio, non dovrete cambiare manualmente il path a tutte le immagini che avete uploadato sul vostro blog e successivamente inserite nei vari post. Si opera sul file di backup, quindi è importante che questo passaggio preceda quello dell’importazione vera e propria. Per prima cosa, se il dump è stato scaricato in formato compresso, occorre decomprimerlo; successivamente, occorre sostituire, con un editor di testo, tutte le occorrenze dell’url remoto (ad esempio, http://techlog.netsons.org) con http://localhost/wordpress. Consiglio di salvare il dump così modificato in un altro file, in modo tale da avere comunque un backup funzionante se qualcosa andasse storto (Murphy è sempre in ascolto!
). Nota: i prossimi consigli sono validi anche nel caso vogliate trasferire il vostro blog ad un nuovo servizio di hosting, basterà indicare il nuovo URL al posto dell’URL locale.
Linux e Mac OS X
Con Linux e OS X basta un solo comando! Dopo esservi spostati col terminale (quello di OS X si trova in Applicazioni / Utility) nella directory contenente il file di dump (per esempio, dump.sql), digitate, come utente normale: $ sed -e 's^INDIRIZZO_REMOTO^INDIRIZZO_LOCALE^g' dump.sql > dump_local.sql Seguendo l’esempio fatto finora, il comando sarà: $ sed -e 's^http://techlog.netsons.org^http://localhost/wordpress^g' dump.sql > dump_local.sql
Windows
Dovete usare un editor testuale, quindi niente Word oppure Wordpad (potete usare anche quest’ultimo, ma dovete scegliere il formato “solo testo” quando andate a salvare). Solitamente, basterà usare la funzione Find / Replace dell’editor.
Per sostituire stringhe su file molto grandi (come potrebbe esserlo il vostro file di dump), potete usare SCR Freeware Edition.
Importare il file di dump modificato
Ora basterà accedere a phpmyadmin del computer locale (solitamente sotto http://localhost/phpmyadmin - l’indirizzo è diverso per Mac OS X), cliccare su Importa e scegliere il file dump_local.sql precedentemente modificato.
Ricostruzione dei Permalink
Terminato il ripristino del backup, è necessario ricostruire la struttura dei Permalink di Wordpress: basta andare su http://localhost/wordpress/wp-admin (aggiungere la porta :8080 dopo localhost se state usando OS X), spostarsi in Options / Permalinks e premere il pulsante Update Permalink Structure (non c’è bisogno di modificare nulla, il problema dei Permalink si risolve ugualmente). Ciò ovviamente si applica anche se state trasferendo Wordpress da un vecchio server a uno nuovo. Finalmente avete la copia, completamente funzionante in locale, del vostro blog! ![]()
Articoli simili:
Se questo articolo ti è stato utile, segnalalo sul tuo sito! Puoi inoltre seguire comodamente gli aggiornamenti di Techlog tramite il feed RSS; infine puoi lasciare un commento se ti serve aiuto (o anche solo per un saluto); anche qui non serve registrarsi (sono abilitati anche i commenti anonimi; l'E-Mail serve, eventualmente, per ricevere le notifiche delle nuove risposte). ;-)





August 16th, 2007 at 9:18 pm
[…] Wordpress preservando i collegamenti Ho pubblicato (su Techlog) una guida su come muovere un blog, basato su Wordpress, da un server all’altro (nella guida parlo di […]
August 17th, 2007 at 2:40 pm
molto, molto interessante e ben spiegato. infatti proprio da netsons mi voglio togliere … timeout ogni 2 x 3. non se ne può più.
Grazie per l’articolo
August 17th, 2007 at 4:17 pm
@LuNa
(per i CSS non c’è bisogno, infatti il browser non viene ingannato dai “permalink” per quanto riguarda i fogli di stile, e dovresti aver usato i percorsi relativi classici).
Figurati! (prima comunque prova su localhost).
Occhio se hai modificato il template inserendo immagini con percorso relativo alla root (src=”/wp-content/themes/template/myimg.gif”… è quasi necessario se usi i permalink, infatti), e se nel nuovo host cambi il livello di directory in cui inserisci il blog (per es., passi da / a /blog)… in tal caso qualche modifica manuale sugli src devi farla
Da quando ho inserito il blog netsons non ha più avuto grossi rallentamenti o down… speriamo bene!
August 17th, 2007 at 6:26 pm
[…] Feed it! « Wordpress: spostare il blog dal server remoto al computer locale […]
August 19th, 2007 at 7:20 pm
[…] fate il backup delle pagine del blog e del […]
December 28th, 2007 at 4:17 pm
Bellissima guida, l’ho provata in locale ed è assolutamente esaustiva. Ancora tanti complimenti e auguri di buon anno!
December 28th, 2007 at 4:20 pm
@mad: grazie e buon anno anche a te!
May 28th, 2008 at 3:00 am
[…] il file di configurazione e il database per adattarli ai parametri del nuovo dominio (leggi “Wordpress: spostare il blog dal server remoto al computer locale” - l’esempio si può facilmente riadattare anche nel caso la destinazione sia un altro […]
November 15th, 2008 at 12:53 am
Complimenti per la guida… molto semplice ed esaustiva!!!
November 15th, 2008 at 3:08 am
@ Ninni:
… non lo hai messo nel campo “URL” 
Sono contento ti sia servita
PS: qual è il tuo blog? (se non vuoi dirmelo, non fa niente)
December 2nd, 2008 at 12:37 pm
Bellissima guida, e anche una delle poche.
Purtroppo, sul mio G5 con MAMP e il mio sito su server Aruba, nonostante abbia provato e riprovato installato e disinstallato…sempre e solo pagina bianca in locale…
Help….
December 2nd, 2008 at 3:20 pm
giordano scrive:
Ti faccio un po’ di domande:
La pagina di test di MAMP funziona?
Quali sono le caratteristiche del tuo hosting?
Sul blog hai attivato i permalink?
(non è detto che sappia come risolvere il problema)
December 2nd, 2008 at 4:46 pm
Si, Mamp era già funzionante, avevo tempo fa fatto esperimenti con joomla, su aruba ho un pessimo server win con ovviamente mysql, diverso tempo addietro avevo gia fatto una migrazione di prova su un server di tophost e tutto era filato liscio…i permalink non sono attivati, ho appena fatto una prova come suggerito nella guida con Xampp ma da phpadmyn non mi fa caricare il database perchè troppo granda (5mb)…qualsiasi suggerimento è graditissimo
December 2nd, 2008 at 4:56 pm
giordano scrive:
phpmyadmin… in locale? Strano
Il limite di dimensione del file di dump (almeno in locale) si dovrebbe impostare, comunque. Casomai mi informo.
Intanto prova una cosa: anzitutto, in remoto, fai un bel backup (che dovresti già avere)
Poi, sempre via phpmyadmin in remoto, seleziona tutte le tabelle del database e prova ad ottimizzarle (sta in fondo alla tabella). Poi prova ad esportarlo, magari in questo modo il file di dump sarà più piccolo 
December 2nd, 2008 at 5:23 pm
OK grazie! In effetti sembra molto strano anche a me perche phpmyadmin di Xampp è la versione 2.7 che non dovrebbe avere di questi problemi, invece mi dice che non si può superare circa 2mb…quindi anche ottimizzando credo sia difficile raggiungerli…
Poi tanto per complicarmi la vita (ma quando non si vede una luce..:-) ) stavo provando a mettere il tutto su un altro server aruba (linux) ma anche quì i problemi non sono pochi…importare il database sembra un operazione alquanto complessa, dato che di default aruba genera database con lo stesso nome (sql227572_01) e quando vado a importare il backup mi da errore:
Messaggio di MySQL:
#1044 - Access denied for user ‘nome_database’@'localhost’ to database ‘qcr804′
il database l’ho esportato come da varie guide con selezionato drop table etc…poi ho anche provato a cancellare sul file .sql le righe create database…
che giornataccia…
December 2nd, 2008 at 5:52 pm
@ giordano:
Più tardi provo a vedere il mio phpmyadmin… usi Mampp vero? (ho un mac anche io)
December 3rd, 2008 at 12:43 am
Grazie!!!
December 4th, 2008 at 9:55 am
Risolto…com Mamp in preferenze bisogna selezionare PHP4 invece di PHP5…

December 4th, 2008 at 2:34 pm
@ giordano:
Perfetto!
Anzitutto scusa se ancora non ti avevo risposto, ma avevo avuto un po’ da fare.
Ma cambiando la versione di Mamp, si modifica anche il limite di dimensione del file di dump del db?
December 4th, 2008 at 4:45 pm
Sulla versione di phpadmyn (2.11.7.1) installata su Mamp (1.7.2) la dimensione massima per importare un file di dump è segnalata come 32,768 KiB.
Ma come ti dicevo sopra credo che il vero problema sia dato in fase di settaggio preferenze sulla scelta di PHP 4 in luogo di PHP5 che evidentemente crea qualche problema…
Fortunatamente risolto dopo 3 giorni di buio…. :-9
December 4th, 2008 at 6:02 pm
@ giordano:
Beh, grazie per averlo riportato qui, sicuramente farà comodo a qualcuno!
February 9th, 2009 at 12:14 am
Ciao, ho letto la guida ma nel momento in cui devo ripristinare i Permalink mi trovo in difficoltà poichè la pagina …/wp-admin/ non mi si apre (da locale), dovrei fare prima il login ma se provo a farlo tenta di farlo ancora su remoto … che fare?
Grazie e ciao
February 17th, 2009 at 6:33 pm
@ Emilio:
Hai lanciato il comando sed sul file di dump del db prima di importarlo in locale?
February 26th, 2009 at 6:38 pm
Ciao a tutti. Se posso, vorrei dire ad Emilio che è successo anche a me che non mi faceva entrare in locale perché provava ancora a collegarsi col blog in remoto ed ho ricominciato la procedura di spostamento da remoto in locale, facendo però la sostituzione dei link da remoto in locale nel file di database che avevo esportato da Wordpress (in remoto). L’ho fatto con il software SCR consigliato da Andrea nella guida. Ho sostituito localhost/miosito a tutti i http://www.miosito.it. Adesso è “quasi” ok…, ho tutto quello che ho in remoto, ma perchè quando inserisco la pwd per entrare in amministrazione mi dice che é errata e non mi fa entrare? Il file wp-config.php va bene, ma in quale altro file devo sostituire la pwd, poiché credo che sia rimasta la pwd del blog remoto, per questo non riconosce quella in locale. Spero di essermi spiegata…
Grazie comunque ad Andrea per questa guida molto ben fatta e che mi ha aiutato molto.
March 9th, 2009 at 10:50 pm
kkriss scrive:
La password di amministrazione di Wordpress è una cosa diversa dalle password che inserisci in wp-config (che sono quelle date dall’hosting per connettersi al database). Che la password di amministrazione di WP rimanga quella del blog in remoto è quindi corretto.
kkriss scrive:
Figurati
May 12th, 2009 at 7:48 pm
Grazie per la tua guida, è l’unica che ho trovato in rete per passare wordpress in locale; sono arrivato a te perchè purtroppo non riesco nel mio intento.
utilizzo winvista con xampp; hosting Aruba.
ho fatto:
Backup del database e sostituzione dei link come da te suggerito:
Backup del solo wp-content e suo inserimento nella dir in local unitamente ai file di wordpress 2.7.1
Importazione del database in locale; configurazione del file config.php
con i dati del nuovo DB.
Ilvmio intento era di avere a disposizione articoli e pagine per provare nuovi temi.
Digitando l’url locale si apre il file d’installazione Wordpress, l’ho compilato, ma il risultato è un’installazione nuova, senza considerare il DB importato.
Nell’sql locale non esiste ovviamente alcuna creazione di nuove tabelle, non capisco come mai non vengono considerati ne i miei contenuti ne il DB importato… L’installazione funziona come una nuova installazione sul DB importato!!!
Puoi darmi una mano? Grazie?
Forse ho sbagliato nel