WordMove, una Gemma per il Deploy WordPress

WordMove, una Gemma per il Deploy in WordPress

Come è già successo in qualche articolo fa in cui ti ho parlato di WP CLI, anche quest'oggi mi trovo a parlarti di uno strumento a riga di comando che ti permetterà di velocizzare e semplificare il tuo lavoro.

Contenuti Extra

Grazie a questo strumento potevi installare, gestire e modificare le tue installazioni WordPress e, benché utile da usare all’interno del proprio server locale, uno strumento del genere dimostra la sua utilità nella gestione del proprio VPS dove ti basterà avere una connessione SSH e applicare le tue modifiche direttamente da terminale.

Ma oggi non parleremo tanto di uno strumento che ti permette di gestire la piattaforma WordPress ma piuttosto di uno che ti permetterà di gestire al meglio il suo deploy.

Che Cosa è il Deploy?

Se conosci già il significato di questo termine hai due scelte: o guardi il video o salti questa sezione e continui alla prossima. Oppure, se ti sei affezionato alle mie definizioni non accademiche di concetti e soluzioni, ecco il mio personale punto di vista sul deploy.

Praticamente il deploy non è altro che la possibilità di avere un ambiente di test dove poter applicare e sperimentare le proprie modifiche senza dover andare a modificare il sito in produzione. Sono sicuro che moltissimi degli sviluppatori che leggono questo blog sono stati contattati da qualche cliente che gli richiedeva profonde modifiche al sito esistente che, il più delle volte, non ha neanche WordPress installato.

Se le modifiche non sono molte e sembrano innoque potresti pensare di aprire il tuo client FTP e modificare i file direttamente dal server (anche io l’ho fatto diverse volte), purtroppo questa non è né la soluzione più performante, tantomeno la più sicura. Collegandoci via FTP e gestendo il progetto in questo modo metteremo in pericolo i file sui quali stiamo lavorando e di conseguenza lo stesso sito del cliente! Quando sviluppi, non hai tempo per correre dietro ai problemi che succedono al sito del cliente, non puoi mantenere un livello alto di concentrazione se continui a saltare da un problema ad un altro…

Sicuramente la soluzione più sicura e veloce sarebbe quella di creare una nuova installazione WordPress all’interno del proprio ambiente di test ma, nel momento del trasferimento del nuovo tema o plugin, ti accorgi che per costruirlo hai fatto affidamento ad alcune informazioni che sono presenti sul tuo database ma che non trovi su quello del cliente, altro grattacapo! Se conosci la sintassi SQL non ti sarai preoccupato molto, avrai effettuato l’accesso e avrai importato le informazioni necessarie all’interno del database; ma hai comunque perso del tempo.

La miglior pratica di deploy che potresti realizzare è quella di creare un clone del sito del cliente, modificare questo all’interno del tuo ambiente di test e, a fine lavori, caricare tutto automaticamente senza troppe preoccupazioni. Talvolta realizzare questi ambienti non è una cosa molto facile ma, per il 99% dei casi, quello che serve è avere un server web locale e… WordMove!

Questo progetto, del tutto Italiano, mi ha semplificato enormemente la vita Tutto quello che devi fare è installare questa gemma e creare un unico file di configurazione, fatte queste due azioni, sarai in grado si sincronizzare il tuo progetto locale con quello ospitato nel server online (e viceversa) utilizzando un semplicissimo comando: wordmove.

Ma… Hai proprio detto Gemma?!?

A breve andremo a vedere come utilizzare questo potente comando in alcune situazioni comuni nello sviluppo WordPress ma, quello che desidero fare adesso, è spiegarti il motivo del mio riferimento alla gemma. A differenza dello strumento WP CLI, il progetto WordMove è stato sviluppato in Ruby (altro linguaggio che rende semplice lo sviluppo web) ed è un linguaggio che negli ultimi anni ha attirato molti sviluppatori e aiuta a sviluppare delle applicazioni davvero interessanti.

