Dezvoltare locală WordPress cu Lando (sau Docker ușor)

Publicat: 2019-11-22

La începutul acestui an, am scris un ghid despre cum să utilizați Docker pentru a dezvolta în WordPress. Mi-a plăcut foarte mult să lucrez la acea postare și se pare că și ție ți-a plăcut (mulțumesc pentru toate comentariile și e-mailurile tale). Dacă nu ați citit postarea, iată un memento rapid:

Docker este un program care vă permite să ambalați software în containere și să le rulați pe mașinile virtuale. Principalul avantaj al Docker este că containerele sale rulează folosind mediul de virtualizare oferit de sistemul de operare gazdă, rezultând containere rapide și ușoare .

Principala problemă pe care o are Docker este că configurația sa este greoaie . De exemplu, pentru a crea un mediu de dezvoltare WordPress, trebuie să pornim două (cel puțin) servicii: un serviciu de baze de date și un server de aplicații web.

În postarea care a comentat la început am văzut un instrument, Docker Compose , care permite definirea tuturor serviciilor pe care trebuie să le dezvoltăm pentru un anumit proiect. Cu Docker Compose , am reușit să definim într-un singur fișier docker-compose.yml toate dependențele proiectului nostru și să-l pornim cu o singură comandă.

Sau asta am promis inițial, pentru că am închis postarea explicând cum să configurați încă un alt serviciu Docker care să vă permită să utilizați nume de domenii frumoase în instalațiile dvs. WordPress. Dacă vă amintiți, cu fișierul original docker-compose.yml , mediul nostru de dezvoltare WordPress ar fi accesibil prin http://localhost:8080 . Dar dacă doream să folosim ceva de genul http://myplugin.local , trebuia să setăm un proxy care să rezolve numele de domenii și să adăugăm mai multe setări la docker-compose.yml ...

Știu, știu – a fost destul de complicat să pună lucrurile în funcțiune! Dar odată ce ai pus totul corect, a fost destul de ușor, nu? Oricum, m-am hotarat sa iti prezint noul meu prieten: Lando. El vă va ajuta să configurați noi medii de dezvoltare în câteva secunde.

Intră Lando

Cred că cel mai bun mod de a te prezenta lui Lando este să folosești o propoziție din documentația sa:

Lando este pentru dezvoltatorii care doresc să evite integrarea în masochism de a folosi direct docker sau docker-compose .

documentele lui Lando

Da, se pare că folosirea docker și docker-compose este pentru masochiști... Deci, să vedem cum putem specifica rapid și fără complicații toate serviciile de care avem nevoie pentru a lucra la un nou proiect WordPress.

Instalarea Lando

Primul lucru pe care ar trebui să-l faci pentru a putea folosi Lando este (surpriză, surpriză!) să-l instalezi pe computer. Procesul de instalare este extrem de simplu și este foarte bine documentat, dar îl putem rezuma în următorii pași:

  1. Lando are nevoie de Docker. Dacă sunteți pe Linux, instalați mai întâi Docker Community Edition. Dacă sunteți pe Mac sau Windows, programul de instalare al lui Lando va instala Docker dacă nu este deja disponibil.
  2. Descărcați programul de instalare Lando adecvat pentru sistemul dvs. de operare. În cazul meu, de exemplu, am descărcat fișierul lando-v3.0.0-rc.22.deb (sunt pe Linux) și l-am instalat cu dpkg . Pentru Mac, utilizați fișierul .dmg și, pentru Windows, fișierul .exe .
  3. Rulați programul de instalare și urmați pașii.

Si asta e!

Cum să creezi un nou proiect WordPress în Lando

Primul lucru pe care trebuie să-l facem este să mergem în folderul de proiect cu care vrem să lucrăm (sau să creăm unul nou pentru acesta). În cazul meu, voi crea un nou WordPress dev env pentru a dezvolta pluginul nostru cd A/B Testing, așa că voi accesa folderul de unde am descărcat proiectul: ~/dev/plugins/nelio-ab-testing .

Odată ajuns acolo, trebuie să creăm fișierul de configurare al lui Lando. Acest fișier este similar cu docker-compose.yml , dar mult mai simplu. Pentru început, nici măcar nu trebuie să-l scrii — Lando o poate face pentru tine! Pur și simplu utilizați lando init pentru a crea un nou mediu de dezvoltare:

 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 want

