So installieren Sie den HTTP Git Server mit Nginx auf Ubuntu 16.04

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 werden wir lernen, wie man einen HTTP Git Server mit Nginx auf Ubuntu 16.04 installiert.

Anforderungen

  • Neuer Ubuntu 16.04 Server auf Ihrem System installiert.
  • Sudo-Benutzer mit Root-Rechten.
  • Statische IP-Adresse 192.168.15.189 auf Ihrem Server konfigurieren

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:

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

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:

?? 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 2017-06-20 23:00:11 IST; 51min ago
  Process: 12415 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status=0/SUCCESS)
  Process: 7616 ExecReload=/usr/sbin/nginx -g daemon on; master_process on; -s reload (code=exited, status=0/SUCCESS)
  Process: 12423 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
  Process: 12419 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
 Main PID: 12427 (nginx)
   CGroup: /system.slice/nginx.service
           ??????12427 nginx: master process /usr/sbin/nginx -g daemon on; master_process on
           ??????12431 nginx: worker process                           

Jun 20 23:00:11 localhost systemd[1]: Stopped A high performance web server and a reverse proxy server.
Jun 20 23:00:11 localhost systemd[1]: Starting A high performance web server and a reverse proxy server...
Jun 20 23:00:11 localhost systemd[1]: nginx.service: Failed to read PID from file /run/nginx.pid: Invalid argument
Jun 20 23:00:11 localhost systemd[1]: Started A high performance web server and a reverse proxy server.

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 repo.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 777 .

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-Dienst zulassen, indem Sie den folgenden Befehl ausführen:

sudo ufw allow http

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 in testproject und starten das neue Remote-Repository mit dem folgenden Befehl:

cd ~/testproject
git init
git remote add origin http://hitesh@192.168.15.189/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.15.189': 
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.15.189/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.15.189:/var/www/html/git/hitesh.git

Sie sollten die folgende Ausgabe sehen:

Cloning into 'hitesh'...
hitesh@192.168.15.189'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

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.

Das könnte Dich auch interessieren …