Wenn Sie ein eigenes WordPress-Theme oder -Plugin entwickeln und die Dateien nach jeder Änderung per FTP hochladen, ersetzt das cPanel-Tool „Git™ Version Control“ diesen Vorgang. cPanel verwaltet ein Git-Repository auf Ihrem cPanel-Hosting, und sofern sich im Stammverzeichnis des Repositorys eine Datei namens „.cpanel.yml“ befindet, führt es die darin aufgeführten Befehle bei der Installation als Ihr Benutzer aus. Diese Befehle kopieren den Theme-Ordner auf Ihre Website.
Wir haben den Vorgang anhand eines Testbeispiels in unserem cPanel-Hosting-Testkonto durchgespielt; der Artikel zeigt die dort verwendeten Einstellungen.
Was benötigen Sie?
- SSH-Zugriff. Für die Verwaltung des Speichers und das Hochladen von Dateien ist SSH erforderlich, das in den Paketen cP Premium, cP Pro und cP Pro 100 enthalten ist. Auf unseren Servern läuft SSH über Port 4231 und funktioniert ausschließlich mit einem Schlüssel (Einrichtung eines SSH-Schlüssels).
- Git auf Ihrem eigenen Rechner. Auf dem Server ist Git installiert.
- Ein Speicherort für ein Theme oder eine PHP-Erweiterung, in dessen Stammverzeichnis sich die Datei „
style.css“ (bei PHP-Erweiterungen die Haupt-PHP-Datei) befindet, und nicht die Struktur „wp-content/themes/…“. Diese Entscheidung erspart Ihnen später viele Probleme.
Zwei Konfigurationen
- cPanel nutzt den Remote-Speicher (Push auf das Hosting). Sie erstellen einen leeren Speicher im cPanel und übertragen die Änderungen direkt von Ihrem eigenen Rechner dorthin. cPanel führt nach dem Push automatisch die Installation durch. Dies werden wir Ihnen im Detail erläutern.
- GitHub oder GitLab dienen als Quelle (Klonen). cPanel klont das Repository, und Sie nehmen die Änderungen über die cPanel-Oberfläche vor und führen anschließend die Installation durch. Darauf wird am Ende dieses Artikels eingegangen.
1. Einrichten des Speichers
- Melden Sie sich bei cPanel an und klicken Sie in der Gruppe „Dateien“ auf das Symbol „Git™ Version Control“ und anschließend auf die Schaltfläche „Erstellen“.
- Deaktivieren Sie den Schalter „Repository klonen“ (dies erstellt ein neues, leeres Repository).
- Geben Sie im Feld „Repository Path“ den Speicherort des Repositorys innerhalb Ihres Home-Verzeichnisses an, beispielsweise „
repositories/sajat-tema“. Dieser befindet sich neben dem Verzeichnis „public_html“ und ist über das Internet nicht zugänglich. - Der „Repository-Name“ ist lediglich ein Anzeigename.
- Klicken Sie auf die Schaltfläche „Erstellen“.
cPanel zeigt Ihnen anschließend die SSH-Adresse des Repositorys an, beispielsweise ssh://felhasznalonev@pelda.hu:4231/home/felhasznalonev/repositories/sajat-tema, sowie die Angabe, dass der Zweig des neuen Repositorys „master“ lautet.
2. Die Datei „.cpanel.yml“
Erstellen Sie auf Ihrem eigenen Rechner im Stammverzeichnis des Theme-Verzeichnisses (neben der Datei „style.css“) die Datei „.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/
Geben Sie anstelle von „felhasznalonev“ Ihren cPanel-Benutzernamen und anstelle von „sajat-tema“ den Namen des Themenordners ein. Wenn die Website auf einer Zusatzdomain oder einer Subdomain läuft, geben Sie anstelle von „public_html“ den entsprechenden Ordner an (Sie finden diesen auf der Seite „Domains“ in der Spalte „Dokumentenstammverzeichnis“).
Bitte beachten Sie Folgendes, da dies häufig zu Funktionsstörungen führt:
- Der Dateiname lautet genau „
.cpanel.yml“ und die Datei befindet sich im Stammverzeichnis des Speicherbereichs, nicht in einem Unterordner. - Die Datei muss sich in dem Verzeichnis befinden, in das cPanel die Installation vornimmt. Wenn Sie sie nur im Verzeichnis „
develop“ abgelegt haben, hat die Installation im Verzeichnis „master“ keine Auswirkungen. - Verwenden Sie zum Einrücken ein Leerzeichen, kein Tabulatorzeichen.
- Geben Sie die Befehle mit dem vollständigen Pfad an (
/bin/mkdir,/usr/bin/rsync), da die Umgebung bei der Installation nur minimal ausgestattet ist. - Lassen Sie den Schalter „
--chmod=D755,F644“ nicht weg. In unserem Test übertrug der Befehl „rsync -a“ ohne diesen Schalter die Berechtigung700des Speicherordners auch auf den Themenordner, woraufhin der Webserver für die Datei „style.css“ den Fehler403ausgab. Mit diesem Schalter erhalten die Ordner die Berechtigung755und die Dateien die Berechtigung644. - Der Befehl „
rsync --delete“ löscht Dateien, die aus Git entfernt wurden, auch von der Website. Dies ist nur deshalb sicher, weil es sich bei dem Ziel um einen einzelnen Themenordner handelt. Richten Sie den Befehl mit dem Schalter „--delete“ niemals auf den Ordner „public_html“ aus.
3. Was sollte in den Speicher aufgenommen werden?
Nur der Quellcode des Themes oder des Plugins. Dieser darf nicht enthalten sein und bei der Installation nicht überschrieben werden:
- die Datei „
wp-config.php“ (Passwörter, Schlüssel), - den Ordner „
wp-content/uploads“ (die hochgeladenen Bilder), - das WordPress-Kernmodul und weitere Plugins.
Dies sind die Daten der Website, nicht deren Code. Falls das Theme einen Kompilierungsschritt erfordert (Sass, npm build), führen Sie diesen bitte auf Ihrem eigenen Rechner oder in einem CI-System durch und legen Sie die kompilierten Dateien im Repository ab: Die Installation führt lediglich die angegebenen Befehle aus und ist kein Build-System.
4. Push und Installation
Auf Ihrem eigenen Rechner, im Themenordner:
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
cPanel stellt die Installation unmittelbar nach dem Auslösen in die Warteschlange; in der Antwort sehen Sie Folgendes:
remote: Recieved update on checked-out branch, queueing deployment.
remote: deploy_id: 1
...
* [new branch] master -> master
Bei unserem Test erschien das Theme wenige Sekunden nach dem Push im Ordner „wp-content/themes“ und wurde von WordPress unter den WordPress-Themes aufgelistet. Das Theme können Sie anschließend auf der Seite „Darstellung > Themes“ aktivieren. Für weitere Änderungen genügen ein „git commit“ und ein „git push“.
5. Überprüfung
Öffnen Sie im cPanel das Repository (Verwalten) und klicken Sie auf die Registerkarte „Pull or Deploy“. Im Abschnitt „Last Deployment Information“ werden der Zeitpunkt der letzten Bereitstellung und der bereitgestellte Commit angezeigt; mit der Schaltfläche „Deploy HEAD Commit“ können Sie die Bereitstellung auch manuell erneut durchführen.
Über die Befehlszeile (Terminal oder 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
Das erwartete Ergebnis: der letzte Commit, die neue Versionsnummer des Themes, die Berechtigungen „drwxr-xr-x“, der Status „rendben“ und der Code „200“. Das Installationsprotokoll befindet sich im Verzeichnis „~/.cpanel/logs/“ (vc_…_git_deploy.log) und enthält für jeden Befehl den Exit-Code.
Zurück zu einer früheren Version
Wechseln Sie nicht direkt auf dem Server zu einem älteren Commit (git checkout <commit>): Das Repository gerät dadurch in den Status „detached HEAD“, und cPanel kann die Installation nicht durchführen. Die korrekte Vorgehensweise ist ein neuer Commit, der den fehlerhaften Commit rückgängig macht:
git revert --no-edit <hibas-commit>
git push
Nach dem Push installiert cPanel den korrigierten Status, genau wie jede andere Änderung auch.
Von GitHub oder GitLab geklont
Wenn die Quelle GitHub oder GitLab ist, handelt es sich bei dem cPanel-Repository um eine Kopie des Remote-Repositorys:
- Bei einem öffentlichen Repository reicht die HTTPS-Adresse aus. Bei einem privaten Repository erstellen Sie bitte über die cPanel-Terminal-Oberfläche einen Schlüssel (
ssh-keygen -t ed25519 -f ~/.ssh/telepito_kulcs -N "") und fügen Sie den öffentlichen Teil (cat ~/.ssh/telepito_kulcs.pub) als Installationsschlüssel mit Lesezugriff zum Repository hinzu (auf GitHub: „Deploy keys“). Weisen Sie anschließend in der Datei „~/.ssh/config“ den Schlüssel dem Provider zu und akzeptieren Sie einmalig dessen Hostschlüssel: „ssh -T git@github.com“. - Lassen Sie auf der Seite „Git™-Versionskontrolle › Erstellen“ die Option** „Repository klonen“** aktiviert und geben Sie im Feld „Klon-URL“ die Adresse des Repositorys ein.
- Die Datei „
.cpanel.yml“ ist identisch mit der oben genannten und befindet sich im Stammverzeichnis des Remote-Speichers. - Nachdem Sie Änderungen vorgenommen haben, ziehen Sie diese auf der Registerkarte „Pull or Deploy“ nach unten und führen Sie die Bereitstellung anschließend über die Schaltfläche „Deploy HEAD Commit“ durch.
Wann ist dies nicht das richtige Tool?
Die Git-Versionskontrolle installiert Dateien. Sie migriert keine Datenbanken und synchronisiert keine Inhalte. Wenn Sie eine vollständige, getestete Website (mit Inhalten und Einstellungen) live schalten möchten, ist die Staging-Funktion des WP Toolkits dafür vorgesehen. Beides lässt sich gut miteinander kombinieren: Der Code des Themes stammt aus Git, der Inhalt aus dem Staging-Bereich. Wenn Sie die Website aus Git installieren, sollten Sie das Theme und Ihre eigenen Plugins nicht im WP Toolkit oder im Admin-Bereich aktualisieren, da diese bei der nächsten Installation überschrieben werden (Aktualisierungsmodi).


