Come Creare Una Perfetta Copia Locale del tuo Blog

...una sandbox dove sperimentare in piena libertà!

scritto da Francesco Gavello [+] il 14 aprile 2010 | 37 Commenti in: Tool e Risorse

lego-clone-trooper

Anche se a prima vista potrà sembrare complicato, replicare in maniera speculare l’installazione di un blog in WordPress è solo questione di pochi, semplici passi.

Se vorrai seguirmi nelle prossime righe, sarai rapidamente in grado di configurare una copia locale del blog che attualmente sfogliano i tuoi lettori. Una copia precisa in ogni minimo dettaglio e che potrà tornarti, credimi, davvero utile nell’ottimizzare e spingere al massimo le tue pagine.

Perché creare una copia locale?

  • Per mantenere una copia di backup
  • Per effettuare in sicurezza modifiche al layout
  • Per testare l’efficacia e il peso di nuovi plugin
  • Per testare l’effetto di operazioni potenzialmente dannose al database

Iniziamo? ;)

Di cosa hai bisogno?

Avrai bisogno di:

  • una copia aggiornata della cartella del tema (wp-content/themes/[nome-tema-attivo])
  • una copia aggiornata della cartella “uploads”
  • una copia aggiornata della cartella “plugins”
  • una copia aggiornata del database in uso (file .sql o .sql.gz)
  • una copia di WAMP (per Win) o MAMP (non pro) (per OS X)

1. Copia dei file del tema e delle cartelle sensibili

Il punto di partenza sarà copiare la cartella stessa del tema. Se non sai dove risiedano i file del tema attivo, puoi seguire la dicitura indicata sotto il pannello “Aspetto” >> “Temi” da dashboard “Tutti i file di questo tema sono posizionati in: percorso“.

Successivamente avrai bisogno di copiare altre due cartelle decisamente importanti per la vita del tuo blog: “wp-content/uploads” e “wp-content/plugins.” Nella prima sono contenuti tutti i file che hai caricato nel tempo associandoli ad ogni post (come le immagini, ad esempio). Nella seconda sono presenti tutti i plugin (attivi o meno) che il tuo blog utilizza e presenta in dashboard nella pagina “Plugin”.

Nota: Compatibilmente con l’installazione di altri particolari plugin (gestori di banner in primis), potrebbero essere presenti ulteriori cartelle all’interno di “wp-content” da copiare allo stesso modo.

2. Esportare il database

Il metodo più semplice per disporre di un backup costantemente aggiornato del database del proprio blog è quello di installare sin dai primi giorni di vita il plugin WP-DB-Backup. È uno di quei pochi plugin essenziali a cui davvero non potrei rinunciare.

Con qualche semplice click potrai decidere se salvare una copia compressa dell’intero database direttamente sull’FTP oppure spedirla ad un indirizzo e-mail. È anche possibile decidere quali tabelle ignorare rendendo il backup più leggero e maneggevole (evitando nel caso di portarsi dietro tabelle inutilizzate da plugin che si è deciso di abbandonare).

Neanche a dirlo, una buona via di mezzo consiste nello spedire l’intero backup giornaliero ad un indirizzo di posta (magari Gmail), configurando sul client un semplice filtro che archivi il messaggio in entrata assegnandogli un’opportuna etichetta. È un ottimo modo di mantenere backup “invisibili”, sempre disponibili e che non pesino sulla inbox globale!

2.1 Esportazione manuale

Questo è probabilmente il metodo più veloce e semplice per mettere a sicuro il proprio database da spiacevoli contrattempi. È naturalmente possibile, per chi se la senta, effettuare l’esportazione manuale del file .sql direttamente da phpMyAdmin. Si tratta però di un’operazione estremamente delicata (per non dire rischiosa se non hai ben chiaro ciò che stai facendo); per ulteriori informazioni puoi leggere la dettagliata pagina sul Codex di WordPress.

3. Configurare una sandbox locale

Ora non dovrai fare altro che configurare una determina area della tua macchina locale per ospitare un’installazione di WordPress in tutto e per tutto simile a quella online.

