Come sincronizzare WordPress tra locale e remoto | guida completa

Avere una copia locale di un sito e sincronizzare WordPress tra locale e remoto è di fondamentale importanza per rendere agevole il lavoro di mantenimento e aggiornamento. Se, ad esempio, devi aggiornare delle funzioni di un tema o se vuoi testare un plugin è sicuramente molto meglio fare le prove sulla versione locale. A lavoro ultimato potrai semplicemente sincronizzare la copia locale con quella remota.

Esistono, come sempre, molti metodi per ottenere lo stesso risultato, il più lento e laborioso è il metodo manuale, con trasferimento dei file via ftp, con il trasferimento del database da phpMyAdmin e le modifiche da apportare manualmente ad alcuni file. Oggi però non ti parlerò del metodo manuale. Ti parlerò di WordMove che permette di effettuare il trasferimento di un intero sito in pochissimo tempo e in modo molto semplice. Di contro la configurazione iniziale può rappresentare uno scoglio difficile da superare specialmente se si può utilizzare il protocollo SSH, farò di tutto per essere il più chiaro possibile.

La sincronizzazione con WordMove é possibile in modalità SSH solo nei servizi di hosting che  permettono di attivare SSH o l’accesso via shell, gli altri dovranno accontentarsi del trasferimento via FTP. Io utilizzo Siteground che consente di gestire questa funzionalità in modo semplice e completamente gratuito per chi ha attivato un piano di hosting. Anche se hai scelto un hosting diverso ti consiglio di vedere il sito di Siteground perché questa funzionalità si può attivare anche per hosting esterni.

Configurare il pc (client)

queste sono operazioni che vengono eseguite una sola volta come configurazione iniziale

Creare le chiavi SSH

SSH è un protocollo di rete che ci permette di stabilire una connessione cifrata tra un client e un server. Se è la prima volta che colleghi il tuo pc al server devi generare una chiave e con questa collegare il pc al server, questa operazione viene effettuata una sola volta e vale per tutte le future connessioni a quel server. Uso il mac quindi ti indico il metodo da seguire con questo sistema operativo, per gli altri sistemi operativi ci sono delle varianti ma adesso voglio farti capire quali sono i passaggi logici. Una volta capita la logica potrai utilizzare questo sistema dove e come riterrai opportuno.

Da Applicazioni del mac apri il terminal e digita

il terminal riporta:

quando viene chiesto “Enter passphrase” se vuoi una maggiore sicurezza inserisci una password (e attenzione a non dimenticarla)

il terminal completa le operazioni e crea due chiavi una privata e una pubblica rispettivamente nel percorso

/Users/macuser/.ssh/id_dsa (privata)
/Users/macuser/.ssh/id_dsa.pub (pubblica)

se vuoi approfondire questo argomento ti consiglio la lettura di questo wiki per dsa e questo wiki per rsa. Alle chiavi ci torno tra poco, intanto ti spiego come installare WordMove.

Installazione di WordMove

Prima di passare al pannello di controllo devi preparare il pc, anche in questo caso la spiegazione vale per il mac ma le logiche sono del tutto simili anche per altri sistemi operativi. Un approfondimento per l’installazione lo puoi trovare le repository ufficiale di github da dove puoi scaricare il pacchetto di installazione,  se utilizzi windows ti consiglio di guardare nel sito rubyinstaller.org per l’installazione di Ruby e nel sito rubygems.org per l’installazione di RubyGems.  Se utilizzi mac non sarà invece necessario effettuare una vera e propria installazione.

La prima verifica da fare prima di proseguire è che sul tuo pc sia installato Ruby e RubyGems, da Applicazioni mac apri il terminal e digita

e a seguire

il terminal riporta le versioni installate di Ruby e RubyGems

con “ruby -h” e “gem -h” avrai un elenco completo dei comandi disponibili. Installa ora i pacchetti necessari con il comando sudo gem install wordmove, inserisci la tua password utente (del pc) quando richiesto, sudo si utilizza per accedere con diritti amministrativi diversamente non avresti i permessi in scrittura per completare l’installazione.

il terminal riporta

attendi qualche istante per il completamento della procedura. I passi successivi sono creare e configurare il file Movefile e lanciare la sincronizzazione ma prima devi completare un processo rimasto in sospeso.

Attivare SSH sull’hosting via cpanel

Hai prima creato le chiavi SSH nel tuo pc, per scoprire il valore apri ancora il terminal e digita

il terminal riporta il valore della chiava privata nella forma

la chiave privata è stata quindi creata nel modo corretto, per la chiave pubblica digita

e il terminal ci riporta il valore della chiave pubblica, anche questa creata nel modo corretto

