Git 🌙
Chapters â–Ÿ 2nd Edition

4.2 Git sur le serveur - Installation de Git sur un serveur

Installation de Git sur un serveur

Nous allons Ă  prĂ©sent traiter de la configuration d’un service Git gĂ©rant ces protocoles sur votre propre serveur.

Note

Les commandes et Ă©tapes dĂ©crites ci-aprĂšs s’appliquent Ă  des installations simplifiĂ©es sur un serveur Ă  base de Linux, bien qu’il soit aussi possible de faire fonctionner ces services sur des serveurs macOS ou Windows. La mise en place effective d’un serveur en production au sein d’une infrastructure englobera vraisemblablement des diffĂ©rences dans les mesures de sĂ©curitĂ© et les outils systĂšme, mais ceci devrait permettre de se faire une idĂ©e gĂ©nĂ©rale des besoins.

Pour rĂ©aliser l’installation initiale d’un serveur Git, il faut exporter un dĂ©pĂŽt existant dans un nouveau dĂ©pĂŽt nu — un dĂ©pĂŽt qui ne contient pas de copie de rĂ©pertoire de travail. C’est gĂ©nĂ©ralement simple Ă  faire. Pour cloner votre dĂ©pĂŽt en crĂ©ant un nouveau dĂ©pĂŽt nu, lancez la commande clone avec l’option --bare. Par convention, les rĂ©pertoires de dĂ©pĂŽt nu finissent en .git, de cette maniĂšre :

$ git clone --bare mon_project mon_projet.git
Clonage dans le dépÎt nu 'mon_projet.git'...
fait.

Vous devriez maintenant avoir une copie des données de Git dans votre répertoire mon_project.git.

C’est grossiĂšrement Ă©quivalent à :

$ cp -Rf mon_projet/.git mon_projet.git

Il y a quelques lĂ©gĂšres diffĂ©rences dans le fichier de configuration mais pour l’utilisation envisagĂ©e, c’est trĂšs proche. La commande extrait le rĂ©pertoire Git sans rĂ©pertoire de travail et crĂ©e un rĂ©pertoire spĂ©cifique pour l’accueillir.

Copie du dépÎt nu sur un serveur

À prĂ©sent que vous avez une copie nue de votre dĂ©pĂŽt, il ne reste plus qu’à la placer sur un serveur et Ă  rĂ©gler les protocoles. Supposons que vous avez mis en place un serveur nommĂ© git.exemple.com auquel vous avez accĂšs par SSH et que vous souhaitez stocker vos dĂ©pĂŽts Git dans le rĂ©pertoire /srv/git. En supposant que /srv/git existe, vous pouvez mettre en place votre dĂ©pĂŽt en copiant le dĂ©pĂŽt nu :

$ scp -r mon_projet.git utilisateur@git.exemple.com:/srv/git

À partir de maintenant, tous les autres utilisateurs disposant d’un accĂšs SSH au serveur et ayant un accĂšs en lecture seule au rĂ©pertoire /srv/git peuvent cloner votre dĂ©pĂŽt en lançant la commande :

$ git clone utilisateur@git.exemple.com:/srv/git/mon_projet.git

Si un utilisateur se connecte via SSH au serveur et a accÚs en écriture au répertoire /srv/git/mon_projet.git, il aura automatiquement accÚs pour pousser.

Git ajoutera automatiquement les droits de groupe en Ă©criture Ă  un dĂ©pĂŽt si vous lancez la commande git init avec l’option --shared. Notez qu’en lançant cette commande, vous ne dĂ©truirez pas les commits, rĂ©fĂ©rences, etc. en cours de route.

$ ssh utilisateur@git.exemple.com
$ cd /srv/git/mon_projet.git
$ git init --bare --shared

Vous voyez comme il est simple de prendre un dĂ©pĂŽt Git, crĂ©er une version nue et la placer sur un serveur auquel vous et vos collaborateurs avez accĂšs en SSH. Vous voilĂ  prĂȘts Ă  collaborer sur le mĂȘme projet.

