tavis nörttimaailmassa

EksisONE - artikkeleita ja ohjeita nörttimaailmasta

WP-CLI: Alias

Shellin suurimpia hidasteita ovat pitkät komentorimpsut. Osan oppii ulkoa, varsinkin jos niitä käyttää usein. Loput ovat sitten aina tarkastamisen takana. Tuo on suurimpia syitä miksi minulla on komentorivit tallennettuna erikseen tekstitiedostoon tai sitten hyödynnän näitä juttuja. Kopypeistaamalla saa helpotettua elämäänsä. Aivan sama pätee WP-CLI:ssä. Mahtava työkalu, mutta komentojen syntaksien etsimiseen saattaa mennä kauemmin aikaa kuin ongelman ratkaisemiseen jotain muuta kautta. Yksinkertaiset kommennot muistaa kuitenkin paremmin ja siksi kannattaa tutustua aiheeseen nimeltä alias.

Alias on juuri sitä miltä se kuulostaakin. Tehdään eräällä tavalla uusi komento, alias, johon sitten ympätään tarvittavat liput, laput ja vivut mukaan. Niitä saa muuten tehty bash:iin myös (tai pitäisikö sanoa varsinkin). Joten jos säännönmukaisesti kirjoitat cd typottamalla muotoon vd, niin tee siitä alias – ja kyllä, maailmassa ei ole yhtään kunniansa tuntevaa koodaria tai dev-hemmoa, joka ei pitäisi tuota tapaa hyödyntää aliasta suunnattomana alisuorittamisena. Ihan sama.

Mutta sallitaan ihan ensimmäiseksi rootin käyttö wp-komentojen kanssa. Jos et koskaan käytä root-tunnusta, niin et tarvitse tätä.

Komenna bashissa:

echo 'alias wp="wp --allow-root"' >> ~/.bashrc

Sammuta SSH-yhteys ja kirjaudu uudestaan käynnistämällä terminaali, kuten PuTTY. Osalla tuo on toiminut, osalla ei.

WP-CLI ja alias

WP-CLI:ssä alias tarkoittaa yhtä tarkkaa asiaa. Se on oikopolku erilaiseen asennuksiin. Käytännössä se siis vastaa --path="polku/worpdpressiin" vipstaakia, tai että täytyy mennä juuri määrättyyn worpdressin hakemistoon antaakseen komennot, Nyt riittää, että antaa mukaan aliaksen, esimerkiksi @saitti, joka ohjaa komennon oikeaan paikkaan.

Uskoisin, että WP-CLI:n aliaksia käytetään eniten kahteen tarkoitukseen:

  • yhdistämään komento useammalle sivustolle yhtä aikaa, kuten vaikka ajamaan päivitykset jokaiselle sivustolle yhdellä komennolla
  • helpottamaan SSH-kirjautumista, kun komento kohdistuu toisella serverillä olevaan worpdressiin

~/.wp-cli/config.yml

Ihan ensimmäiseksi:

  • tilde eli ~ tarkoittaa käyttäjän kotihakemistoa ja koska olen root-tunnuksella, niin minulla se on sama kuin /root. Tunnukselle käyttäjä kotihakemisto olisi /home/käyttäjä
  • piste niin tiedoston kuin hakemiston edessä tarkoittaa piilotettua, joten se ei näy normaalisti listauksessa

WP-CLI:ssä on kolme mahdollista konfiguraatiotiedostoa ja config.yml on niistä yksi, se globaali. Siellä piilottelee mm. aliakset. Toinen mahdollinen paikka olisi wp-cli.yml joka on hakemistokohtainen.

Jos teet wp-cli.yml -tiedoston vaikka hakemistoon /var/www/html ja olet samassa hakemistossa komentaessasi aliasta, niin silloin alias ajetaan sen hakemiston wp-cli.yml tiedoston mukaan. Jos annatkin wp-komennon aliaksen kanssa hakemistossa /var/www/saitti/public_html niin aliasta ei tunnisteta.

Siksi aliakset kannattaa laittaa config.yml tiedostoon ja sivustokohtaiset säädöt wp-cli.yml tiedostoon, joka on sivuston juuressa.

Alias

Aliaksia voi tehdä kahdella eri tavalla:

  • muokkaamalla suoraan config.yml -tiedostoa
  • wp cli alias -komennolla

Avataan config.yml

nano ~/.wp-cli/config.yml

Se on todennäköisesti tyhjä, jos et ole koskaan säätänyt mitään. Jos olet toisella tunnuksella kuin millä WP-CLI on asennettu, niin sinulla ei ole koko .wp-cli -hakemistoa. Luodaan se siinä tapauksessa.

Komento tekee hakemiston, siirtää sinut samantien siihen ja luo tiedoston.

mkdir ~/.wp-cli && cd ~/.wp-cli && touch config.yml

Alias-listan muoto on allaolevan mukainen. Käytän esimerkkeinä muutamaa aitoa sivustoa.


@katiska:
     path: /var/www/html
@katiskaselko:
     path: /var/www/html
     url: https://www.katiska.info/selko
@eksis:
     path: /var/www/eksis.fi/public_html