memorizza la chiave pubblica e apri il cPanel di Siteground dopo aver effettuato il login, da cPanel nella sezione avanzata seleziona “SSH/Shell Access” nella finestra che compare devi inserire il valore della chiave pubblica nella casella 1, gli indirizzi ip che sono autorizzati all’accesso da remoto nella casella 2 (se lo lasci libero potrai accedere da qualsiasi rete, se indichi un l’indirizzo ip della tua rete, ammettiamo dell’ufficio, potrai accedere solo dall’ufficio, gli indirizzi ip si possono comunque aggiungere anche in un secondo momento quindi ti consiglio inizialmente di lasciare il campo vuoto). In basso sono riportate le chiavi attive con i relativi indirizzi ip autorizzati all’accesso.

attenzione a copiare e incollare l’intero valore della chiave pubblica, diversamente ti verrà segnalato un errore.

Rimane da fare una prova per verificare se l’accesso al server funziona correttamente.

Hai bisogno di recuperare (nel caso di Siteground) lo username per accedere al cPanel (USER), l’host o IP del dominio a cui vuoi connetterti (HOST_NAME) l’indirizzo ip puoi recuperarlo nella sezione “account information” della pagina iniziale del cPanel (in genere in alto a sinistra), per finire il valore PORT nel caso di Siteground è 18765. Apri ora il terminal e digita il comando

sostituendo logicamente questi valori con i tuoi.

Perfetto, se tutto funziona hai effettuato l’accesso al server, con il comando ls puoi vedere l’elenco delle directory sul server, con exit puoi uscire da SSH.

ErrorePermission denied

Un errore tipico che potresti ricevere è che non hai i permessi “Permission denied (publickey).” in tal caso potresti risolvere subito modificando i permessi della chiave locale pubblica con il comando

nella password inserisci sempre la tua password per accedere al pc, verifica anche che sia corretto il percorso del file id_dsa.pub

Hai creato la chiave locale, hai installato WordMove e hai attivato SSH sul server, cosa rimane da fare? Configurare Movefile che è il file di configurazione di WordMove e lanciare la sincronizzazione.

Configurazione di ogni dominio con il file Movefile

La prima cosa da fare è capire la logica, ammetti che nel tuo pc hai una cartella \\Users\utentemac\Sites\sitilocali e che nella cartella sitilocali hai organizzato in sottocartelle, una per ogni sito che gestisci:
sitilocali\dominio_uno.deploy
sitilocali\dominio_due.deploy
….

Per ogni dominio dovrai creare e configurare un file Movefile in modo da poterli sincronizzare singolarmente. Anche i comandi da terminal devono essere eseguiti dalle cartelle corrispondenti. Immagina ora di voler configurare il dominio_uno.deploy, le stesse operazioni dovrai eseguirle per ognuno degli altri domini.

Da terminal del mac utilizzando il comando cd spostati nella cartella: \\Users\utentemac\Sites\sitilocali\dominio_uno.deploy dove al posto di utentemac ci sarà il tuo nome utente, sitilocali\dominio_uno.deploy sono valide in questo esempio ma la struttura delle cartelle che hai configurato potrebbe essere completamente diversa, in tal caso dovrai indicare i tuoi percorsi.

digita il comando

il terminal restituisce

nella cartella in cui hai eseguito il comando viene creato il file Movefile che è il file che contiene le configurazioni. Aprilo con un editor di testo per modificarlo, io uso TextWrangler e mi trovo benissimo. Questo file contiene già una serie di comandi, tutte le righe precedute dal simbolo # non vengono eseguite e sono solo dei commenti.

una cosa importantissima; questo file ha una struttura precisa e tutti gli elementi devono essere organizzati secondo la sua logica altrimenti riceverai errori, basta anche uno spazio o dei tab al posto degli spazi per generare errori.

vediamo il contenuto del file nel dettaglio, o quasi…

Local, sono le configurazioni locali, sul tuo pc vhost: il tuo url locale del dominio ( tanto per intenderci quello generato da xampp o mamp ), wordpress_path: il percorso assoluto della cartella che contiene l’installazione di WordPress, database: i dati per la configurazione del database mysql nell’installazione locale. Tutti dati che dovresti reperire facilmente.

Da notare la struttura del file:

basterebbe una piccola variante come nell’esempio che segue per generare immediatamente un errore (uno spazio in meno prima di password, anche se banale, di fatto cambia il livello di password che quindi non si viene più a trovare allo stesso livello di name, user e host)

Production, gli stessi parametri li trovi nella sezione production ma in questo caso sono dei parametri del server, anche questi parametri sono semplici da reperire poichè riguardano l’installazione di wordpress e li trovi tutti nel file wp-config.php situato nella root del dominio online. Per il path di WordPress invece il metodo più semplice è creare un file path.php, inserire al suo interno questo codice

copiarlo sul server ed eseguirlo nel browser, il risultato sarà del tipo /home/usercpanel/dominio_uno.it ossia il percorso assoluto da riportare alla voce wordpress_path.

