Versionskontrolle mit GIT und cPanel

GIT Version Control in cPanel

GIT Version Control in cPanel

Jeder, der ein Webhosting bei uns betreibt, kennt das Konfigurationstool cPanel. Es eine webbasierte Administrationsoberfläche für fast alle gängigen administrativen Aufgaben und ermöglicht damit unter GNU/Linux-Webservern zahlreiche Funktionen, die ansonsten nur mit einem hohen Konfigurationsaufwand oder Wissensstand verfügbar wären.

Jeder, der etwas ernsthafter mit Webentwicklung und Site Building zu tun hatte, kennt GIT oder hat es schon mal benutzt. GIT ist ein Versionsverwaltungssystem, also ein System, das zur Erfassung von Änderungen in Dateien verwendet wird. Alle Dateiversionen werden in einem Archiv (Repository) mit Zeitstempel und Benutzerkennung gesichert und können später wiederhergestellt werden. Ich habe schon mal hier im Blog darüber geschrieben (Entwicklungsworkflow für Deine Website(s)).

In cPanel gibt es nun das Feature Git™ Version Control und damit eine einfache Implementierung der wirklich nützlichen Versionsverwaltung.
Im weiteren Verlauf beschreibe ich ein Beispiel für verteiltes Arbeiten mit diesem Feature. 

Warum Versionsverwaltung?

Stell dir vor, du hast eine Website und der Inhalt, die Struktur, das Layout und das Design dieser Website soll gemeinsam von mehreren Personen erstellt und gepflegt werden. Du probierst vermutlich verschiedene Content Management Systeme (CMS) aus und landest irgendwann bei Joomla, WordPress, Drupal, Contao, TYPO3 oder anderen. All diese Systeme bestehen aus vielen Dateien und einer Datenbank, in der Inhalte gespeichert werden.  Du lädst das System der Wahl einmal auf dein Webhosting und „installierst“ es. Installation bedeutet in der Regel, du teilst dem System den Hostnamen, den Benutzernamen und das Passwort der Datenbank, sowie den Benutzernamen, die E-Mail Adresse und ein Passwort für einen „SuperUser“ mit, inclusive aller Rechte mit. Danach kannst du das CMS benutzen.

Dateien und Daten

Wenn du dann weitere Benutzer und Inhalte anlegst, so landen diese Daten in der Datenbank. Das ist gut, weil sie von dort mit der SQL Abfragesprache abgefragt und in verschiedenen Sinnzusammenhängen dargestellt werden können („Zeige mit alle Artikel, die vor dem xxx geschrieben worden sind und in denen das Wort Linux vorkommt“). Die Benutzer des CMS, auch der SuperUser kommen normalerweise nie mit der Bedienung oder Konfiguration der Datenbank in Berührung. Sie ist da und funktioniert :).  Wenn du nun Erweiterungen für das CMS installierst, so lädst du dir normalerweise zusätzliche Dateien in einen bestimmten Bereich (Unterverzeichnis) des CMS. Diese Erweiterungen bieten zusätzliche Features, beispielsweise einen Online-Shop. Sie bestehen aus Dateien, die im Dateisystem des Webservers gespeichert werden. Die Inhalte des Online Shops werden allerdings wieder in der Datenbank gespeichert.

Der eine Teil des CMS liegt also im Form Datei von Dateien vor (Core, Erweiterungen), der andere als Teil als Datenbank (Texte, Konfigurationseinstellungen). 

Ein Sonderfall stellen Bilddateien dar, die in Artikeln benutzt werden und jegliche Art von Downloads (PDF, mp3, etc). Sie gelten als Inhalte, werden aber nicht in der Datenbank gespeichert, sondern im Dateisystem.

CMS ohne Datenbank

Es gibt auch CMS, die keine Datenbank nutzen, sondern komplett dateibasiert sind. Die heissen auch Flat File Systeme und bekannte Vertreter sind unter anderen GRAV, Kirby, Pico, Yellow. Auch darüber gibt es schon etwas im Blog: Grav 1.1, Yellow

Welche Versionen werden verwaltet?

Wenn du zu einem Blogpost, so wie diesem hier, eine Datei hochlädst, wird sich vermutlich nichts an dieser Datei ändern. Eine Versionsverwaltung ist vermutlich nicht notwendig.

Alle Daten, die in der Datenbank gespeichert sind, können nicht von der Versionsverwaltung erfasst werden, entfallen also für die Versionierung.

Was bleibt, sind die Dateien, die im Core des CMS, den Erweiterungen und den Themes gespeichert werden. Bei diesen Dateien kann es sinnvoll sein, Versionen von Daten zu verwalten.

Warum Agenturen/Entwickler/Designer?

Wenn du ein CMS nutzt, möchtest du normalerweise ein individuelles Design und ein paar individuelle Erweiterungen, denn du möchtest das Besondere deines Geschäfts (Service, Dienst)herausstellen. Wenn du nicht alles selbst kannst, so beauftragst du eine Agentur, einen Entwickler und/oder einen Designer (und natürlich auch Designerinnen, Entwicklerinnen und Agenturinnen ;-)). Diese Menschen erstellen und ändern Dateien! Designer arbeiten mit CSS, JavaScript, HTML und Grafikdateien, Entwickler mit Dateien, die Code enthalten. Und an dieser Stelle schlägt die grosse Stunde der Versionsverwaltung.