Senza andare troppo nel dettaglio, per far funzionare WordMove all’interno del tuo sistema avrai bisogno dei seguenti componenti:

  • Ruby – avere installato questo linguaggio all’interno del proprio sistema (come è stato per WP CLI e il PHP) è necessario per il suo corretto funzionamento;
  • RubyGems – una volta che hai installato questo linguaggio ed il suo compilatore ti conviene installarti anche questo gestore di pacchetti (o gemme) che ti permetterà di installare facilmente WordMove ed altri strumenti interessanti.

A questo punto ti trovi di fronte ad un bivio, ho una buona ed una cattiva notizia per te, ti lascio il compito di scegliere quale leggere prima:

  • Cattiva Notizia – in questo articolo non andremo a vedere come installare questi componenti, se sei interessato non esitare ad aggiungere un commento ma per motivi di lunghezza non posso proprio andare oltre;
  • Buona Notizia – se utilizzi Mac o Linux ci sono buone possibilità che troverai questi componenti preinstallati nel tuo sistema, se utilizzi Windows… Forse è arrivato il momento per creare una macchina virtuale ed installare Linux 😉

Se continui a leggere do per scontato che sul tuo sistema sia presente sia Ruby che RubyGems, per essere sicuro di aver tutto pronto (compreso aver avviato il proprio server web locale) puoi lanciare questi due comandi all’interno del terminale:

Ho evidenziato la riga 1 e 3 perché con i comandi ruby -v e gem -v stai controllando le rispettive versioni installate all’interno del tuo sistema, il codice che vedi sopra proviene direttamente dal mio Mac.

Altre Buone Notizie

In tutto questo non siamo ancora andati ad analizzare una caratteristica che fa perdere diverse nottate a tutti gli sviluppatori WordPress che hanno avuto la necessità di trasferire un sito da un dominio ad un altro, oppure da locale ad online.

La complessità di questa operazione risiede nel fatto che WordPress fa affidamento al database MySQL che trova installato sulla macchina per salvare tutte le informazioni che riguardano la piattaforma stessa. Cose come il nome, gli articoli, le pagine ma anche la stessa URL vengono salvate nel database, e questo comporta spesso diversi problemi. Ad esempio, come ci ha fatto notare Daniele nello scorso articolo, per spostare un sito è necessario modificare la URL presente nel database, operazione non sempre facile e che diversi sviluppatori hanno affrontato sotto diversi punti di vista (nell’articolo di Daniele abbiamo conosciuto lo script PHP Search Replace DB).

Il bello di WordMove è che ti permette di fare questo, e molto altro, dalla semplice e veloce riga di comando.

Installa WordMove

Adesso che ho fatto tutte le introduzioni del caso è giunto il momento di scoprire come si installa questa fantastica applicazione. Tutto quello che devi fare è lanciare questo comando all’interno del tuo terminale che ti permetterà di installare WordMove grazie al gestore di gemme RubyGems.

Sono sicuro che ti aspettavi qualcosa di più complicato, vero?!? E invece no! Tutta l’installazione viene gestita da RubyGems ed al termine di questa tutto quello che devi fare è iniziare ad utilizzare il programma! Per assicurarci che tutto sia funzionato nel migliore dei modi, prima di iniziare a lavorare sul serio, è giusto controllare se abbiamo a nostra disposizione tutti i comandi necessari:

Come puoi notare, in fin dei conti il terminale non è poi così cattivo. Basta ricordarsi il nome del comando che vuoi utilizzare e far seguire questa dal parametro --help per avere una lista completa dei comandi che possiamo lanciare attraverso questa applicazione; andiamo adesso a scoprirle nel dettaglio:

  • help [COMMAND] sostituendo [COMMAND] con uno dei comandi che presenteremo più in basso potrai avere a disposizione una documentazione dettagliata sul comando stesso (cosa che andremo comunque a vedere a breve);
  • init – questo comando permette di generare un nuovo file di configurazione (un file Movefile) che ti permetterà di muovere il tuo progetto da un server ad un altro;
  • pull come da definizione inglese ti permetterà di tirare la tua installazione online all’interno del tuo server locale creando un clone completamente sincronizzato con quello online;
  • push anche in questo caso ci viene data la possibilità di sincronizzare una installazione WordPress con un’altra, ma questa volta possiamo trasferire in modo del tutto indolore il tuo ambiente di sviluppo all’interno del server online.