Să vedem ce face instrucțiunea anterioară:

  • În primul rând, îi spunem lui Lando că vrem să creăm un nou fișier de configurare în directorul curent folosind lando init .
  • Primul parametru ( --recipe wordpress ) îi spune lui Lando că vrem să creăm un proiect WordPress. Acest lucru îl va ajuta pe Lando să cunoască serviciile pe care trebuie să le configureze (o bază de date, un server web etc.).
  • Apoi indicăm că vrem ca Lando să descarce WordPress de pe WordPress.org.
  • Cu --webroot wordpress îi spunem lui Lando unde va fi instalat WordPress. Deoarece tocmai am specificat că WordPress trebuie să fie descărcat de pe WordPress.org și zip-ul pe care îl va descărca Lando va crea un folder wordpress după dezarhivare, aceasta este locația pe care o folosim pentru Lando.
  • În cele din urmă, specificăm numele proiectului nostru (Lando îl va folosi pentru a genera domenii URL prietenoase).

După ce rulați comanda anterioară, veți vedea cum Lando instalează totul și vă întâmpină cu următoarele informații:

 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

Listați toate fișierele din folderul curent și veți vedea că Lando a creat un fișier ascuns numit .lando.yml cu următorul conținut:

 name: my-site recipe: wordpress config: webroot: wordpress

Extrem de simplu, nu? Acum începeți serviciul folosind lando start și sunteți gata:

 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.site

Felicitări! Acum aveți o nouă instalare WordPress în funcțiune. Dacă mergem acum la una dintre URL-urile Lando enumerate la început, veți vedea că trebuie pur și simplu să urmați pașii pentru a finaliza instalarea WordPress:

Instalați WordPress în țară
Instalați WordPress în Lando.

Finalizarea rapidă a instalării WordPress

Evident că puteți finaliza instalarea WordPress folosind programul de instalare al ecranului anterior. Dar există o soluție și mai bună: folosiți WP-CLI, pe care îl avem disponibil și în Lando.

Pentru a instala WordPress cu WP-CLI, trebuie să creăm mai întâi un wp-config.php în directorul wordpress . Pentru a crea acel fișier, avem nevoie de câteva informații despre baza noastră de date: unde se află, numele de utilizator și parola, etc. Toate aceste informații pot fi găsite prin lando info , care returnează următorul 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', }, //... } ]

Deoarece rezultatele sunt un șir JSON, putem folosi instrumentul jq al Unix pentru a prelua valorile specifice care ne interesează. De exemplu, dacă vrem să cunoaștem utilizatorul bazei de date, rulați acest lucru:

 $ lando info --service database --format json | jq -r ".[0].creds.user" wordpress

Acum, să folosim această comandă și să recuperăm toate datele relevante de care avem nevoie pentru a construi fișierul de configurare folosind 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=$WEBROOT

Odată ce avem fișierul creat, putem lansa comanda de instalare:

 # 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=$WEBROOT

Terminat! Avem deja WordPress instalat și funcționează.

Cum să punem proiectul nostru în WordPress

Dacă acum ne conectăm la WordPress și ne uităm la pluginurile disponibile, vom vedea că pluginul nostru (Nelio A/B Testing, în exemplul meu) nu este acolo. Asta pentru că Nelio A/B Testing nu este în wordpress/wp-content/plugins/ . Pentru a remedia acest lucru, trebuie pur și simplu să creăm o legătură soft în acest director care indică rădăcina proiectului nostru:

 cd wordpress/wp-content/plugins/ ln -s ../../../ nelio-ab-testing cd -

Si asta e!

Acum rămâne la latitudinea dvs. să decideți abordarea care se potrivește mai bine nevoilor dvs. Dacă doriți să creați o instalare WordPress pentru fiecare proiect, trebuie doar să urmați pașii pe care i-am descris. Dacă, pe de altă parte, doriți o singură instalare WordPress cu toate temele și pluginurile dvs. în ea, atunci pur și simplu creați un folder nou, inițiază Lando acolo și adaugă toate pluginurile în wordpress/wp-content/plugins/ .

Sper că v-a plăcut această postare și acest instrument la fel de mult ca mie. Și sper că vă va face munca mai ușoară și mai amuzantă. De când am folosit Lando, m-am îndepărtat complet de Docker.

Imagine prezentată de Victoire Joncheray pe Unsplash.