Quello che faremo sarà:

  • Scaricare MAMP o WAMP e attivarlo come una normale applicazione
  • Creare un nuovo database (ed eventualmente un nuovo utente con privilegi) da phpMyAdmin
  • Scaricare una versione aggiornata di WordPress
  • Copiare all’interno di MAMP/WAMP i file di WordPress e procedere con l’installazione
  • Copiare al posto giusto i file del tema e le cartelle “uploads” e “plugins”

WAMP (Windows, Apache, MySQL and PHP) e MAMP (Mac, Apache, MySQL and PHP) sono i due migliori amici di chi desideri creare una zona di test sicura e protetta sulla propria macchina locale senza dover installare e configurare separatamente ogni componente di cui sopra.

3.1 Utenti Windows

Gli utenti Windows dovranno utilizzare WAMP per creare la sandbox. Gli amici di WordPress Italy hanno tradotto una fantastica guida che affronta tutte le piccole modifiche necessarie a configurare correttamente Apache e MySQL sulla tua macchina.

3.2 Utenti Mac

Con MAMP su OS X invece le cose filano via molto più lisce: una volta scaricato il .dmg (di MAMP in versione gratuita, non MAMP Pro che è invece a pagamento) sarà sufficiente scompattarlo e trascinare Mamp.app tra le applicazioni.

All’interno di “Mamp” sarà creata una sottocartella “htdocs” dove potremo depositare i file di installazione di WordPress. Lanciando Mamp.app si aprirà automaticamente una finestra del browser da cui potremo accedere a phpMyAdmin e creare il database di supporto.

Potremo così configurare WordPress usando il nome del database appena creato e l’utente “root” conpassword “root”. Semplice, no?

4. Importare il database

Ora disponiamo di una vera e propria sandbox locale in grado di eseguire tutti i nostri progetti basati su PHP e MySQL in piena sicurezza. Se tutto è andato per il verso giusto abbiamo anche installato WordPress e copiato i file del tema (più le cartelle uploads e plugin) al giusto percorso.

Manca solo un aspetto: (ri)popolare il database dei post così come appaiono attualmente online! :D

Ed ecco che torna utile quel WP-DB-Backup di cui parlavamo prima. ;)
Recuperiamo il backup effettuato dal plugin e teniamolo a portata di mano sul desktop.

Apriamo nuovamente phpMyAdmin e selezioniamo nella colonna di destra il database che abbiamo assegnato al nostro blog. Scegliamo quindi “Importa” dal menù di navigazione in alto nella porzione destra del pannello e tramite “Sfoglia…” andiamo a indicare il file di backup.

Per evitare che il processo di importazione termini bruscamente dopo un periodo di tempo limitato, è opportuno deselezionare la spunta sotto “Importazione parziale”. Clicchiamo dunque “Esegui” e… prendiamoci un caffè! :D Per i backup più corposi potrebbe essere necessario lasciar macinare la pagina per qualche minuto.

4.1 Correzioni al database

Prima di accedere nuovamente al blog sarà necessario correggere i parametri “home” e “siteurl” non combacianti nel database importato. È possibile modificare questi valori in maniera molto rapida da “wp-config.php”, “functions.php” o direttamente nel database agendo da phpMyAdmin. Tra parentesi, questo è un trick che è sempre bene conoscere per gestire alcune situazioni spinose.

Una volta modificati questi parametri potremo loggarci alla versione locale del nostro blog avendo cura di controllare la corretta attività di tutti i plugin installati.

Note finali

Come puoi immaginare questa non vuole essere una guida definita all’argomento, quanto piuttosto un buon punto di partenza per cominciare a valutare seriamente la possibilità di mantenere una copia del proprio blog in locale per qualunque necessità. Ci sono mille modi di affrontare la questione e mille diverse sfumature per affrontare casi particolari, tutte ugualmente valide.

Spero di averti lasciato con l’acquolina in bocca ;)
Buona sperimentazione!

foto: bfishadow

Trovato questo articolo interessante?

