Namestitev teme WordPress iz Gita z orodjem Git Version Control v cPanelu

cPanel Branje: 5 min

Če razvijaš lastno temo ali vtičnik WordPress in po vsaki spremembi datoteke nalagaš prek FTP, to nadomesti orodje Git™ Version Control v cPanelu. cPanel na tvojem gostovanju vzdržuje repozitorij Git, in če je v korenu repozitorija datoteka .cpanel.yml, ob namestitvi kot tvoj uporabnik izvede ukaze, naštete v njej. Ti ukazi prekopirajo mapo teme na spletno mesto.

Postopek smo s testno temo preizkusili na našem testnem računu gostovanja cPanel; članek prikazuje nastavitve, ki so tam delovale.

Infografika: git push, repozitorij cPanel, naloge .cpanel.yml, živa tema

Kaj boš potreboval?

  • Dostop SSH. Za upravljanje repozitorija in potiskanje je potreben SSH, ki je na voljo v paketih cP Premium, cP Pro in cP Pro 100. Na naših strežnikih SSH deluje na vratih 4231, izključno s ključem (nastavitev ključa SSH).
  • Git na tvojem računalniku. Na strežniku je Git nameščen.
  • En repozitorij z eno temo ali enim vtičnikom, v katerega korenu je style.css (pri vtičniku glavna datoteka PHP), ne zgradba wp-content/themes/…. Ta odločitev ti pozneje prihrani veliko težav.

Dve postavitvi

  • cPanel je oddaljeni repozitorij (push na gostovanje). V cPanelu ustvariš prazen repozitorij in spremembe s svojega računalnika potisneš neposredno tja. cPanel po potisku samodejno namesti. To prikazujemo podrobno.
  • Vir je GitHub ali GitLab (kloniranje). cPanel klonira repozitorij, ti pa v vmesniku cPanel povlečeš spremembe in nato namestiš. O tem bo govora na koncu članka.

1. Ustvarjanje repozitorija

  1. Prijavi se v cPanel in v skupini Datoteke klikni ikono Git™ Version Control, nato gumb Ustvari.
  2. Izklopi stikalo Clone a Repository (ustvari nov, prazen repozitorij).
  3. V polje Repository Path vnesi mesto repozitorija znotraj domačega imenika, na primer repositories/sajat-tema. To je ob public_html in s spleta ni dosegljivo.
  4. Repository Name je le prikazno ime.
  5. Klikni gumb Ustvari.

Git Version Control: Create Repository, Clone a Repository izklopljeno

cPanel nato pokaže naslov SSH repozitorija, na primer ssh://felhasznalonev@pelda.hu:4231/home/felhasznalonev/repositories/sajat-tema, in tudi to, da je veja novega repozitorija master.

2. Datoteka .cpanel.yml

Na svojem računalniku v korenu repozitorija teme (ob style.css) ustvari datoteko .cpanel.yml:

---
deployment:
  tasks:
    - export THEME=/home/felhasznalonev/public_html/wp-content/themes/sajat-tema
    - /bin/mkdir -p $THEME
    - /usr/bin/rsync -a --delete --chmod=D755,F644 --exclude '.git' --exclude '.cpanel.yml' ./ $THEME/

Namesto felhasznalonev vpiši svoje uporabniško ime cPanel, namesto sajat-tema pa ime mape teme. Če spletno mesto teče na dodatni domeni ali poddomeni, namesto public_html navedi njeno mapo (vidiš jo v stolpcu Korenski imenik dokumentov strani Domene).

Na kaj paziti, ker zaradi tega običajno ne deluje:

  • Ime datoteke je natanko .cpanel.yml in je v korenu repozitorija, ne v podmapi.
  • Datoteka mora biti na veji, ki jo cPanel namešča. Če si jo dal le na vejo develop, namestitev veje master ne naredi ničesar.
  • Zamik naj bo s presledki, ne s tabulatorji.
  • Ukaze navedi s polno potjo (/bin/mkdir, /usr/bin/rsync), ker je okolje ob namestitvi minimalno.
  • Stikala --chmod=D755,F644 ne izpusti. V našem testu je brez njega rsync -a dovoljenje 700 mape repozitorija preneslo tudi na mapo teme, spletni strežnik pa je za datoteko style.css vrnil napako 403. S stikalom dobijo mape dovoljenje 755, datoteke pa 644.
  • rsync --delete datoteke, izbrisane iz Gita, izbriše tudi s spletnega mesta. To je varno le zato, ker je cilj mapa ene same teme. Ukaza s stikalom --delete nikoli ne usmeri na mapo public_html.

3. Kaj naj pride v repozitorij?