Exclude, poi trovi la sezione exclude con l’elenco di tutti i file e cartelle da escludere dal processo. Da notare che exclude è allo stesso livello di vhost e database e che l’elenco dei file e delle cartelle è ad un livello inferiore (come avviene per le voci di configurazione di database)

Paths serve per personalizzare eventualmente i percorsi interni dell’installazione di  WordPress

SSH o FTP, per finire ci sono le configurazioni per la connessione al server. Avendo la possibilità di accedere via SSH, i parametri per l’ftp non li prendo nemmeno in considerazione. Le configurazioni necessarie sono

da notare ancora che ssh è allo stesso livello di vhost, database, exclude… e i parametri host e user ad un livello inferiore. Insisto su questo concetto perché é la fonte principale dei problemi con la configurazione di Movefile.

La struttura finale del file è quindi

e sei arrivato finalmente alla fine di tutto questo lavoro di configurazione. Da notare che per ogni dominio aggiuntivo ti basterà semplicemente duplicare il file Movefile nella cartella del nuovo dominio, modificare pochi parametri e sarai immediatamente operativo.

E per sincronizzare wordpress tra locale e remoto? Semplice, ti bastano poche righe di codice. Sempre da terminal digita

per sincronizzare dalla versione locale alla versione remota e

per sincronizzare dalla versione remota alla versione locale.

I comandi devono essere lanciati dalla root del sito dove si trova il file Movefile.

Puoi spingerti anche oltre, puoi creare un unico file di configurazione e inserire varie istanze da richiamare singolarmente, ossia creare una struttura di questo tipo

e ad esempio con il comando

puoi sincronizzare dalla versione remota dell’istanza live alla versione locale e con il comando

puoi sincronizzare dalla versione locale alla versione remota dell’istanza production, tutto con solo due righe di codice.

Errore chiave host ECDSA

Tra i potenziali errori che possono verificarsi durante l’utilizzo ti segnalo in particolare un errore della chiave host ECDSA

se compare questo errore utilizza questo comando

per elencare l’elenco delle chiavi memorizzate sul tuo pc, il terminal riporta

in questo modo conosci il percorso esatto delle chiavi memorizzate, ora con il comando

rimuovi la cache della chiave (il comando è da eseguire per la singola chiave che crea problemi o se non si riesce ad individuare la chiave devi eseguirlo per tutte le chiavi presenti) e tutto dovrebbe tornare a funzionare.

Alcune doverose note

A. Come anticipato, uno dei problemi principali della configurazione è la struttura del file Movefile, per essere sicuri di non avere problemi puoi però usare uno di questi due servizi online yaml-online-parser.appspot.com e yamllint.com che ti restituiscono immediatamente l’eventuale posizione dell’errore

B. Teoricamente, quando viene trasferito il database vengono aggiornati i percorsi locali e remoti, ho potuto constatare che questo non sempre è vero, problema noto anche nei vari forum di discussione. Il consiglio è di escludere dalla sincronizzazione il file wp-config.php e creare una versione locale e una remota. Prima della chiusura del file inserisci queste due righe di codice dove logicamente nella versione locali andrai ad inserire l’url locale e nella versione remota l’url remoto

C. Altra considerazione importante, i backup. Una norma fondamentale è avere sempre una copia di backup specialmente quando stai ancora configurando il file Movefile, con un comando sbagliato puoi spazzare via anche l’intero contenuto dell’installazione di WordPress.

D. Rimarrai sicuramente stupito per la velocità delle operazioni, sincronizzare un intero sito anche di parecchi MB porterà via solo una manciata di secondi, è lo stesso motivo per cui se non stai attento in una manciata di secondi sparisce l’intero sito.

E. Può essere una buona idea creare uno script che permette di eseguire le operazioni direttamente senza passare dal terminal. Uso questo metodo per il comando pull, ossia quando sincronizzo dal server remoto verso l’installazione locale. Con mac ho utilizzato automator per creare un’applicazione salvata nella stessa directory di Movefile che semplicemente lancia il comando wordmove pull –all

Per crearla ho aggiunto Esegui AppleScript dall’elenco delle funzioni disponibili e ho inserito questo script

in questo modo con un doppio click lancio immediatamente il download del sito in questione. L’applicazione salvata come synctolocal.app deve essere copiata in ogni dominio che si vuole sincronizzare nella stessa cartella dove viene salvato il file Movefile. Nel file Movefile devi logicamente anche escludere il file dell’applicazione synctolocal.app che diversamente verrebbe eliminato. Con Windows lo stesso risultato si ottiene con un banalissimo file batch del vecchio Dos.

Che dire, argomento non semplicissimo da trattare. Se hai dei dubbi riportali nei commenti e ti darò una risposta.


That's all folks!
Contenuto bloccato, acconsenti all'uso dei cookie.
Contenuto bloccato, acconsenti all'uso dei cookie.