Questa è stata una veloce scarrellata delle funzionalità che avrai a disposizione con WordMove, andiamo intanto a scoprire come creare un file di configurazione…

Movefile, un Unico File di Configurazione

Forse inspirati dallo stesso WordPress, anche i creatori di WordMove hanno deciso di inserire all’interno di un unico file tutta la (semplice) configurazione del programma. A breve andremo a vedere passo passo come creare questo file ma prima è importante capire come sia possibile collegarsi alla nostra piattaforma con questo strumento.

Quando si parla di sviluppare in WordPress tendenzialmente si pensa ad avere un server web locale ed un editor di testo ma, come abbiamo visto prima parlando di FTP, abbiamo bisogno anche di programmi che ci permettono di connetterci con i server online, sia web che MySQL.

Grazie a WordMove potrai connetterti ad un server web online grazie a due diversi tipi di connessioni:

  • FTP – il classico File Transfer Protocol che permette l’invio di file (e non dati presenti nel database) da un server ad un altro;
  • SSH – la connessione SSH è molto utile perché ti permette di aprire un terminale all’interno del server online al quale siamo collegati. Questo ci permette, in modo del tutto sicuro, di accedere ai programmi del server (come ad esempio il database MySQL) e modificare i file presenti al suo interno.

In questo articolo andremo a vedere come sia possibile configurare WordMove per collegarsi al server via SSH, accesso che molti provider (compreso BlueHost) mettono a disposizione sia perché grazie a questa applicazione è un processo del tutto automatico sia perché è più sicuro e performante (infatti moltissime operazioni prenderanno soltanto una manciata di secondi).

Se ti stai chiedendo come hanno fatto gli sviluppatori WordMove a utilizzare il protocollo FTP anche per trasferire il database c’è da dire che hanno avuto proprio un lampo di genio! Tutto quello che fanno è creare uno script PHP in grado di importare il database modificato, veramente una soluzione interessante!

Chiudendo questa parentesi da sviluppatore, devo chiarire che l’applicazione WordMove ha bisogno di essere eseguita all’interno di una cartella che presenta le seguenti caratteristiche:

  • server web – MoveFile deve essere salvato all’interno di una cartella dove verrà installato WordPress, questo ovviamente richiede che la stessa cartella sia all’interno di questo server;
  • shell – parlando di applicazione da terminale è necessario avere uno di questi puntato all’interno della cartella.

Adesso che abbiamo chiarito anche i passi base è giunto il momento di lanciare il comando wordmove init che, come visto in precedenza non farà altro che creare il file MoveFile.

Per seguire meglio questa lezione ti consiglio di scaricare il Gist che ti ho condiviso precedentemente e rinominare il Movefile generato da WordMove in qualcosa come Movefile-backup. A questo punto devi semplicemente salvare il file che ho condiviso con te in Movefile e sei pronto ad aprire le danze.

Configurazione Locale

Dato che stiamo parlando di sviluppo e che sviluppare sulla propria macchina locale è la cosa più semplice e rapida possibile, iniziamo a vedere come configurare questo file partendo da queste impostazioni.

Come puoi vedere tu stesso, la sintassi del file è molto semplice, nella parte più alta dovrai definire la URL del progetto in locale e il percorso assoluto che specifica la posizione della cartella contenente il progetto WordPress.

Sotto a queste informazioni devi inserire i dati che permetteranno a WordMove di accedere al server MySQL presente nella installazione locale in questo modo potrai importare od esportare il database locale grazie ai comandi di questa applicazione.

Configurazione Online

Praticamente in questa sezione andrai ad aggiungere gli stessi parametri che abbiamo visto precedentemente ma questa volta saranno dati relativi al server online, quindi mi raccomando fai attenzione a quello che stai facendo 😉

