WordPress téma telepítése Gitből a cPanel Git Version Control eszközével

cPanel 5 perc olvasás

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.

Infografika: git push, cPanel tároló, .cpanel.yml feladatok, élő téma

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 a wp-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

  1. Jelentkezzen be a cPanelbe, és a Fájlok csoportban kattintson a Git™ Version Control ikonra, majd a Létrehozás gombra.
  2. Kapcsolja ki a Clone a Repository kapcsolót (új, üres tárolót hoz létre).
  3. 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 a public_html mellett van, a webről nem érhető el.
  4. A Repository Name csak megjelenítési név.
  5. Kattintson a Létrehozás gombra.

Git Version Control: Create Repository, a Clone a Repository kikapcsolva

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, a master telepí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,F644 kapcsolót ne hagyja el. A tesztünkön nélküle az rsync -a a tároló mappájának 700-as jogosultságát a téma mappájára is átvitte, és a webszerver a style.css fájlra 403-as hibát adott. A kapcsolóval a mappák 755-ös, a fájlok 644-es jogot kapnak.
  • Az rsync --delete a 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 --delete kapcsolós parancsot a public_html mappá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.php fájlt (jelszavak, kulcsok),
  • a wp-content/uploads mappá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.

Git Version Control: a Pull or Deploy fül a Deploy HEAD Commit gombbal és az utolsó telepítés adataival

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:

  1. 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/config fájlban rendelje a kulcsot a szolgáltatóhoz, és fogadja el egyszer a gépkulcsát: ssh -T git@github.com.
  2. 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.
  3. A .cpanel.yml ugyanaz, mint fent, a távoli tároló gyökerében.
  4. 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).

Vissza: cPanel leírások (42)