Git ist ein Versionskontrollsystem (VCS), mit dem Änderungen im Code verfolgt werden können. In diesem Tutorial werden wir einen HTTP (S) Git-Server installieren und die Authentifizierung mit Benutzername / Passwort hinzufügen.
Voraussetzungen
- Debian 8 (Jessie).
- Sudo .
- Texteditor Ihrer Wahl (
nano, vim).
Benötigte Software installieren
Wir müssen nginx, git, fcgiwrapund Apache utils. Gehen Sie voran und tippen Sie in das Terminal.
sudo apt-get install nginx git fcgiwrap apache2-utils
dpkg Nginx kann nicht installiert werden, wenn bereits ein anderer Prozess (z. B. Apache) an Port 80 gebunden ist.
Git-Verzeichnis erstellen
Angenommen, Sie möchten das Git-Verzeichnis unter erstellen /var/www/git, müssen Sie die folgenden Befehle ausführen:
mkdir /var/www/git
chown www-data:www-data /var/www/git # Make sure www-data (the user fastcgi runs) from has permissions.
Nginx konfigurieren
Jetzt müssen wir Nginx so konfigurieren, dass Git-Verkehr an Git weitergeleitet wird. Dies kann zur Standardkonfiguration hinzugefügt werden, eine benutzerdefinierte server {}bei /etc/nginx/conf.doder /etc/nginx/sites-enabled.
Die Parameter und Anweisungen der Konfigurationsdatei müssen in der Reihenfolge hinzugefügt werden, in der sie unten aufgeführt sind.
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/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/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
}
Wenn Sie Ihre Git-Repositorys in einem Unterverzeichnis haben möchten, z. http://your-domain.com/reposMachen Sie die erste Zeile location ~ /repos(/.*) {, es ist eine Regex.
Stellen Sie sicher, dass die server_nameDirektive in Ihrer server {}nicht mit irgendetwas anderem kollidiert, sonst gibt Nginx die Anfrage nicht weiter.
Hinzufügen der Kennwortauthentifizierung
Nginx akzeptiert Apache- htpasswdDateien. Um sie zu erstellen, müssen Sie den folgenden Befehl ausführen:
htpasswd -c /var/www/git/htpasswd <your username>
Sie werden aufgefordert, Ihr Passwort einzugeben. Gehen Sie wie folgt vor, um weitere Benutzer hinzuzufügen:
htpasswd /var/www/git/htpasswd <another username>
Ein letzter Schritt
Stellen Sie sicher, dass Sie Nginx neu laden, um alle Änderungen zu übernehmen, indem Sie Folgendes ausführen:
sudo service nginx reload
Sie haben jetzt einen privaten Git-Server! Genießen.
(Optional) Erstellen Sie ein Skript, das Git-Repositorys initialisiert
Bitte beachten Sie, dass www-data(das Benutzerkonto, unter dem FastCGI ausgeführt wird) Lese- und Schreibzugriff auf das Git-Repository haben muss. Das Erstellen eines Skripts erspart später Kopfschmerzen.
Öffnen Sie Ihre Skriptdatei dh. /var/www/git/gitinit.shund fügen Sie Folgendes ein:
#!/bin/sh
sudo -u www-data mkdir $1
cd $1
sudo -u www-data git init --bare
Sie können das Skript folgendermaßen ausführen:
cd /var/www/git
./gitinit.sh repo-name
Denken Sie daran, die Ausführung durch Ausführen zuzulassen:
chmod +x /var/www/git/gitinit.sh