So installieren Sie den HTTP Git Server mit Nginx auf Ubuntu 18.04 LTS
Git ist ein kostenloses und quelloffenes Versionskontrollsystem, mit dem Änderungen am Code verfolgt werden können. Mit Git können Sie viele Repositories für dieselbe Anwendung erstellen und die Arbeit an diesen Dateien unter mehreren Personen koordinieren. Es wird hauptsächlich für das Quellcode-Management in der Softwareentwicklung eingesetzt.
In diesem Artikel erfahren wir, wie man einen HTTP Git Server mit Nginx auf Ubuntu 18.04 LTS (Bionic Beaver) installiert.
Anforderungen
- Neuer Ubuntu 18.04 Server auf Ihrem System installiert.
- Sudo-Benutzer mit Root-Rechten.
- Statische IP-Adresse 192.168.1.100 konfigurieren auf Ihrem Server
1 Erste Schritte
Vor dem Start müssen Sie Ihr System auf die neueste stabile Version aktualisieren.
Sie können dies tun, indem Sie den folgenden Befehl ausführen:
sudo apt-get update -y sudo apt-get upgrade -y
Sobald Ihr System aktualisiert ist, starten Sie Ihr System neu und melden Sie sich mit sudo user an.
2 Installation der erforderlichen Pakete
Zuerst müssen Sie einige erforderliche Pakete wie nginx, git, nano und fcgiwrap auf Ihrem System installieren. Du kannst sie alle installieren, indem du den folgenden Befehl ausführst:
sudo apt-get install nginx git nano fcgiwrap apache2-utils -y
Sobald alle erforderlichen Pakete installiert sind, müssen Sie ein Verzeichnis für das Git-Repository erstellen. Sie können dies tun, indem Sie den folgenden Befehl ausführen:
sudo mkdir /var/www/html/git
Als nächstes gibst du dem Git-Verzeichnis die richtige Berechtigung:
sudo chown -R www-data:www-data /var/www/html/git
Sobald Sie fertig sind, können Sie mit der Konfiguration des Nginx-Webservers fortfahren.
3 Nginx konfigurieren
Zuerst müssen Sie Nginx so konfigurieren, dass der Git-Verkehr an Git weitergeleitet wird. Sie können dies tun, indem Sie die Standardkonfigurationsdatei von Nginx bearbeiten:
sudo nano /etc/nginx/sites-available/default
Ändern Sie die Datei wie unten gezeigt:
# Default server configuration # server { listen 80 default_server; listen [::]:80 default_server; 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 _; 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; # Git pushes can be massive, just to make sure nginx doesn't suddenly cut the connection add this. auth_basic "Git Login"; # Whatever text will do. auth_basic_user_file "/var/www/html/git/htpasswd"; include /etc/nginx/fastcgi_params; # Include the default fastcgi configs fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend; # Tells fastcgi to pass the request to the git http backend executable fastcgi_param GIT_HTTP_EXPORT_ALL ""; fastcgi_param GIT_PROJECT_ROOT /var/www/html/git; # /var/www/git is the location of all of your git repositories. fastcgi_param REMOTE_USER $remote_user; fastcgi_param PATH_INFO $1; # Takes the capture group from our location directive and gives git that. fastcgi_pass unix:/var/run/fcgiwrap.socket; # Pass the request to fastcgi } }
Speichern und schließen Sie die Datei, wenn Sie fertig sind. Testen Sie dann Nginx auf einen Konfigurationsfehler mit dem folgenden Befehl:
sudo nginx -t
Wenn alles in Ordnung ist, sollten Sie die folgende Ausgabe sehen:
Als nächstes müssen Sie ein Benutzerkonto erstellen, mit dem Sie durchsuchen können, ob Sie auf das Repository zugreifen möchten. Sie können Benutzer mit dem Namen hitesh erstellen, indem Sie das Dienstprogramm htpasswd verwenden:
sudo htpasswd -c /var/www/html/git/htpasswd hitesh
Starten Sie schließlich Nginx neu, um alle Änderungen mit dem folgenden Befehl zu übernehmen:
sudo systemctl restart nginx
Sie können den Status des Nginx-Servers mit dem folgenden Befehl überprüfen:
sudo systemctl status nginx
Sie sollten die folgende Ausgabe sehen:
4 Git-Repository erstellen
Sobald alles richtig konfiguriert ist, ist es an der Zeit, ein Git-Repository zu erstellen.
Sie können ein Repository mit dem Namen hitesh.git mit dem folgenden Befehl erstellen:
cd /var/www/html/git sudo mkdir hitesh.git sudo cd hitesh.git sudo git --bare init sudo git update-server-info sudo chown -R www-data.www-data . sudo chmod -R 755 .
Als nächstes müssen Sie den HTTP-Dienst über die UFW-Firewall zulassen. Standardmäßig ist UFW auf Ihrem System deaktiviert, daher müssen Sie es zuerst aktivieren. Du kannst es mit dem folgenden Befehl aktivieren:
sudo ufw enable
Sobald die UFW-Firewall aktiviert ist, können Sie den HTTP- und SSH-Dienst zulassen, indem Sie den folgenden Befehl ausführen:
sudo ufw allow http sudo ufw allow ssh
SSH wird für GIT nicht benötigt, aber Sie sollten es aktivieren, um Ihren Server über SSH verwalten zu können.
Sie können nun den Status der UFW-Firewall überprüfen, indem Sie den folgenden Befehl ausführen:
sudo ufw status
Ok, das war’s für die serverseitige Konfiguration. Sie können nun auf die Clientseite wechseln, um Git zu testen.
5 Testgit auf dem Client-Computer
Vor dem Start müssen Sie git auf dem Client-System installieren. Du kannst es mit dem folgenden Befehl installieren:
sudo apt-get install git -y
Erstellen Sie zunächst ein lokales Repository mit dem folgenden Befehl:
sudo mkdir ~/testproject
Als nächstes ändern Sie das Verzeichnis auf’testproject‘ und starten das neue Remote-Repository mit dem folgenden Befehl:
cd ~/testproject git init git remote add origin http://hitesh@192.168.1.100/hitesh.git
Als nächstes erstellen Sie einige Dateien und Verzeichnisse mit dem folgenden Befehl:
mkdir test1 test2 test3 echo "This is my first repository" > test1/repo1 echo "This is my second repository" > test2/repo2 echo "This is my third repository" > test3/repo3
Führen Sie anschließend den folgenden Befehl aus, um alle Dateien und Verzeichnisse zum Repository hinzuzufügen:
git add . git commit -a -m "Add files and directoires"
Sie sollten die folgende Ausgabe sehen:
[master 002fac9] Add files and directoires 3 files changed, 3 insertions(+) create mode 100644 repo1 create mode 100644 repo2 create mode 100644 repo3
Als nächstes verschieben Sie alle Dateien und Verzeichnisse auf den Git-Server mit dem folgenden Befehl:
git push origin master
Sie sollten die folgende Ausgabe sehen:
Password for 'http://hitesh@192.168.1.100': Counting objects: 6, done. Delta compression using up to 4 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (5/5), 422 bytes | 0 bytes/s, done. Total 5 (delta 0), reused 0 (delta 0) To http://hitesh@192.168.1.100/hitesh.git 68f1270..002fac9 master -> master
Nun wurden alle Ihre Dateien und Verzeichnisse auf Ihren Git-Server übertragen.
Ihr Erstellungsprozess für das Git-Repository ist nun abgeschlossen. Sie können nun Ihr Repository in Zukunft ganz einfach klonen. Sie können Ihr Repository mit dem folgenden Befehl auf dem entfernten System klonen:
git clone hitesh@192.168.1.100:/var/www/html/git/hitesh.git
Sie sollten die folgende Ausgabe sehen:
Cloning into 'hitesh'... hitesh@192.168.1.100's password: remote: Counting objects: 8, done. remote: Compressing objects: 100% (3/3), done. Receiving objects: 100% (8/8), 598 bytes | 0 bytes/s, done. remote: Total 8 (delta 0), reused 0 (delta 0) Checking connectivity... done.
Ändern Sie nun das Verzeichnis in das geklonte Repository mit dem folgenden Befehl:
cd hitesh tree
Sie sollten die folgende Ausgabe sehen:
. |-- test1 | `-- repo1 |-- test2 | `-- repo2 `-- test3 `-- repo3 3 directories, 3 files
Als VM herunterladen
Dieses Tutorial ist als fertiges Virtual Machine Image im ovf/ova-Format verfügbar, das mit VMWare und Virtualbox kompatibel ist. Das Image der virtuellen Maschine verwendet die folgenden Anmeldedaten:
SSH / Shell Anmeldung
Benutzername:
Administrator-Passwort: howtoforge
Dieser Benutzer hat die Rechte sudo.
GIT-Anmeldung
Benutzername: hitesh
Passwort: howtoforge
Die IP der VM ist 192.168.1.100, sie kann in der Datei /etc/netplan/01-netcfg.yaml geändert werden. Bitte ändern Sie alle oben genannten Passwörter, um die virtuelle Maschine zu schützen.
Fazit
Ich hoffe, dass du jetzt einfach Push, Pull, Clone und Commit Quellcode mit dem Git-Server erstellen kannst. Zögere nicht, mich zu kommentieren, wenn du irgendwelche Zweifel hast.