Condividilo sulla tua rete di contatti Twitter, sulla tua bacheca su Facebook o semplicemente premi "+1" per suggerire questo risultato nelle ricerche in Google. Diffondere contenuti che trovi rilevanti aiuta questo blog a crescere. Grazie!

37 Commenti

Update 12/02/2012: Il Regolamento Commenti è cambiato! Leggi ciò che serve sapere!

  1. Giovanni ha detto:

    E gli utenti Linux invece sanno già come fare per installare Apache, MySql e PHP :) Scherzi a parte, volevo segnalare un programma utile in questo scenario, e cioè SyncBack, per sincronizzare fra la copia in locale e quella online. Chiaramente non funziona a livello di database.

    Rispondi
  2. Ho trovato il tuo articolo molto interessante, e l’ho messo tra i miei preferiti… mi tornerà molto utile. Grazie!

    Rispondi
  3. Luigi ha detto:

    Complimenti veramente un articolo utile!

    Rispondi
  4. stefano ha detto:

    Ciao,
    ma lo stesso lavoro (sotto Win) si può fare anche con Xampp? C’è qualche differenza tra quest’ultimo e il software da te citato?

    Grazie mille

    Rispondi
  5. Giovanni ha detto:

    Xampp e Wamp sono equivalenti in questo caso, così come sarebbe equivalente un altro pacchetto preconfezionato, EasyPHP.

    Rispondi
  6. Paolo ha detto:

    Ottimo articolo Francesco… veramente interessante. Ti volevo chiedere, ci sono limitazioni di grandezza per importare il database.. te lo chiedo perchè avevo letto da qualche parte che con EasyPHP ad esempio potevi importare un DB max di 2 o 3 Mb. Se così fosse anche con il programma che suggerisci non potrei mettere il mio Blog in locale….

    Rispondi
  7. Francesco Gavello ha detto:

    Ciao Paolo,
    per quanto ne sappia, con il metodo sopra indicato non c’è un limite massimo di dimensione del DB. Quando lo importi (a prescindere dal pacchetto globale MAMP, WAMP o XAMPP che hai usato) in phpMyAdmin ricordati di deselezionare la spunta “importazione parziale” come indicato nel post.

    L’unico rischio è infatti che l’importazione non si interrompa per eccesso di dimensione del DB, quanto piuttosto per il timeout dell’operazione che si protrae troppo a lungo (ma anche se così fosse, ricaricando lo stesso file riprenderebbe da dove interrotto).

    Rispondi
  8. Paolo ha detto:

    Ok Grazie Francesco… ci proverò… A presto

    Rispondi
  9. stefano ha detto:

    Ma una copia locale puo’ venire vista anche da terzi o solo da me?

    Rispondi
  10. Giovanni ha detto:

    @Stefano: se il tuo computer è direttamente collegato ad Internet, oppure se il router inoltra il traffico sulla porta 80 del tuo computer, e non ci sono firewall software in mezzo, anche gli altri potranno vedere il sito, a patto che riescano ad indovinare il tuo IP.

    Rispondi
  11. Fabio Angelo ha detto:

    Buongiorno,

    è possibile utilizzare la medesima tecnica anche per trasferire il mio blog su un nuovo dominio e nuovo database?

    Buona Giornata.

    Rispondi
    • Francesco Gavello ha detto:

      Ciao Fabio,
      non è necessario in questo caso affrontare tutti questi step (anche se come puoi immaginare, in caso di problemi, è bene avere una copia del blog completamente funzionante in locale con la quale coprirsi le spalle).

      Esiste un modo molto più semplice di spostare i contenuti di un blog da e verso un nuovo dominio. Sotto al pannello “Strumenti” puoi esportare (e importare) un WXR di massimo 2MB contenente articoli, pagine, post, commenti, campi personalizzati e quant’altro. Dovrai comunque in questo caso portare con te manualmente i file del tema, i plugin ed eventuali file extra presenti nella tua installazione.

      Una volta importato il file su un nuovo dominio dovrai correggere i percorsi interni al database per farli puntare all’URL corretto. Puoi usare (con molta cautela) il plugin Search & Replace che ti permette di fare tutto ciò -senza undo, occhio!- senza mettere mano alle query del db. Il caso più comune è quello di avere i percorsi delle immagini interne ai post che puntano ancora al vecchio hosting, o contenuti audio/video di pagine interne che non pescano più i file corretti.

      Rispondi
  12. Fabio ha detto:

    Grazie molto utile!
    Tornerò spesso! :)

    Rispondi
  13. Roberto ha detto:

    Ciao a tutti scusate se irrompo e mi presento con un problema, ma non riesco a capacitarmi.
    Ho seguito tutti i passaggi con successo (ho anche hackerato il problema del limite a 32mb per il database di phpmyadmin con successo) ma quando punto il browser sull’index.php di wordpress mi risponde cosi:

    Safari non può collegarsi al server.
    Safari non può aprire la pagina “http://localhost/wordpress/” perché non può connettere al server “localhost”. ( il :8888 lo toglie da solo quando lo indirizzo è presente)

    se rimetto il -sample vicino a wp-config.php ogni tanto ( non sempre) mi apre la pagina di wordpress in cui mi dice ovviamente wp-config.php mancante.. il bello è che lo fà ogni tanto, spesso mi rida il messaggio di cui sopra.

    Spero nella vostra gentilezza.

    Roberto

    p.s.
    sto spulciando questo blog e lo trovo veramente ben fatto!

    Rispondi
  14. Roberto ha detto:

    update, se apro il wp-login me lo apre. è l’index.php che non riesce ad aprire.

    Rispondi
  15. We Hardware ha detto:

    Complimenti per l’articolo!! Sei stato molto dettagliato e chiaro nella tua esposizione, grazie delle info :)

    Rispondi
  16. poker universe ha detto:

    Appena possibile metterò in pratica queste istruzioni grazie

    Rispondi
  17. Paolo ha detto:

    grazie per l’articolo molto chiaro e utile.
    ho solo un dubbio per quanto riguarda gli url.
    io ho sviluppato il sito in locale e tutti gli url puntavano a localhost
    quando ho trasferito il sito online ho modificato i riferimenti negli articoli a http://www.ecc
    ora facendo una copia del sito online e facendolo girare in locale si dovrebbero modificare tutti gli indirizzi, ad esempio riferimenti interni al sito localhost/www.ecc
    ho tentato con la funzione php bloginfo() in modo che gli indirizzi fossero indipendenti dalla posizione della root ma non sono riuscito a trovare una buona soluzione
    non so se mi sono spiegato bene
    grazie per i chiarimenti

    Rispondi
  18. Paolo ha detto:

    grazie per la risposta
    cerco di spiegarmi meglio
    se scrivo un post in locale in un riferimento interno al sito devo scrivere es. localhost/contatti se poi carico un’immagine il collegamento è localhost/../images.
    Ora se metto il post in rete per funzionare devo modificare localhost con http://www.miosito.
    Lo stesso se faccio una copia locale del sito, tutti i riferimenti http://www.miosito devono essere modificati in localhost.
    Mi piacerebbe trovare un sistema per far funzionare il tutto senza modificare gli indirizzi.
    grazie per l’attenzione
    Paolo

    Rispondi
    • Francesco Gavello ha detto:

      Credo non ci sia un modo rapido per risolvere la questione.
      Soprattutto perché tutti gli URL presenti negli articoli sono fissati nel DB e (in un modo o nell’altro, da plugin o da query in phpMyAdmin), vanno modificati sostituendo localhost con la root del tuo sito o viceversa.

      L’errore più comune durante la transizione online è proprio quella dei path delle immagini. Search & Replace è un ottimo plugin che aiuta in questi casi (vedi: http://wordpress.org/extend/plugins/search-and-replace/) ma va usato con estrema cautela perché non presenta UNDO (ergo, occhio perché non si torna indietro) e mette fisicamente mano al database (backup prima di tutto!).

      Spero di esserti stato utile. ;)

      Rispondi
  19. Silvia ha detto:

    Trovo questa guida molto utile. Ho appena avuto una disavventura. MI è stato sospeso l’account dell’hosting. Ho richiesto l’attivazione per recuperare i contenuti, ma ho intenzione di creare un blog da zero, inserendo però gli stessi articoli con nuove categorie. Ilblog era troppo carico.
    E’ possibile in questo modo creare il nuovo blog per poi trasferirlo “completo” di articoli vecchi etc. su nuovo hosting?

    Rispondi
    • Francesco Gavello ha detto:

      Ciao Silvia,
      certo! :) Per assurdo potresti lavorare completamente in locale alla costruzione di un blog e poi trasferire tutto in produzione solo al momento opportuno. Una copia locale sempre aggiornata e funzionale non è solo una sandbox in cui sperimentare ma anche, se serve, un backup pronto uso da cui pescare nelle peggiori evenienze.

      Rispondi
  20. Klaus ha detto:

    Ciao
    ho un problema simile ma su un sito messo online però costruito con wordpress in locale.
    La pagina mi dice: safari non può aprire la pagina http://www.nomesito.it/8888 perchè non può connettersi al server…
    In realtà ho dovuto fare una modifica al dns perchè in precedenza il sito era invisibile ed il provider sostiene che passino fino a 48 ore prima che la modifica abbia effetto (non ancora trascorse).
    Solo dopo quella modifica è comparso quel messaggio…
    Può essere quella la causa o c’è dell’altro?

    Rispondi
  21. Antonio ha detto:

    Volevo farti i complimenti per la guida, è molto semplice da seguire e completa. L’ho seguita passo per passo. In realtà io non devo metterlo in locale ma su un altro dominio e hosting (immagino comunque sia lo stesso). La homepage e la parte amministrativa funziona bene ma quando nel sito clicco su un articolo o categoria o altro mi da l’errore NOT FOUND! Mi dice praticamente che il link non è presente sul server. Come mai accade questo? Come posso risolvere il problema?

    Grazie mille!

    Rispondi
  22. Tony ha detto:

    Ciao a tutti e ciao Francesco… potete aiutarmi ? sono fermo all’importazione di un database di un mio vecchio wp, sto provando ad importarlo ma mi rimane una paginata bianca :( allego schermata dell’import.. dove sbaglio ??

    http://www.chitarristi.org/wp-content/uploads/2013/06/Schermata-2013-06-01-alle-11.48.30.png

    Rispondi
  23. Roberto Iacono ha detto:

    Ottime linee guida Francesco,
    personalmente utilizzo la copia del mio blog in locale per smanettarci alla grande :) Non sai quante “pagine bianche” mi sono apparse nel corso degli anni, pensa cosa sarebbe successo online?!?

    Rispondi
  24. Nico ha detto:

    Ciao Francesco, ho provato e riprovato ma al punto 4.1 mi sparisce tutto… se ti va di darmi una mano ti spiego il problema..!

    Rispondi
  25. Massimiliano ha detto:

    Ciao Francesco
    Ottima guida, avevo letto di tutto prima di arrivare qui,ma nessuno trattava l’argomento in maniera chiara ed efficace coma hai fatto tu. Seguendo i tuoi consigli ho realizzato una copia speculare in pochi clic.
    Grazie

    Rispondi
  26. Marco ha detto:

    Ciao Francesco,
    sono riuscito a fare tutto (o quasi), ma non ho capito bene il punto 4.1. Quali parametri devo correggere? Qual è la nuova url che devo inserire? localhost:888 forse?
    Non riesco a visualizzare il sito in locale ma ho fatto tutto come descritto.
    Grazie!

    Rispondi

Lascia un commento

Anteprima commentatore

Personalizza il tuo avatar!
Vai su gravatar.com e carica quello che preferisci!

I commenti sono modificabili entro 5 minuti dal loro inserimento.
Puoi usare questi tag: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Solo i commenti firmati con un nome saranno accettati. Leggi il Regolamento Commenti!