Trasferire WordPress da remoto a locale

Personalmente mi capita sempre più spesso di dover creare una copia locale del mio blog per poter procedere a test su nuovi plugin, aggiornamenti del core di WordPress etc. La procedura è molto semplice e consiste in pochi passi. Eccoli sintetizzati a mia futura memoria e anche per chi abbia necessità di tenere sotto mano un documento veloce.

  1. Creare un backup completo attraverso un client FTP (consiglio Filezilla) di tutti i file del proprio blog
  2. Creare un dump SQL del database dove è installato il proprio blog WordPress. Per fare questo è necessario esportare il database ricorrendo a phpMyAdmin o, ancora più semplicemente, installare il plugin WP-DB Backup ed effettuare un backup di tutte le tabelle di WordPress dall’interfaccia dell’addon.
  3. Se si è su Windows, la cosa più comoda è installare WampServer, mentre se si è su Linux si possono installare Apache2+PHP+MySQL+phpMyAdmin oppure ancora più facilmente ricorrere a XAMPP. Predisposto il proprio ambiente si può procedere a copiare i file scaricati da FTP nella directory “htdocs” o “/var/www” di Apache.
  4. A questo punto dalla versione “locale” di phpMyAdmin è necessario creare un nuovo utente e un database con lo stesso nome concedendo all’utente tutti i privilegi su di esso: cliccare su “Privilegi” quindi su “Crea nuovo utente”, riempire tutti i campi come vogliamo e spuntare “Crea un database con lo stesso nome e concedi tutti i privilegi”.
  5. Fatto questo va importato il dump SQL del database del blog remoto nel nuovo database creato. Per far questo si può usare phpMyAdmin selezionando il database in cui importare e cliccando su “Importa”. In alternativa, consiglio solo su Windows l’utilizzo di un ottimo freeware chiamato SQLyog davvero efficace quando si deve importare un dump SQL pesante e si vogliono risolvere alla svelta eventuali problemi di timeout PHP.
  6. Terminata l’importazione, utilizzando phpMyAdmin è necessario modificare il valore della siteurl. Basta andare sulla tabella wp_options, cliccare su “Mostra” e individuare siteurl. Cliccando sul simbolo della matita si può modificare il valore, impostando quello locale (es. http://localhost/blog)
  7. A questo punto possiamo collegarci all’indirizzo amministrativo del blog “http://localhost/blog/wp-admin”, effettuare il login, andare su Impostazioni\Generale e modificare la voce Indirizzo del blog (URL) impostando anche in questo caso “http://localhost/blog”.
  8. L’ultimo passo consiste nel rigenerare la struttura dei permalink andando in Impostazioni\Permalink e cliccare sul bottone “Salva le modifiche”.

Possibili problemi:

Quando si tenta di collegarsi a “http://localhost/blog/wp-admin” per completare la procedura di trasferimento si ricevono una serie di messaggi di errore simili a questo: “Deprecated: Assigning the return value of new by reference is deprecated”. I messaggi, dovuti a una versione più aggiornata di PHP utilizzata in locale rispetto a quella remota, non consentono il login ma per fortuna la cosa è facilmente risolvibile andando a modificare wp-config.php inserendo la riga “error_reporting(0);” proprio all’inizio del file dopo <?php.

10 commenti su “Trasferire WordPress da remoto a locale”

  1. Io ho seguito -circa- questa procedura per spostare un wordpress 2.9.1 sulla mia piattaforma EasyPHP 5.3.8 su win vista ma i risultati non sono stati quelli sperati…
    Ho inserito circa perchè ho importato il dump del database su un db assegnato ad un utente differente rispetto a quello dell'hosting, ma una modifica al wp-config.php con i dati di accesso corretti dovrebbe aver risolto la questione.

    Il problema è che dopo aver modificato wp_options – siteurl con 127.0.0.1/cartella_locale e tentando l'accesso al sito, vengono caricate solo le voci testuali, non il template (con relativo errore 404), e richiedendo la pagina wp-admin parte una stringa di redirect che genera un bel "Oggetto non trovato – Errore 404"

    Ho provato ad editare in wp_options anche il campo "home" – NIENTE

    Ho provato ad ridefinire in wp-config le variabili con:
    define('WP_SITEURL', 'http://example.com/wordpress&#039;);
    define('WP_HOME', 'http://example.com/wordpress&#039;); – NIENTE (ovvio ma provare non costa niente)

    Ovviamente tutti i files del wordpress di partenza sono stati scaricati e collocati sotto la cartella linkata, tant'è che se richiamo 127.0.0.1/nome_cartella/wp-admin/css/ compare la lista dei files… quindi li sono e li vengono visti regolarmente dal server Apache…
    Come se non bastasse nella stessa installazione di EasyPHP ho già in locale 2 Joomla 1.5 che importo ed esporto regolarmente senza problemi… sto impazzendo!!

  2. Si, ma lavorando in questo modo CREDO (da prova personale) che vengano aggiornati solo i permalink relativi agli articoli, non i link relativi alle immagini, e ad eventuali link incrociati presenti negli articoli (nel testo). Di conseguenza è una procedura che va bene solo nel caso in cui si abbia un blog di soli articoli di testo pieno (praticamente MAI).

    Molto meglio lavorare andando a modificare il database prima dell'import, come descritto su wordpress italy http://www.wordpress-it.it/wiki/Main/CambiareServ
    O importare e modificare successivamente con le query sul database http://yeahnowow.com/2010/wordpress-spostare-word

    Queste procedure permettono di modificare i link nella loro totalità… almeno finora non mi sono accorto di problemi.

    Altro dettaglio (ci ho perso 5 ore)… nella mia configurazione (Vista + EasyPHP) il campo wp_options siteurl (e con lui tutti gli altre link) deve diventare rigorosamente http://127.0.0.1/cartella_locale
    e nessuno dei successivi invece funziona:
    http://localhost/cartella_locale
    localhost/cartella_locale
    127.0.0.1/cartella_locale

    Per qualcuno forse sarà banale, per me non lo era assolutamente, ho praticamente perso una giornata per capire cosa non andava. Bisogna fare attenzione a quello che si pubblica, altrimenti la gente un pò inesperta impazzisce, quantomeno indicare il sistema dove tali operazioni sono state testate.

      • Immagino certamente che la procedura fosse ben testata, magari su linux o mac e purtroppo le cose un pochino a volte cambiano; comunque volevo solamente semplificare la vita ad altri utenti futuri.

        La rogna del localhost su windows in fondo è ben documentata direttamente su wikipedia (non ci potevo credere) http://it.wikipedia.org/wiki/Localhost
        Credo che tutti prima o poi ci debbano passare, diciamo che non è facile pensarci se uno proviene da altri sistemi (e da xp) e non lo sa.

  3. Eccezionale! Avevo bisogno di "una ripassatina" alla procedura e questa guida – anche a più di 3 anni da quando è stata redatta – mi è stata davvero di grande aiuto.. Grazie. Consiglio, se avete una stuttura di permalink personalizzata, di scegliere alla fine in Impostazioni–> Permalink l'opzione "Predefinito" e tutto, proprio tutto, funzionerà alla perfezione.

  4. Salve a tutti. Ho eseguito la guida e tutto funziona alla perfezione. COMPLIMENTI.
    L'unica anomalia è data dal fatto che il sito on-line ha i permalink (http://localhost/wordpress/articolo d'esempio/).
    Quello in locale funziona solo con i prmalink impostati su "predefinito" (http://localhost/wordpress/?p=123).
    Ho letto il post di Massimo che consiglia di impostare i permalink così, ma perché???
    Grazie in anticipo a chiunque mi risponderà 😉

I commenti sono chiusi.