@cloud:
     path: /var/www/eksis.one/public_html
@jagster:
     path: /var/www/jagster.fi/public_html
@nature:
     path: /var/www/ymparistosuunnittelija.com/public_html
@stage:
     ssh: root@127.0.0.1
     path: /var/www/stage/html
@dev:
     ssh: root@127.0.1.1/var/www/html

Rakenne on siis hyvin yksinkertainen: aliaksen nimi ja mikä on worpdressin polku.

Viimeinen on eri VPS:llä eli DigitalOceanin dropletilla. Laita tilalle oikea IP-numero, jos sinulla on tarve päästä toiselle serverille antamaa wp-komentoja. Viimeinen on vain esimerkkinä, että SSH voidaan antaa myös polun kanssa yhteen – muista silloin, että välilyöntiä ei saa olla.

Aliakseen @katiskaselko jouduin laittamaan lisäksi urlin. Katiska on multisite, jolloin pelkkä hakemisto kohdistuu vain ”pääsivustoon”. Muut verkoston sivustot on lisäksi eroteltava urlilla. Ja nyt saattaa huomata vaikeuden – entä jos on iso farmi sivustoja, jossa käyttäjät saavat tehdä uusia blogeja? Niiden hallinta käsipelillä olisi suoraan sanottuna yhtä helvettiä. Silloin kannattaa varmaan maksaa jollekin koodarille, joka automatisoi tuon – se on nimittäin mahdollista.

Jos komennan ihan missä päin severiäni tahansa

wp @katiska theme list

niin saan listauksen Katiskaan asennetuista teemoista.

Ei tuo itsessään ole kovinkaan hyödyllistä ja säästää vain websivun hakemistoon siirtymisen vaivan.

Mutta aliakset voi myös ryhmitellä. Esimerkiksi näin.


@kauppa:
  - @katiska
  - @eksis
@blogi:
  - @katiskaselko
  - @cloud
@ulkopuoliset:
  - @jagster
  - @nature
@testipenkki:
  - @stage
  - @dev

wp cli alias

Toinen tapa lisätä aliaksia on tehdä se suoraan WP-CLI:n kautta. On makuasia kumpaa käyttää. config.yml on helpompi muistaa kuin wp-käskyn rakenne. Mutta ehkä ensimmäinen lista kannattaa tehdä suoraan muokkaamalla, niin pysyy kärryillä mitä on tehnyt. Uudemmat lisää sitten tapaus kerrallaan komentoriviltä.

Käytettävä komento on wp cli alias add ja sen vähimmäismuoto on:

wp cli alias add @tunnus --set-path=/var/www/html

Tarpeen mukaan saatat joutua lisäämään myös esimerkiksi

  • --set-ssh=login@host (laita ennen polkua)
  • --url=<url> (esimerkiksi multisiteissa)
  • saat kaikki vaihtoehdot yksitellen käyttämällä pelkästään lippua --prompt
  • saat help-tiedoston lipulla --help

Saat lisättyä aliaksen ryhmään, groupiin, komennolla:

wp cli alias add @testipenkki --grouping=tunnus

cli alias --help esittää muut komennon mahdollisuudet: voit muokata aliastasta, poistaa sen jne. Mutta toki voit tehdä samat muutokset suoraan config.yml -tiedostoon.

Aliasten käyttö

Saadaan tehtyä samankaltaisille sivustoille samankaltaisia asioita. Ja nyt alkaakin komentojen määrä vähentyä. SSH:n takana olevat sivustot varsinkin helpottuvat, kun käyttäjää, IP-osoitetta (tai hostia) ja polkua ei tarvitse enää antaa. Se on sitten toinen juttu, että kannattaa asentaa SSL-sertifikaatit, niin ei tarvitse antaa salasanoja.

Päivitetään pelkästään @blogi allaolevat sivustot.

wp @blogi plugin update --all

Tai tyhjennetään verkkokauppojen cache ennen isompaa säätöä, mutta muut saa olla.

wp @kauppa cache flush

Tai jos halutaan poistaa vanhat transientit jokaisesta kehityskikkailusaitista.

wp @testipenkki transient delete --expired

Yksi tapa voisi olla synkata tuotantosivuston tietokanta kehityspuolelle:

wp @katiska db export - | wp @stage db import - && wp @production search-replace "katiska.info" "example.com"

Haluaisitko hoitaa synkan scriptillä? Kokeile tätä:

Aliaksia voi olla paljonkin, eikä muista mikä oli mikä. Saat listan kaikista aliaksista tällä:

wp cli alias list

Jos haluat katsoa vain yhden aliaksen määrittelyjä:

wp cli alias get @katiska

Kun otit listauksen kaikista aliaksista, niin ensimmäisenä oli @all. Se on automaattisesti luotu alias, joka pitää sisällään aivan kaikki. Joten jos haluat ajaa aivan jokaiselle sivustolle juuri tulleen WordPressin päivityksen (mutta mehän odotamme ensin viikon, eikö niin…) ja samalla hoidetaan päivitystä kaipaavat lisäosat ja teemat, niin se onnistuu näin helposti:

wp @all core update && wp @all plugin update --all && wp theme update --all