Wie installiert man HTTP Git-Server mit Nginx unter Ubuntu 20.04

Git ist ein freies und quelloffenes Versionierungssystem, das von Linus Torvalds entwickelt wurde. Es wird von Millionen von Entwicklern auf der ganzen Welt verwendet. GitHub bietet auch einen kostenlosen Code-Hosting-Service an. Der kostenlose Service erlaubt jedoch kein privates Hosting des Codes. In diesem Fall können Sie Ihren eigenen Code-Hosting-Server mit GitHub HTTP-Server hosten. Dadurch erhalten Sie die volle Kontrolle über den Server.

In diesem Tutorial zeigen wir Ihnen, wie Sie den Git-HTTP-Server mit Nginx unter Ubuntu 20.04 installieren und konfigurieren.

Voraussetzungen

  • Ein Server, auf dem Ubuntu 20.04 läuft.
  • Gültiger Domain-Name, der auf Ihre Server-IP zeigt.
  • Der Server ist mit einem Root-Passwort konfiguriert.

Erste Schritte

Bevor Sie beginnen, wird empfohlen, Ihre Serverpakete auf die neueste Version zu aktualisieren. Sie können sie mit dem folgenden Befehl aktualisieren:

apt-get update -y

Sobald alle Pakete aktualisiert sind, können Sie mit dem nächsten Schritt fortfahren.

Nginx und Git installieren

Als nächstes müssen Sie den Nginx-Webserver, Git und andere erforderliche Pakete auf Ihrem System installieren. Sie können sie mit dem folgenden Befehl installieren:

apt-get install nginx git fcgiwrap apache2-utils unzip -y

Sobald alle Pakete installiert sind, können Sie mit dem nächsten Schritt fortfahren.

Erstellen Sie ein Git-Repository

Als nächstes müssen Sie ein Git-Repository innerhalb des Nginx-Web-Stammverzeichnisses erstellen. Erstellen Sie zunächst ein Verzeichnis namens git mit dem folgenden Befehl:

mkdir /var/www/html/git

Ändern Sie als Nächstes das Verzeichnis in git und erstellen Sie ein neues Verzeichnis für das Git-Repository:

cd /var/www/html/git
mkdir gituser.git

Wechseln Sie als Nächstes in dieses neue Verzeichnis und initialisieren Sie das Git-Repository mit dem folgenden Befehl:

git --bare init

Aktualisieren Sie als nächstes den Git-Server mit dem Befehl:

git update-server-info

Legen Sie als Nächstes die Eigentumsverhältnisse und Berechtigungen für das Git-Verzeichnis mit dem folgenden Befehl fest:

chown -R www-data:www-data /var/www/html/git
chmod -R 755 /var/www/html/git

Erstellen Sie als Nächstes einen neuen Git-Benutzer für die Authentifizierung mit dem folgenden Befehl;

htpasswd -c /var/www/html/git/htpasswd gituser

Sie werden aufgefordert, ein Passwort wie unten gezeigt festzulegen:

New password: 
Re-type new password: 
Adding password for user gituser

Nun können Sie Ihr Passwort mit dem folgenden Befehl überprüfen:

cat /var/www/html/git/htpasswd

Sie sollten die folgende Ausgabe erhalten:

gituser:$apr1$iPKZDbFB$ziRRbGXzVMMHaPYOtL05m/

Konfigurieren Sie Nginx für Git

Als nächstes müssen Sie Nginx so konfigurieren, dass es das Git-Repository bedient. Sie können eine neue Konfigurationsdatei für den virtuellen Host für Git mit dem folgenden Befehl erstellen:

nano /etc/nginx/conf.d/git.conf

Fügen Sie die folgenden Zeilen hinzu:

server {
        listen 80;

        root /var/www/html/git;

        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html;

        server_name git.example.com;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

location ~ (/.*) {
    client_max_body_size 0; 
    auth_basic "Git Login"; 
    auth_basic_user_file "/var/www/html/git/htpasswd";
    include /etc/nginx/fastcgi_params; 
    fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend; 
    fastcgi_param GIT_HTTP_EXPORT_ALL "";
    fastcgi_param GIT_PROJECT_ROOT /var/www/html/git;
    fastcgi_param REMOTE_USER $remote_user;
    fastcgi_param PATH_INFO $1; 
    fastcgi_pass  unix:/var/run/fcgiwrap.socket;
}

}

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Überprüfen Sie dann Nginx mit dem folgenden Befehl auf etwaige Syntaxfehler:

