Categorie
Software

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 risposte su “Trasferire WordPress da remoto a locale”

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!!

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.

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.

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