Le izvorna koda teme ali vtičnika. Vanj naj ne pride, namestitev pa naj ne prepiše:

  • datoteke wp-config.php (gesla, ključi),
  • mape wp-content/uploads (naložene slike),
  • jedra WordPress in drugih vtičnikov.

To so podatki spletnega mesta, ne njegova koda. Če tema potrebuje korak prevajanja (Sass, npm build), ga opravi na svojem računalniku ali v sistemu CI in prevedene datoteke daj v repozitorij: namestitev izvaja le navedene ukaze, ni sistem za gradnjo.

4. Push in namestitev

Na svojem računalniku, v mapi teme:

git init -b master
git add .
git commit -m "Prva različica"
git remote add origin ssh://felhasznalonev@pelda.hu:4231/home/felhasznalonev/repositories/sajat-tema
git push -u origin master

cPanel po potisku takoj postavi namestitev v vrsto; v odgovoru vidiš to:

remote: Recieved update on checked-out branch, queueing deployment.
remote:     deploy_id: 1
...
 * [new branch]      master -> master

V našem testu se je tema nekaj sekund po potisku pojavila v mapi wp-content/themes, WordPress pa jo je navedel med predlogami. Temo nato vklopiš na strani Videz › Teme. Za nadaljnje spremembe zadostujeta git commit in git push.

5. Preverjanje

V cPanelu odpri repozitorij (Upravljaj) in klikni zavihek Pull or Deploy. Razdelek Last Deployment Information kaže čas zadnje namestitve in nameščeni commit; z gumbom Deploy HEAD Commit lahko znova namestiš tudi ročno.

Git Version Control: zavihek Pull or Deploy z gumbom Deploy HEAD Commit in podatki o zadnji namestitvi

Iz ukazne vrstice (Terminal ali SSH):

git -C ~/repositories/sajat-tema log --oneline -1
grep -m1 "Version:" ~/public_html/wp-content/themes/sajat-tema/style.css
ls -ld ~/public_html/wp-content/themes/sajat-tema
test -d ~/public_html/wp-content/themes/sajat-tema/.git && echo "HIBA: .git a webhelyen" || echo rendben
curl -s -o /dev/null -w "%{http_code}\n" https://pelda.hu/wp-content/themes/sajat-tema/style.css

Pričakovani rezultat: zadnji commit, nova številka različice teme, dovoljenje drwxr-xr-x, rendben in 200. Dnevnik namestitev je v mapi ~/.cpanel/logs/ (vc_…_git_deploy.log), z izhodno kodo za vsak ukaz.

Vrnitev na prejšnjo različico

Na strežniku ne preklapljaj na starejši commit (git checkout <commit>): repozitorij takrat preide v stanje „detached HEAD”, cPanel pa ne more namestiti. Pravilna vrnitev je nov commit, ki razveljavi napačnega:

git revert --no-edit <hibas-commit>
git push

Po potisku cPanel namesti popravljeno stanje, enako kot katero koli spremembo.

S kloniranjem z GitHuba ali GitLaba

Če je vir GitHub ali GitLab, bo repozitorij cPanel kopija oddaljenega repozitorija:

  1. Pri javnem repozitoriju zadostuje naslov HTTPS. Pri zasebnem repozitoriju v vmesniku Terminal v cPanelu ustvari ključ (ssh-keygen -t ed25519 -f ~/.ssh/telepito_kulcs -N ""), njegov javni del (cat ~/.ssh/telepito_kulcs.pub) pa repozitoriju dodaj kot namestitveni ključ samo za branje (na GitHubu: Deploy keys). Nato v datoteki ~/.ssh/config ključ dodeli ponudniku in enkrat sprejmi njegov ključ gostitelja: ssh -T git@github.com.
  2. Na strani Git™ Version Control › Ustvari pusti stikalo Clone a Repository vklopljeno in v polje Clone URL vnesi naslov repozitorija.
  3. .cpanel.yml je enak kot zgoraj, v korenu oddaljenega repozitorija.
  4. Po spremembi na zavihku Pull or Deploy povleci spremembe, nato namesti z gumbom Deploy HEAD Commit.

Kdaj to ni pravo orodje?

Git Version Control namešča datoteke. Podatkovne baze ne preseli in vsebine ne sinhronizira. Če bi rad v produkcijo prenesel celotno, preizkušeno spletno mesto (z vsebino in nastavitvami), je za to namenjena funkcija staging v WP Toolkit. Oboje se dobro dopolnjuje: koda teme prihaja iz Gita, vsebina iz staginga. Če spletno mesto nameščaš iz Gita, teme in svojih vtičnikov ne posodabljaj v WP Toolkit ali skrbniškem vmesniku, ker jih naslednja namestitev prepiše (načini posodabljanja).

Nazaj: cPanel – članki (48)