Sviluppo locale di WordPress con Lando (o Docker semplificato)
Pubblicato: 2019-11-22All'inizio di quest'anno ho scritto una guida su come utilizzare Docker per sviluppare in WordPress. Mi è davvero piaciuto lavorare su quel post e sembra che anche a te sia piaciuto (grazie per tutti i tuoi commenti e le tue e-mail). Se non hai letto il post, ecco un rapido promemoria:
Docker è un programma che consente di impacchettare software in contenitori ed eseguirli su macchine virtuali. Il vantaggio principale di Docker è che i suoi container vengono eseguiti utilizzando l'ambiente di virtualizzazione fornito dal sistema operativo host, risultando in container veloci e leggeri .
Il problema principale che Docker ha è che la sua configurazione è ingombrante . Ad esempio, per creare un ambiente di sviluppo WordPress, dobbiamo avviare due (almeno) servizi: un servizio database e un server webapp.
Nel post che abbiamo commentato all'inizio abbiamo visto uno strumento, Docker Compose , che permette di definire tutti i servizi che dobbiamo sviluppare per un determinato progetto. Con Docker Compose siamo riusciti a definire in un unico file docker-compose.yml tutte le dipendenze del nostro progetto e ad avviarlo con un solo comando.
Oppure è quello che avevo inizialmente promesso, perché ho chiuso il post spiegando come configurare l'ennesimo servizio Docker che ti permettesse di utilizzare bellissimi nomi di dominio nelle tue installazioni di WordPress. Se ricordi, con il file docker-compose.yml originale, il nostro ambiente di sviluppo di WordPress sarebbe accessibile tramite http://localhost:8080 . Ma se volessimo usare qualcosa come http://myplugin.local dovevamo configurare un proxy in grado di risolvere i nomi di dominio e aggiungere più impostazioni al nostro docker-compose.yml …
Lo so, lo so, è stato piuttosto complicato mettere in funzione le cose! Ma una volta che hai impostato tutto correttamente, è stato abbastanza facile, giusto? Comunque, ho deciso di presentarvi il mio nuovo amico: Lando. Ti aiuterà a configurare nuovi ambienti di sviluppo in pochi secondi.
Entra Lando
Penso che il modo migliore per presentarti a Lando sia usare una frase della sua documentazione:
Lando è per gli sviluppatori che vogliono evitare il masochismo incorporato nell'uso diretto di
I documenti di Landodockerodocker-compose.
Sì, a quanto pare usare docker e docker-compose è per masochisti... Vediamo quindi come possiamo specificare velocemente e senza complicazioni tutti i servizi di cui abbiamo bisogno per lavorare su un nuovo progetto WordPress.
Installazione di Lando
La prima cosa che dovresti fare per poter usare Lando è (sorpresa, sorpresa!) installarlo sul tuo computer. Il processo di installazione è estremamente semplice ed è molto ben documentato, ma possiamo riassumerlo nei seguenti passaggi:
- Lando richiede Docker. Se sei su Linux, installa prima Docker Community Edition. Se sei su Mac o Windows, lo stesso programma di installazione di Lando installerà Docker se non è già disponibile.
- Scarica il programma di installazione di Lando appropriato per il tuo sistema operativo. Nel mio caso, ad esempio, ho scaricato il file
lando-v3.0.0-rc.22.deb(sono su Linux) e l'ho installato condpkg. Per Mac, usa il file.dmge, per Windows, il.exe. - Esegui il programma di installazione e segui i passaggi.
E questo è tutto!
Come creare un nuovo progetto WordPress in Lando
La prima cosa che dobbiamo fare è andare alla cartella del progetto con cui vogliamo lavorare (o crearne una nuova). Nel mio caso, creerò un nuovo ambiente di sviluppo di WordPress per sviluppare il nostro plugin Nelio A/B Testing, quindi cd nella cartella in cui ho scaricato il progetto: ~/dev/plugins/nelio-ab-testing .
Una volta lì, dobbiamo creare il file di configurazione di Lando. Questo file è simile a docker-compose.yml , ma molto più semplice. Per cominciare, non è nemmeno necessario scriverlo: Lando può farlo per te! Usa semplicemente lando init per creare un nuovo ambiente di sviluppo:
lando init \ --recipe wordpress --source remote --remote-url https://wordpress.org/latest.tar.gz --webroot wordpress --name "Nelio AB Testing" # name the project as you wantVediamo cosa fa l'istruzione precedente:
- Per prima cosa, diciamo a Lando che vogliamo creare un nuovo file di configurazione nella directory corrente usando
lando init. - Il primo parametro (
--recipe wordpress) dice a Lando che vogliamo creare un progetto WordPress. Questo aiuterà Lando a conoscere i servizi che deve configurare (un database, un server web, ecc.). - Quindi indichiamo che vogliamo che Lando scarichi WordPress da WordPress.org.
- Con
--webroot wordpressdiciamo a Lando dove verrà installato WordPress. Dato che abbiamo appena specificato che WordPress deve essere scaricato da WordPress.org e lo zip che Lando scaricherà creerà una cartellawordpressdopo la decompressione, questa è la posizione che usiamo per Lando. - Infine, specifichiamo il nome del nostro progetto (Lando lo utilizzerà per generare domini URL amichevoli).
Dopo aver eseguito il comando precedente, vedrai come Lando installa tutto e ti accoglie con le seguenti informazioni:
NOW WE'RE COOKING WITH FIRE!!! Your app has been initialized! Go to the directory where your app was initialized and run `lando start` to get rolling. Check the LOCATION printed below if you are unsure where to go. Oh... and here are some vitals: NAME my-site LOCATION /tmp/plugin RECIPE wordpress DOCS https://docs.devwithlando.io/tutorials/wordpress.html Elenca tutti i file nella cartella corrente e vedrai Lando ha creato un file nascosto chiamato .lando.yml con il seguente contenuto:

