Git ist das beliebteste Versionskontrollsystem im Bereich der Softwareentwicklung. Es ist Open-Source und wird seit 2005 aktiv gepflegt von Linus Torvalds, dem berühmten Schöpfer von Linux. Heute nutzt eine erstaunliche Anzahl von Softwareprojekten (einschließlich kommerzieller) Git für die Versionsverwaltung.
Git folgt einer verteilten Architektur, was es zu einem perfekten Beispiel für ein DVCS (Distributed Version Control System) macht. Mit Git können wir sowohl ein lokales als auch ein Remote-Repository gleichzeitig verwalten. In dieser Anleitung zeigen wir, wie man ein automatisches Deployment eines Git-Projekts mit einem VPS konfiguriert.
Voraussetzungen
In dieser Anleitung gibt es ein lokales Repository und ein Remote-Repository auf dem VPS. Das lokale Repository wird Änderungen an das Remote-Repository übertragen. Vom Remote-Repository aus können wir die Änderungen in den beta oder live Branch übertragen. Um dies zu erreichen, müssen Sie sich zuerst um einige Voraussetzungen kümmern.
- Ein lokaler Rechner und ein Remote-Server, die beide Ubuntu als Betriebssystem verwenden. Diese Anleitung zeigt, wie man Ubuntu-Server konfiguriert und einrichtet.
- Beide Rechner sind konfiguriert mit Git.
Um eine sichere Verbindung zum VPS herzustellen, verwenden wir SSH. Erfreulicherweise unterstützt Git auch SSH als Protokoll zur Verbindung mit Remote-Repositories. Diese Anleitung befasst sich mit der Konfiguration von SSH zur Verbindung mit Remote-Servern unter Ubuntu.
Konfigurieren des VPS
Auf unserem Remote-Server haben wir die folgende Konfiguration:
- Live-Verzeichnis: /var/www/dummy-domain.com
- Server-Repository: /var/repo/site.git
Vom lokalen Rechner aus überträgt Git die Updates in das VPS-Repository. Im VPS-Repository konfigurieren wir ein Skript, mit dem Git diese automatisch in das Live-Verzeichnis überträgt. Es ist auch möglich, ein Repository für beta-Releases zu konfigurieren.
-
Erstellen der Repositories
Verbinden Sie sich mit dem VPS und erstellen Sie die Repository-Verzeichnisse:
|
1 2 3 |
cd /var sudo mkdir -pv repo && cd repo sudo mkdir -pv site.git && cd site.git |
Als Nächstes initialisieren Sie das Git-Repository:
|
1 |
sudo git init --bare |
Hier beschreibt das Flag --bare , dass es keine Quelldateien geben wird, sondern nur die Komponenten der Versionskontrolle.
-
Hooks
Als Nächstes konfigurieren wir die Hooks für das Repository. Jedes Git-Repository enthält einen Ordner namens hooks. Er enthält Beispieldateien, die als Vorlage für Hooks und verschiedene benutzerdefinierte Aktionen dienen.
Laut der offiziellen Dokumentation von Git gibt es drei Arten von Hooks:
- pre-receive: Er wird ausgeführt, sobald der Server eine Push-Anforderung empfängt.
- post-receive: Er wird ausgeführt, wenn eine Push-Anforderung abgeschlossen ist.
- update: Ähnlich wie pre-receive. Er wird jedoch einmal pro Branch ausgeführt.
Führen Sie im Verzeichnis des Repositories den Befehl ls aus:
|
1 |
ls -l |
Wechseln Sie das aktuelle Verzeichnis zu hooks:
|
1 |
cd hooks/ |
Erstellen Sie nun das Skript post-receive :
|
1 |
sudo nano post-receive |
Geben Sie im Skript den folgenden Code ein. Achten Sie darauf, die Verzeichnispfade entsprechend anzupassen:
|
1 2 |
#!/bin/sh git --work-tree=/var/www/dummy-domain.com --git-dir=/var/repo/site.git checkout -f |
Speichern Sie die Datei und schließen Sie den Editor. Machen Sie die Datei ausführbar:
|
1 |
sudo chmod +x post-receive |
Nun wird Git jedes Mal, wenn ein Push abgeschlossen ist, in das Skript post-receive schauen und die Dateien entsprechend platzieren.
Konfigurieren des lokalen Rechners
Der Remote-Server ist bereit, eingehende Updates des Git-Projekts zu empfangen. Als Nächstes konfigurieren wir das lokale Repository so, dass es den VPS als Remote-Git-Server verwendet.
Erstellen wir ein Beispiel-Verzeichnis für das Git-Projekt:
Initialisieren Sie nun das Repository:
|
1 |
sudo git init |
Wir müssen den Remote-Pfad des Repositories deklarieren. Hier werden wir uns auf den Remote-Speicherort als den live -Branch beziehen. Führen Sie dann den folgenden Befehl aus:
|
1 |
sudo git remote add live ssh://<remote_username>@<remote_ip_address>/var/repo/site.git |
Testen wir es aus. Wir haben dem Projektverzeichnis ein Shell-Skript hinzugefügt:
Fügen Sie als Nächstes die Datei zum Projekt hinzu und führen Sie einen Commit aus:
|
1 2 |
sudo git add . sudo git commit -m "random commit" |
Mit dem nächsten Befehl übertragen wir das Projekt auf den live-Server:
|
1 |
sudo git push live master |
Git verbindet sich über SSH mit dem VPS. Wenn die SSH-Verbindung so konfiguriert wurde, dass ein Passwort verwendet wird, fragt Git nach dem Authentifizierungspasswort.
Beta-Repository
Was ist, wenn das Projekt nicht in einem Schritt bereitgestellt werden soll? Vielleicht erfordert es weitere Tests in einem beta-Verzeichnis. Mit der bisher beschriebenen Methode können wir einen weiteren Branch im VPS erstellen, der als beta-Branch bezeichnet wird.
-
Konfigurieren des Beta-Branches auf dem VPS
Zuerst müssen wir die Verzeichnisse für den VPS erstellen. Verbinden Sie sich mit dem VPS und erstellen Sie ein Verzeichnis unter /var/www:
|
1 2 |
cd /var/www sudo mkdir beta |
Jetzt benötigen wir ein Git-Repository, das als beta-Branch fungiert:
|
1 2 |
cd /var/repo sudo mkdir -pv beta.git && cd beta.git |
Repository initialisieren:
|
1 |
sudo git init --bare |
Implementieren Sie wie zuvor ein post-receive-Skript:
|
1 2 |
cd hooks sudo nano post-receive |
Geben Sie danach den folgenden Code ein:
|
1 2 |
#!/bin/sh git --work-tree=/var/www/beta --git-dir=/var/repo/beta.git checkout -f |
Speichern Sie die Datei und schließen Sie den Editor. Markieren Sie post-receive als ausführbare Datei:
|
1 |
sudo chmod +x post-receive |
-
Hinzufügen des Beta-Repositorys auf dem lokalen Rechner
Wir sind nun bereit, das beta-Repository zu unserem lokalen Repository hinzuzufügen. Führen Sie im lokalen Projektverzeichnis den folgenden Git-Befehl aus:
|
1 |
sudo git remote add beta ssh://<username>@<remote_ip_address>/var/repo/beta.git |
Voila! Das lokale Repository ist nun mit dem Remote-Beta-Repository konfiguriert. Versuchen Sie, Änderungen zu übertragen:
|
1 2 3 |
sudo git add . sudo git commit -m "beta version" sudo git push beta master |
-
Wechsel von Beta zu Live im VPS
Nehmen wir an, alle Änderungen haben sich im beta Repository angesammelt. Wie übertragen Sie die Änderungen in das live Repository? Das ist ganz einfach. Innerhalb des beta Repositorys auf dem VPS fügen wir das lokale live Repository hinzu. Dann übertragen wir einfach das beta Release in das live Repository.
Verbinden Sie sich mit dem VPS und führen Sie die folgenden Befehle aus:
|
1 2 |
cd /var/repo/beta.git sudo git remote add live ../site.git |
Dann können Sie das beta-Release auf live:
|
1 |
sudo git push live master |
Fazit
Diese Anleitung zeigt erfolgreich, wie Sie einen VPS als Remote-Repository für Ihr Git-Projekt konfigurieren und verwenden. Der VPS kann automatisch die neuesten Codes und Dateien ohne komplexe Prozesse bereitstellen. Er kann auch als Zentrum für die Zusammenarbeit mehrerer Entwicklungsteams dienen.
Mit Hilfe von Git können Sie einen einfachen Mechanismus für die automatische Bereitstellung einrichten. Für ein ordnungsgemäßes Projektmanagement wird jedoch empfohlen, ein Tool wie GitLab zu verwenden. Die folgende Anleitung zeigt die Installation und Bereitstellung von GitLab auf einem VPS, der mehrere Projekte verwaltet. Sie können sich auch ansehen, wie Sie GitLab Continuous Integration (CI) Pipelines auf Ubuntu 20.04 einrichten.
Viel Spaß beim Programmieren!















Kommentare
Noch keine Kommentare. Schreiben Sie den ersten.