Git est un système de contrôle de version (VCS) qui permet le suivi des changements de code. Dans ce didacticiel, nous allons parcourir l'installation d'un serveur HTTP (S) Git et l'ajout de l'authentification par nom d'utilisateur / mot de passe.
Conditions préalables
- Debian 8 (Jessie).
- Sudo .
- Editeur de texte de votre choix (
nano, vim).
Installation des logiciels nécessaires
Nous aurons besoin nginx, git, fcgiwrapet apache httpd utils. Allez-y et tapez dans le terminal.
sudo apt-get install nginx git fcgiwrap apache2-utils
dpkg échouera à installer Nginx si un autre processus (comme Apache) est déjà lié au port 80.
Création du répertoire Git
En supposant que vous souhaitiez créer le répertoire git à /var/www/git, vous devrez exécuter les commandes suivantes:
mkdir /var/www/git
chown www-data:www-data /var/www/git # Make sure www-data (the user fastcgi runs) from has permissions.
Configuration de Nginx
Maintenant, nous devons configurer Nginx pour transmettre le trafic Git à Git. Cela peut être ajouté à la configuration par défaut, un personnalisé server {}à /etc/nginx/conf.dou /etc/nginx/sites-enabled.
Les paramètres et la directive du fichier de configuration doivent être ajoutés dans l'ordre dans lequel ils sont répertoriés ci-dessous.
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
}
Si vous souhaitez avoir vos dépôts git dans un sous-répertoire ie. http://your-domain.com/reposfaire la première ligne location ~ /repos(/.*) {, c'est une expression régulière.
Assurez-vous que la server_namedirective dans votre server {}ne se heurte à rien d'autre, sinon Nginx ne transmettra pas la demande.
Ajout de l'authentification par mot de passe
Nginx accepte les htpasswdfichiers Apache , pour les créer, nous devrons exécuter la commande suivante:
htpasswd -c /var/www/git/htpasswd <your username>
Vous serez invité à saisir votre mot de passe. Pour ajouter plus d'utilisateurs, procédez comme suit:
htpasswd /var/www/git/htpasswd <another username>
Une dernière étape
Assurez-vous de recharger Nginx pour appliquer toutes les modifications en exécutant:
sudo service nginx reload
Vous avez maintenant un serveur Git privé! Prendre plaisir.
(Facultatif) Créez un script qui initialise les référentiels Git
Veuillez noter que www-data(le compte utilisateur sous lequel FastCGI s'exécute) doit avoir un accès en lecture et en écriture au référentiel Git, la création d'un script évite désormais les maux de tête plus tard.
Ouvrez votre fichier script ie. /var/www/git/gitinit.shet collez ce qui suit:
#!/bin/sh
sudo -u www-data mkdir $1
cd $1
sudo -u www-data git init --bare
Vous pouvez exécuter le script comme ceci:
cd /var/www/git
./gitinit.sh repo-name
N'oubliez pas d'autoriser l'exécution en exécutant:
chmod +x /var/www/git/gitinit.sh