Configurazione SSH o FTP

Come dicevo precedentemente, in questo tutorial andremo a configurare WordMove per utilizzare la connessione SSH che ritengo più veloce e sicura di una qualsiasi connessione FTP ma, se hai bisogno di utilizzare questa configurazione, in questo codice trovi anche la porzione che dovrai decommentare per attivare la funzionalità FTP.

Anche in questo caso, tutto quello che devi fare è inserire le informazioni che il tuo stesso provider avrà condiviso con te e che ti permetteranno di configurare questa applicazione.

Decidi che Cosa Escludere

Molte volte, quando lavoriamo ad un progetto, all’interno della sua cartella prendono vita diversi file che magari ci permettono di gestire il versioning del nostro codice (come ad esempio la cartella .git creata dall’omonimo sistema) oppure la gestione del progetto stesso da parte del nostro editor di testo. I motivi per i quali la nostra cartella ospita diversi possono essere i più disparati e curiosi ma questo non toglie il fatto che non vogliamo caricare questi file all’interno del server di produzione, ma piuttosto mantenerli segretamente all’interno della nostra cartella locale.

Grazie alla sezione exclude: abbiamo la possibilità di specificare il nome ed il percorso del file che vogliamo escludere dalla sincronizzazione e non dobbiamo assolutamente preoccuparci di questi in futuro.

È Giunto il Momento del Divertimento!

E purtroppo anche quello della chiusura di questo articolo… Vedremo in un futuro articolo come utilizzare al meglio i comandi pull e push che ti permetteranno di mettere in sincrono le differenti versioni della piattaforma WordPress sulla quale stai lavorando.

Se vuoi provare tu stesso e se hai creato nel modo corretto il Movefile tutto quello che devi fare e lanciare il seguente comando all’interno della cartella che dovrà contenere il tuo nuovo progetto:

Con questo singolo comando stai dicendo a WordMove di prendere tutto il contenuto del sito online e di tirarlo nel tuo sistema locale. Tornando all’esempio del cliente che facevo qualche paragrafo prima, grazie a questo semplicissimo comando stai clonando il sito del tuo cliente all’interno del tuo sistema locale e nel giro di qualche minuto (dipende molto dalla grandezza del sito stesso) sarai in grado di applicare le modifiche necessarie ed iniziare il tuo lavoro.

Conclusioni

Avrei voluto continuare a scrivere questo articolo e continuare a condividere con te alcuni concetti davvero interessanti che fanno di questa applicazione una must have per ogni sviluppatore WordPress ma purtroppo abbiamo già raggiunto il limite delle 2500 parole (che cerco sempre di rispettare per mantenere attiva la tua attenzione). Dato che mi potrei sbagliare, facciamo un piccolo sondaggio.

Se sei arrivato a leggere fin qua ed hai ritenuto l’articolo ben costruito e che potrebbe approfondire altri aspetti, devi semplicemente commentare questo articolo inserendo qualcosa come verso le 2500 parole e oltre, qualcosa di stupido tanto conosci lo spirito 😉

Se invece preferisci leggere articoli più corti, avvisami anche di questo perché in base ai messaggi che questo articolo raccoglierà cercherò di adattare al meglio il mio stile di scrittura alle tue esigenze.

Lascia il tuo Pensiero

2 Responses to “WordMove, una Gemma per il Deploy in WordPress”

  1. Riccardo Bano

    Ciao Andrea!
    Articolo molto interessante,
    non capisco però dove devo andare ad inserire il file “wordmove” che fai scaricare…

    Riesci a chiarirmi le idee?
    Grazie molte,
    Riccardo

    Rispondi
    • Andrea Barghigiani

      Ciao Riccardo,

      il file Movefile deve essere inserito direttamente nella root della tua installazione WordPress, in questo modo potrà tranquillamente modificare all’occorrenza i file che sincronizzerai.

      Spero di aver risolto il tuo dubbio ma se così non fosse non esitare a rispondere di nuovo.

      Grazie mille per i complimenti e a presto,
      Andrea

      Rispondi