Il faut noter que c’est littĂ©ralement tout ce dont vous avez besoin pour dĂ©marrer un serveur Git utile auquel plusieurs personnes ont accĂšs : ajoutez simplement des comptes SSH sur un serveur, et collez un dĂ©pĂŽt nu quelque part oĂč tous les utilisateurs ont accĂšs en lecture et Ă©criture. Vous ĂȘtes prĂȘts Ă  travailler, vous n’avez besoin de rien d’autre.

Dans les chapitres Ă  venir, nous traiterons de mises en place plus sophistiquĂ©es. Ces sujets incluront l’élimination du besoin de crĂ©er un compte systĂšme pour chaque utilisateur, l’accĂšs public aux dĂ©pĂŽts, la mise en place d’interfaces utilisateur web, etc. NĂ©anmoins, gardez Ă  l’esprit que pour collaborer avec quelques personnes sur un projet privĂ©, tout ce qu’il faut, c’est un serveur SSH et un dĂ©pĂŽt nu.

Petites installations

Si vous travaillez dans un petit groupe ou si vous n’ĂȘtes qu’en phase d’essai de Git au sein de votre sociĂ©tĂ© avec peu de dĂ©veloppeurs, les choses peuvent rester simples. Un des aspects les plus compliquĂ©s de la mise en place d’un serveur Git est la gestion des utilisateurs. Si vous souhaitez que certains dĂ©pĂŽts ne soient accessibles Ă  certains utilisateurs qu’en lecture seule et en lecture/Ă©criture pour d’autres, la gestion des accĂšs et des permissions peut devenir difficile Ă  rĂ©gler.

AccĂšs SSH

Si vous disposez dĂ©jĂ  d’un serveur auquel tous vos dĂ©veloppeurs ont un accĂšs SSH, il est gĂ©nĂ©ralement plus facile d’y mettre en place votre premier dĂ©pĂŽt car vous n’aurez quasiment aucun rĂ©glage supplĂ©mentaire Ă  faire (comme nous l’avons expliquĂ© dans le chapitre prĂ©cĂ©dent). Si vous souhaitez des permissions d’accĂšs plus complexes, vous pouvez les mettre en place par le jeu des permissions standards sur le systĂšme de fichiers du systĂšme d’exploitation de votre serveur.

Si vous souhaitez placer vos dĂ©pĂŽts sur un serveur qui ne dispose pas dĂ©jĂ  de comptes pour chacun des membres de votre Ă©quipe qui aurait accĂšs en Ă©criture, alors vous devrez mettre en place un accĂšs SSH pour eux. En supposant que pour vos dĂ©pĂŽts, vous disposiez dĂ©jĂ  d’un serveur SSH installĂ© et auquel vous avez accĂšs.

Il y a quelques moyens de donner un accĂšs Ă  tout le monde dans l’équipe. Le premier est de crĂ©er des comptes pour tout le monde, ce qui est logique mais peut s’avĂ©rer lourd. Vous ne souhaiteriez sĂ»rement pas lancer adduser et entrer un mot de passe temporaire pour chaque utilisateur.

Une seconde mĂ©thode consiste Ă  crĂ©er un seul utilisateur Git sur la machine, demander Ă  chaque dĂ©veloppeur nĂ©cessitant un accĂšs en Ă©criture de vous envoyer une clĂ© publique SSH et d’ajouter la-dite clĂ© au fichier ~/.ssh/authorized_keys de votre utilisateur Git. À partir de lĂ , tout le monde sera capable d’accĂ©der Ă  la machine via l’utilisateur Git. Cela n’affecte en rien les donnĂ©es de commit — les informations de l’utilisateur SSH par lequel on se connecte n’affectent pas les donnĂ©es de commit enregistrĂ©es.

Une derniĂšre mĂ©thode consiste Ă  faire une authentification SSH auprĂšs d’un serveur LDAP ou tout autre systĂšme d’authentification centralisĂ© que vous utiliseriez dĂ©jĂ . Tant que chaque utilisateur peut accĂ©der Ă  un shell sur la machine, n’importe quel schĂ©ma d’authentification SSH devrait fonctionner.

scroll-to-top