nginx -t

Sie sollten die folgende Ausgabe erhalten:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Starten Sie anschließend den Nginx-Dienst neu, um die Änderungen zu übernehmen:

systemctl restart nginx

Sie können den Status des Nginx-Dienstes auch mit dem folgenden Befehl überprüfen:

systemctl status nginx

Sie sollten die folgende Ausgabe erhalten:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2020-11-17 07:43:46 UTC; 4s ago
       Docs: man:nginx(8)
    Process: 3240 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 3256 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 3257 (nginx)
      Tasks: 3 (limit: 4691)
     Memory: 3.5M
     CGroup: /system.slice/nginx.service
             ??3257 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??3258 nginx: worker process
             ??3259 nginx: worker process

Nov 17 07:43:46 ubuntu2004 systemd[1]: Starting A high performance web server and a reverse proxy server...
Nov 17 07:43:46 ubuntu2004 systemd[1]: Started A high performance web server and a reverse proxy server.

Wenn Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.

HTTP-Git-Server testen

An diesem Punkt wird der Git-Server installiert und konfiguriert. Jetzt ist es an der Zeit, ihn zu testen.

Installieren Sie auf dem Client-Computer das Git-Paket mit dem folgenden Befehl:

apt-get install git -y

Sobald es installiert ist, erstellen Sie ein Verzeichnis namens myapp mit folgendem Befehl:

mkdir myapp

Wechseln Sie dann in das neue Verzeichnis und initialisieren Sie Git mit folgendem Befehl:

cd myapp
git init

Als nächstes fügen Sie Ihr Remote-Git-Repository mit folgendem Befehl hinzu:

git remote add origin http://[email protected]/gituser.git

Als nächstes erstellen Sie die Verzeichnisse app1 und app2 und erstellen auch app1- und app2-Dateien mit einigen Inhalten innerhalb dieser Verzeichnisse:

mkdir app1 app2
echo "This is my first application" > app1/app1
echo "This is my first application" > app2/app2

Als nächstes fügen Sie alle Verzeichnisse und Dateien zum Repository mit dem folgenden Befehl hinzu:

git add .

Übertragen Sie dann die Änderungen mit dem folgenden Befehl:

git commit -a -m "Add files and directories"

Sie sollten die folgende Ausgabe erhalten:

[master (root-commit) 4e90372] Add files and directories
 2 files changed, 2 insertions(+)
 create mode 100644 app1/app1
 create mode 100644 app2/app2

Als nächstes schieben Sie diese Änderungen mit dem folgenden Befehl auf den entfernten Git-Server:

git push origin master

Sie werden aufgefordert, ein Passwort für den entfernten Git-Benutzer einzugeben, wie unten gezeigt:

Password for 'http://[email protected]': 

Geben Sie Ihr Passwort ein und drücken Sie Enter. Sie sollten die folgende Ausgabe erhalten:

Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (5/5), 354 bytes | 0 bytes/s, done.
Total 5 (delta 0), reused 0 (delta 0)
To http://[email protected]/gituser.git
 * [new branch]      master -> master

Die obige Ausgabe zeigt an, dass Ihre Dateien und Verzeichnisse zum entfernten Git-Repository hinzugefügt wurden. Wenn Sie dieses Repository auf Ihr lokales System klonen möchten, führen Sie den folgenden Befehl aus: Geben Sie Ihr Passwort ein und drücken Sie Enter:

git clone http://[email protected]/gituser.git

Sie sollten die folgende Ausgabe erhalten:

Cloning into 'gituser'...
Password for 'http://[email protected]': 
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 5 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (5/5), done.
Checking connectivity... done.

Schlussfolgerung

Herzlichen Glückwunsch! Sie haben den Git-HTTP-Server auf dem Ubuntu-20.04-Server erfolgreich installiert und eingerichtet. Sie können nun den Git-Server in Ihrer Entwicklungsumgebung implementieren, die von Ihrem LAN aus zugänglich ist.

Das könnte dich auch interessieren …