name: my-site recipe: wordpress config: webroot: wordpress Estremamente semplice, vero? Ora avvia il tuo servizio usando lando start e sei a posto:
BOOMSHAKALAKA!!! Your app has started up correctly. Here are some vitals: NAME my-site LOCATION /tmp/plugin SERVICES appserver, database APPSERVER URLS https://localhost:32781 http://localhost:32782 http://nelio-ab-testing.lndo.site https://nelio-ab-testing.lndo.siteCongratulazioni! Ora hai una nuova installazione di WordPress attiva e funzionante. Se ora andiamo a uno degli URL Lando elencati all'inizio, vedrai che devi semplicemente seguire i passaggi per completare l'installazione di WordPress:

Completamento rapido dell'installazione di WordPress
Ovviamente puoi completare l'installazione di WordPress utilizzando l'installer della schermata precedente. Ma c'è una soluzione ancora migliore: usa WP-CLI, che abbiamo anche a disposizione in Lando.
Per installare WordPress con WP-CLI dobbiamo prima creare un wp-config.php nella directory di wordpress . Per creare quel file, abbiamo bisogno di alcune informazioni sul nostro database: dove si trova, il suo nome utente e password, ecc. Tutte queste informazioni possono essere trovate tramite lando info , che restituisce il seguente JSON:
[ { service: 'appserver', urls: [ 'https://localhost:32781', 'http://localhost:32782', 'http://nelio-ab-testing.lndo.site', 'https://nelio-ab-testing.lndo.site' ], //... }, { service: 'database', //... creds: { database: 'wordpress', password: 'wordpress', user: 'wordpress', }, //... } ] Poiché i risultati sono una stringa JSON, possiamo utilizzare lo strumento jq di Unix per recuperare i valori specifici a cui siamo interessati. Ad esempio, se vogliamo conoscere l'utente del nostro database, esegui questo:
$ lando info --service database --format json | jq -r ".[0].creds.user" wordpressOra, sfruttiamo questo comando e recuperiamo tutti i dati rilevanti di cui abbiamo bisogno per creare il file di configurazione utilizzando WP-CLI:
# Find WordPress' directory (webroot entry in .lando.yml) WEBROOT=`grep webroot .lando.yml | cut -d: -f2 | xargs` # Retrieve database credentials using lando info DBNAME=`lando info --service database --format json | jq -r ".[0].creds.database"` DBUSER=`lando info --service database --format json | jq -r ".[0].creds.user"` DBPASS=`lando info --service database --format json | jq -r ".[0].creds.password"` DBHOST=`lando info --service database --format json | jq -r ".[0].hostnames[0]"` # Create WordPress' config file lando wp config create \ --dbname=$DBNAME \ --dbuser=$DBUSER \ --dbpass=$DBPASS \ --dbhost=$DBHOST \ --path=$WEBROOTUna volta creato il file, possiamo lanciare il comando di installazione:
# Get WordPress' project name from .lando.yml PROJECT_NAME=`grep name .lando.yml | cut -d: -f2 | xargs` SITE_NAME=`echo "$PROJECT_NAME" | sed -e "s/-/ /g" | sed "s/\b[az]/\u&/g"` # Get one of the possible WordPress' URLs ando created (https) URL=`lando info --service appserver --format json | jq -r ".[0].urls" | grep -vw localhost | grep https: | cut -d'"' -f2` # Extract the domain from the previous URL (removing https) DOMAIN=`echo "$URL" | sed -e "s/^https:\/\///"` # Install WordPress lando wp core install --url=$URL --title="$SITE_NAME" --admin_user=admin --admin_password=password --admin_email=admin@$DOMAIN --path=$WEBROOTFatto! Abbiamo già WordPress installato e funzionante.
Come inserire il nostro progetto in WordPress
Se ora accediamo a WordPress e diamo un'occhiata ai plugin disponibili, vedremo che il nostro plugin (Nelio A/B Testing, nel mio esempio) non è lì. Questo perché Nelio A/B Testing non è in wordpress/wp-content/plugins/ . Per risolvere questo problema, dobbiamo semplicemente creare un collegamento software in questa directory che punti alla radice del nostro progetto:
cd wordpress/wp-content/plugins/ ln -s ../../../ nelio-ab-testing cd -E questo è tutto!
Ora sta a te decidere l'approccio più adatto alle tue esigenze. Se vuoi creare un'installazione di WordPress per ogni progetto, segui i passaggi che ho descritto. Se, d'altra parte, desideri una singola installazione di WordPress con tutti i tuoi temi e plug-in, crea semplicemente una nuova cartella, avvia Lando lì e aggiungi tutti i tuoi plug-in in wordpress/wp-content/plugins/ .
Spero che questo post e questo strumento vi siano piaciuti tanto quanto me. E spero che renda il tuo lavoro più facile e divertente. Da quando ho usato Lando, mi sono allontanato completamente da Docker.
Immagine in primo piano di Victoire Joncheray su Unsplash.
