Ha egy saját WordPress-témát vagy -bővítményt fejleszt, és minden módosítás után FTP-vel tölti fel a fájlokat, a cPanel Git™ Version Control eszköze kiváltja ezt. A cPanel egy Git-tárolót tart a tárhelyén, és ha a tároló gyökerében van egy .cpanel.yml fájl, az abban felsorolt parancsokat a telepítéskor az Ön felhasználójaként lefuttatja. Ezek a parancsok másolják át a téma mappáját a webhelyre.
A folyamatot egy teszttémával végigpróbáltuk a cPanel tárhely teszt-fiókunkon; a cikk az ott működő beállításokat mutatja.
Mire lesz szüksége?
- SSH-hozzáférés. A tároló kezeléséhez és a pusholáshoz SSH kell, amely a cP Premium, cP Pro és cP Pro 100 csomagban érhető el. A szervereinken az SSH a 4231-es porton, kizárólag kulccsal működik (SSH-kulcs beállítása).
- Git a saját gépén. A szerveren a Git telepítve van.
- Egy tároló egy témával vagy egy bővítménnyel, amelynek gyökerében a
style.css(bővítménynél a fő PHP-fájl) található, nem awp-content/themes/…szerkezet. Ez a döntés később sok bajtól megkíméli.
Két felállás
- A cPanel a távoli tároló (push a tárhelyre). Létrehoz egy üres tárolót a cPanelben, és a saját gépéről közvetlenül oda pusholja a változásokat. A cPanel a push után automatikusan telepít. Ezt mutatjuk be részletesen.
- A GitHub vagy a GitLab a forrás (klónozás). A cPanel klónozza a tárolót, és Ön a cPanel felületén húzza le a változásokat, majd telepít. Erről a cikk végén lesz szó.
1. A tároló létrehozása
- Jelentkezzen be a cPanelbe, és a Fájlok csoportban kattintson a Git™ Version Control ikonra, majd a Létrehozás gombra.
- Kapcsolja ki a Clone a Repository kapcsolót (új, üres tárolót hoz létre).
- A Repository Path mezőben adja meg a tároló helyét a home könyvtárán belül, például
repositories/sajat-tema. Ez apublic_htmlmellett van, a webről nem érhető el. - A Repository Name csak megjelenítési név.
- Kattintson a Létrehozás gombra.
A cPanel ezután megmutatja a tároló SSH-címét, például ssh://felhasznalonev@pelda.hu:4231/home/felhasznalonev/repositories/sajat-tema, és azt is, hogy az új tároló ága master.
2. A .cpanel.yml fájl
A saját gépén, a téma tárolójának gyökerében (a style.css mellett) hozza létre a .cpanel.yml fájlt:
---
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/
A felhasznalonev helyére a cPanel-felhasználónevét, a sajat-tema helyére a téma mappájának nevét írja. Ha a webhely egy kiegészítő domainen vagy aldomainen fut, a public_html helyett annak a mappáját adja meg (a Tartományok oldal Dokumentumgyökér oszlopában látja).
Amire figyeljen, mert ezek miatt nem szokott működni:
- A fájl neve pontosan
.cpanel.yml, és a tároló gyökerében van, nem egy almappában. - A fájlnak azon az ágon kell lennie, amelyet a cPanel telepít. Ha csak a
developágra tette, amastertelepítése nem csinál semmit. - A behúzás szóköz legyen, ne tabulátor.
- A parancsokat teljes útvonallal adja meg (
/bin/mkdir,/usr/bin/rsync), mert a telepítéskor a környezet minimális. - A
--chmod=D755,F644kapcsolót ne hagyja el. A tesztünkön nélküle azrsync -aa tároló mappájának700-as jogosultságát a téma mappájára is átvitte, és a webszerver astyle.cssfájlra403-as hibát adott. A kapcsolóval a mappák755-ös, a fájlok644-es jogot kapnak. - Az
rsync --deletea Gitből törölt fájlokat a webhelyről is törli. Ez csak azért biztonságos, mert a cél egyetlen téma mappája. Soha ne irányítsa a--deletekapcsolós parancsot apublic_htmlmappára.
3. Mi kerüljön a tárolóba?
Csak a téma vagy a bővítmény forráskódja. Ne kerüljön bele, és a telepítés ne írja felül:
- a
wp-config.phpfájlt (jelszavak, kulcsok), - a
wp-content/uploadsmappát (a feltöltött képek), - a WordPress magját és más bővítményeket.
Ezek a webhely adatai, nem a kódja. Ha a témának fordítási lépés kell (Sass, npm build), azt a saját gépén vagy egy CI-rendszerben végezze, és a lefordított fájlokat tegye a tárolóba: a telepítés csak a megadott parancsokat futtatja, nem építőrendszer.
4. Push és telepítés
A saját gépén, a téma mappájában:
git init -b master
git add .
git commit -m "Első verzió"
git remote add origin ssh://felhasznalonev@pelda.hu:4231/home/felhasznalonev/repositories/sajat-tema
git push -u origin master
A cPanel a pusholás után azonnal sorba állítja a telepítést; a válaszban ezt látja:
remote: Recieved update on checked-out branch, queueing deployment.
remote: deploy_id: 1
...
* [new branch] master -> master
A tesztünkön a téma a push után néhány másodperccel megjelent a wp-content/themes mappában, és a WordPress a sablonok között listázta. A témát ezután a Megjelenés › Sablonok oldalon kapcsolhatja be. A további módosításokhoz elég a git commit és a git push.
5. Ellenőrzés
A cPanelben nyissa meg a tárolót (Kezelés), és kattintson a Pull or Deploy fülre. A Last Deployment Information rész mutatja az utolsó telepítés idejét és a telepített commitot; a Deploy HEAD Commit gombbal kézzel is újra telepíthet.
Parancssorból (Terminal vagy 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
A várt eredmény: az utolsó commit, a téma új verziószáma, drwxr-xr-x jogosultság, rendben és 200. A telepítések naplója a ~/.cpanel/logs/ mappában van (vc_…_git_deploy.log), parancsonként a kilépési kóddal.
Visszalépés egy korábbi verzióra
Ne a szerveren váltson egy régebbi commitra (git checkout <commit>): a tároló ekkor „detached HEAD” állapotba kerül, és a cPanel nem tud telepíteni. A helyes visszalépés egy új commit, amely visszavonja a hibásat:
git revert --no-edit <hibas-commit>
git push
A push után a cPanel a javított állapotot telepíti, ugyanúgy, mint bármelyik módosítást.
GitHubról vagy GitLabról klónozva
Ha a forrás a GitHub vagy a GitLab, a cPanel tárolója a távoli tároló másolata lesz:
- Nyilvános tárolónál elég a HTTPS-cím. Privát tárolónál a cPanel Terminal felületén hozzon létre egy kulcsot (
ssh-keygen -t ed25519 -f ~/.ssh/telepito_kulcs -N ""), és a nyilvános felét (cat ~/.ssh/telepito_kulcs.pub) adja hozzá a tárolóhoz csak olvasási jogú telepítési kulcsként (GitHubon: Deploy keys). Ezután a~/.ssh/configfájlban rendelje a kulcsot a szolgáltatóhoz, és fogadja el egyszer a gépkulcsát:ssh -T git@github.com. - A Git™ Version Control › Létrehozás oldalon hagyja bekapcsolva a Clone a Repository kapcsolót, és adja meg a Clone URL mezőben a tároló címét.
- A
.cpanel.ymlugyanaz, mint fent, a távoli tároló gyökerében. - Változás után a Pull or Deploy fülön húzza le a változásokat, majd telepítsen a Deploy HEAD Commit gombbal.
Mikor nem ez a jó eszköz?
A Git Version Control fájlokat telepít. Adatbázist nem migrál, tartalmat nem szinkronizál. Ha egy teljes, kipróbált webhelyet (tartalommal, beállításokkal) szeretne élesíteni, arra a WP Toolkit staging funkciója való. A kettő jól megfér egymással: a téma kódja Gitből érkezik, a tartalom a stagingből. Ha a webhelyet Gitből telepíti, a témát és a saját bővítményeit ne a WP Toolkitben vagy az admin felületen frissítse, mert a következő telepítés felülírja (frissítési módok).