Stell dir vor, mehrere Leute arbeiten an diesen Dateien und müssen ihre Arbeit synchronisieren. 

Stell dir vor, du arbeitest allein an den Dateien und möchtest einfach die Möglichkeit haben, zu älteren Bearbeitungsständen zu wechseln.

Da es bei Versionsverwaltungen eher um Organisations- und Optimierungstechniken geht, kommt es immer auf den Einzelfall an. Aus einem Projekt, das einer allein startet, kann schnell etwas Grösseres werden und eine Agentur mit mehreren Leuten beschäftigt auch mal Freelancer, die ebenfalls an den Dateien arbeiten müssen. Manchmal ist es sinnvoll die Repositories öffentlich zugänglich zu haben (z.B. GitHub), manchmal ist es besser sie privat zu hosten (z.B. BitBucket). Es gibt zahlreiche Plattformen, die diese Dienstleistung anbieten und es ist auch in cPanel möglich, dazu aber später in einem weiteren Artikel mehr.

Beispiel mit einem öffentlichen Repository auf Github

Es existiert bereits ein öffentliches Repository mit Dateien auf GitHub. Ziel ist, die Dateien dieses Repositories auf unserem Webhosting zu „clonen“ und bei Bedarf zu aktualisieren. Das ist ein gängiges Szenario bei selbst geschriebenen Erweiterungen für CMS die „nur“ aus Dateien bestehen und für Flat File Systeme als Ganzes. Hier im Bespiel zeige ich es anhand meines „Playground“ Repositories auf GitHub.

Öffentliches Repository auf GitHub

Ich hatte mir dieses Repository (Repo) angelegt um mit der IDE PHP Storm verschiedene Dinge auszuprobieren.

Git™ Version Control in Cpanel

Ich kann mir das Playground Repo „clonen“, also von GitHub auf mein Webhosting kopieren. Es erscheint dann in der Übersichtsliste mit zahlreichen Informationen. 

Liste der GIT Repositories auf deinem Webhosting

Wenn jemand die Dateien bei GitHub geändert hat kann die Version auf dem Webhosting per Button Klick aktualisiert werden („gepullt“ oder „Update von Remote“).

„Pull“ der aktualisierten Dateien

Es gibt auch eine History in der du dir die verschiedenen Versionen mit ihren Unterschieden anzeigen lassen kannst.

History mit Unterschieden

Es gibt unglaublich viele Möglichkeiten in GIT, man kann sich schnell verzetteln und ein wenig den Überblick verlieren. Daher glaube ich, dass so ein einfaches Beispiel zunächst mal „genug“ ist. Wenn das einmal eingerichtet ist, kann in diesem Fall die Arbeit öffentlich auf GitHub stattfinden und dein Webhosting „konsumiert“ gewissermassen die Ergebnisse, in dem du es bei Bedarf aktualisierst. Früher hättest du die Dateien auf deinen lokalen PC geladen und dann per FTP auf dein Webhosting. Nachteil bei FTP ist die fehlende Historie.

Brauche ich das?

Es ist schwer zu sagen, inwieweit eine Versionsverwaltung dein Leben einfacher oder komplizierter macht. Wenn du mit datenbankbasierten CMS arbeitest und keinerlei oder sehr wenige Dateiänderungen vornimmst, also nicht „entwickelst“ im engeren Sinn, dann brauchst du kein Versionskontrollsystem sondern eher ein mehrstufiges Backup System. Wenn du aber Ambitionen hast, an Dateien etwas zu verändern, beispielsweise neue Erweiterungen zu schreiben oder ein Child Theme zu erzeugen, solltest du dich mit dem Thema Versionsverwaltung befassen.

Daumenregel: Immer wenn mehrere Benutzer an den gleichen Dateien arbeiten, sollte schon aus Sicherheitsgründen eine Versionsverwaltung genutzt werden.

cPanel bietet mehrere Videos und eine Dokumentation an, in dem die oben angerissenen Schritte genauer erläutert werden. Das verlinkte Video ist gut für einen ersten Einblick in das Thema.

cPanel Tutorial English

Alle Repositories werden in einem individuellen Pfad auf deinem Webhosting abgelegt. Der Pfad kann natürlich Teil eines CMS sein, beispielsweise ein Modul oder Theme in Drupal, ein Plugin oder Theme in WordPress, eine Erweiterung oder ein Template in Joomla. Auch Libraries lassen sich gut damit verwalten.

Fazit

Das Thema ist komplex, aber eines was immer wichtiger wird. Es erinnert mich an die Geschichte der SSL/TLS Zertifikate, die heutzutage von jedem genutzt und die vor ein paar Jahren noch eher selten bei Websites anzutreffen waren. cPanel bietet mit dem GIT Feature einen einfachen Einstieg in die Materie und tatsächlich eine funktionierende, webbasierte Administrationsoberfläche für ansonsten doch recht komplizierte administrative Aufgaben.

Links


tl;dr: Die Versionsverwaltung GIT steht nun auch unter cPanel zur Verfügung

Autor: hagengraf

consultant, author, trainer, solution finder, web architect, developer, open source lover, visionary, orator, the good old webmaster. Able to simplify!

Kommentar verfassen