Č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.
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 zgradbawp-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
- Prijavi se v cPanel in v skupini Datoteke klikni ikono Git™ Version Control, nato gumb Ustvari.
- Izklopi stikalo Clone a Repository (ustvari nov, prazen repozitorij).
- V polje Repository Path vnesi mesto repozitorija znotraj domačega imenika, na primer
repositories/sajat-tema. To je obpublic_htmlin s spleta ni dosegljivo. - Repository Name je le prikazno ime.
- Klikni gumb Ustvari.
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.ymlin 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 vejemasterne 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,F644ne izpusti. V našem testu je brez njegarsync -adovoljenje700mape repozitorija preneslo tudi na mapo teme, spletni strežnik pa je za datotekostyle.cssvrnil napako403. S stikalom dobijo mape dovoljenje755, datoteke pa644. rsync --deletedatoteke, izbrisane iz Gita, izbriše tudi s spletnega mesta. To je varno le zato, ker je cilj mapa ene same teme. Ukaza s stikalom--deletenikoli ne usmeri na mapopublic_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.
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:
- 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/configključ dodeli ponudniku in enkrat sprejmi njegov ključ gostitelja:ssh -T git@github.com. - Na strani Git™ Version Control › Ustvari pusti stikalo Clone a Repository vklopljeno in v polje Clone URL vnesi naslov repozitorija.
.cpanel.ymlje enak kot zgoraj, v korenu oddaljenega repozitorija.- 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).


