Articles

Comment exécuter votre propre serveur Git

Gérez votre code sur votre propre serveur en exécutant un serveur Git nu et basique ou via l'outil GUI GitLab.

Apprenez à configurer votre propre serveur Git dans ce tutoriel issu de nos archives.

Git est un système de gestion des versions développé par Linus Torvalds, qui est utilisé par des millions d’utilisateurs dans le monde entier. Des entreprises comme GitHub proposent des services d’hébergement de code basés sur Git. Selon certains rapports, GitHub, un site d’hébergement de code, est le plus grand service d’hébergement de code au monde. L’entreprise affirme que 9,2 millions de personnes collaborent actuellement sur 21,8 millions de dépôts sur GitHub. Les grandes entreprises passent désormais à GitHub. Même Google, le géant des moteurs de recherche, ferme son propre Google Code et passe à GitHub.

Gérez votre propre serveur Git

GitHub est un excellent service, cependant il y a quelques limitations et restrictions, surtout si vous êtes un individu ou un petit acteur. L’une des limites de GitHub est que le service gratuit ne permet pas l’hébergement privé du code. Vous devez payer des frais mensuels de 7 $ pour héberger 5 dépôts privés, et les dépenses augmentent avec plus de dépôts.

Dans des cas comme ceux-ci ou lorsque vous voulez plus de contrôle, la meilleure voie est d’exécuter Git sur votre propre serveur. Non seulement vous économisez des coûts, mais vous avez également plus de contrôle sur votre serveur. Dans la plupart des cas, une majorité d’utilisateurs Linux avancés ont déjà leurs propres serveurs et pousser Git sur ces serveurs est comme ‘gratuit comme dans la bière’.

Dans ce tutoriel, nous allons parler de deux méthodes pour gérer votre code sur votre propre serveur. L’une consiste à exécuter un serveur Git nu et basique et et la seconde est via un outil GUI appelé GitLab. Pour ce tutoriel, j’ai utilisé un serveur Ubuntu 14.04 LTS entièrement patché fonctionnant sur un VPS.

Installer Git sur votre serveur

Dans ce tutoriel, nous considérons un cas d’utilisation où nous avons un serveur distant et un serveur local et nous allons travailler entre ces machines. Par souci de simplicité, nous les appellerons serveur distant et serveur local.

D’abord, installez Git sur les deux machines. Vous pouvez installer Git à partir des paquets déjà disponibles via les repos ou vos distros, ou vous pouvez le faire manuellement. Dans cet article, nous utiliserons la méthode la plus simple :

sudo apt-get install git-core

Puis ajoutez un utilisateur pour Git.

sudo useradd gitpasswd git

Afin de faciliter l’accès au serveur, configurons un login ssh sans mot de passe. Tout d’abord, créez des clés ssh sur votre machine locale:

ssh-keygen -t rsa

Il vous sera demandé de fournir l’emplacement pour stocker la clé, appuyez simplement sur Entrée pour utiliser l’emplacement par défaut. La deuxième question sera de lui fournir une phrase de passe qui sera nécessaire pour accéder au serveur distant. Il génère deux clés – une clé publique et une clé privée. Notez l’emplacement de la clé publique dont vous aurez besoin à l’étape suivante.

Maintenant, vous devez copier ces clés sur le serveur pour que les deux machines puissent se parler. Exécutez la commande suivante sur votre machine locale :

cat ~/.ssh/id_rsa.pub | ssh git@remote-server "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Maintenant, ssh dans le serveur et créez un répertoire de projet pour Git. Vous pouvez utiliser le chemin souhaité pour le repo.

git@server:~ $ mkdir -p /home/swapnil/project-1.git

Puis passez à ce répertoire:

cd /home/swapnil/project-1.git

Puis créez un repo vide:

git init --bareInitialized empty Git repository in /home/swapnil/project-1.git

Nous devons maintenant créer un repo Git sur la machine locale.

mkdir -p /home/swapnil/git/project

Et passez dans ce répertoire :

cd /home/swapnil/git/project

Créez maintenant les fichiers dont vous avez besoin pour le projet dans ce répertoire. Restez dans ce répertoire et lancez git:

git init Initialized empty Git repository in /home/swapnil/git/project

Maintenant, ajoutez des fichiers au repo:

git add .

Maintenant, chaque fois que vous ajoutez un fichier ou que vous faites des modifications, vous devez exécuter la commande add ci-dessus. Vous devez également écrire un message commit avec chaque modification d’un fichier. Le message commit indique essentiellement quelles modifications ont été apportées.

git commit -m "message" -a message 2 files changed, 2 insertions(+) create mode 100644 GoT.txt create mode 100644 writing.txt

Dans ce cas, j’avais un fichier appelé GoT (Game of Thrones review) et j’ai apporté quelques modifications, donc lorsque j’ai exécuté la commande, elle a spécifié que des modifications ont été apportées au fichier. Dans la commande ci-dessus, l’option ‘-a’ signifie des commits pour tous les fichiers du repo. Si vous avez apporté des modifications à un seul, vous pouvez spécifier le nom de ce fichier au lieu d’utiliser ‘-a’.

Un exemple:

git commit -m "message" GoT.txt message 1 file changed, 1 insertion(+)

Jusqu’à présent, nous avons travaillé sur le serveur local. Maintenant, nous devons pousser ces changements sur le serveur afin que le travail soit accessible sur Internet et que vous puissiez collaborer avec les autres membres de l’équipe.

git remote add origin ssh://git@remote-server/repo-<wbr< a="">>path-on-server..git

Maintenant vous pouvez pousser ou tirer les changements entre le serveur et la machine locale en utilisant l’option ‘push’ ou ‘pull’ :

git push origin master

Si d’autres membres de l’équipe veulent travailler avec le projet, ils doivent cloner le repo du serveur sur leur machine locale :

git clone git@remote-server:/home/swapnil/project.git

Ici /home/swapnil/projet.git est le chemin du projet sur le serveur distant, échangez les valeurs pour votre propre serveur.

Puis changez de répertoire sur la machine locale (échangez projet avec le nom du projet sur votre serveur):

cd /project

Maintenant ils peuvent éditer des fichiers, écrire des messages de changement de commit et ensuite les pousser vers le serveur :

git commit -m 'corrections in GoT.txt story' -aAnd then push changes:
git push origin master

Je suppose que cela est suffisant pour qu’un nouvel utilisateur puisse démarrer avec Git sur ses propres serveurs. Si vous recherchez des outils graphiques pour gérer les modifications sur les machines locales, vous pouvez utiliser des outils graphiques tels que QGit ou GitK pour Linux.

QGit

Utilisation de GitLab

Ceci était une solution en ligne de commande pure pour le propriétaire et le collaborateur du projet. Ce n’est certainement pas aussi facile que d’utiliser GitHub. Malheureusement, si GitHub est le plus grand service d’hébergement de code au monde, son propre logiciel n’est pas disponible pour les autres. Il n’est pas open source et vous ne pouvez donc pas récupérer le code source et compiler votre propre GitHub. Contrairement à WordPress ou Drupal, vous ne pouvez pas télécharger GitHub et l’exécuter sur vos propres serveurs.

Comme d’habitude dans le monde de l’open source, il n’y a pas de fin aux options. GitLab est un projet astucieux qui fait exactement cela. C’est un projet open source qui permet aux utilisateurs d’exécuter un système de gestion de projet similaire à GitHub sur leurs propres serveurs.

Vous pouvez utiliser GitLab pour exécuter un service similaire à GitHub pour les membres de votre équipe ou votre entreprise. Vous pouvez utiliser GitLab pour travailler sur des projets privés avant de les libérer pour des contributions publiques.

GitLab emploie le modèle commercial Open Source traditionnel. Ils ont deux produits : un logiciel open source gratuit, que les utilisateurs peuvent installer sur leurs propres serveurs, et un service hébergé similaire à GitHub.

La version téléchargeable a deux éditions – l’édition communautaire gratuite et l’édition entreprise payante. L’édition entreprise est basée sur l’édition communautaire, mais est livrée avec des fonctionnalités supplémentaires destinées aux entreprises. Elle est plus ou moins similaire à ce que proposent WordPress.org ou WordPress.com.

L’édition communautaire est très évolutive et peut prendre en charge 25 000 utilisateurs sur un seul serveur ou cluster. Parmi les fonctionnalités de GitLab, citons : La gestion des dépôts Git, les revues de code, le suivi des problèmes, les flux d’activité et les wikis. Il est livré avec GitLab CI pour l’intégration et la livraison continues.

De nombreux fournisseurs de VPS tels que Digital Ocean proposent des droplets GitLab aux utilisateurs. Si vous souhaitez l’exécuter sur votre propre serveur, vous pouvez l’installer manuellement. GitLab propose un paquet Omnibus pour différents systèmes d’exploitation. Avant d’installer GitLab, vous voudrez peut-être configurer un serveur de messagerie SMTP afin que GitLab puisse envoyer des courriels au fur et à mesure des besoins. Ils recommandent Postfix. Donc, installez Postfix sur votre serveur :

sudo apt-get install postfix

Pendant l’installation de Postfix, il vous posera quelques questions ; ne les sautez pas. Si vous l’avez manqué, vous pouvez toujours le reconfigurer en utilisant cette commande:

sudo dpkg-reconfigure postfix

Lorsque vous exécutez cette commande, choisissez « Site Internet » et fournissez l’identifiant de messagerie du domaine qui sera utilisé par Gitlab.

Dans mon cas, je l’ai fourni avec:

This e-mail address is being protected from spambots. You need JavaScript enabled to view it 

Utiliser l’onglet et créer un nom d’utilisateur pour postfix. La page suivante vous demandera de fournir une destination pour le courrier.

Dans le reste des étapes, utilisez les options par défaut. Une fois Postfix installé et configuré, passons à l’installation de GitLab.

Téléchargez les paquets à l’aide de wget (remplacez le lien de téléchargement par les derniers paquets d’ici) :

wget https://downloads-packages.s3.amazonaws.com/ubuntu-14.04/gitlab_7.9.4-omnibus.1-1_amd64.deb

Puis installez le paquet :

sudo dpkg -i gitlab_7.9.4-omnibus.1-1_amd64.deb

Maintenant il est temps de configurer et de démarrer GitLabs.

sudo gitlab-ctl reconfigure

Vous devez maintenant configurer le nom de domaine dans le fichier de configuration afin de pouvoir accéder à GitLab. Ouvrez le fichier.

nano /etc/gitlab/gitlab.rb

Dans ce fichier, éditez le ‘external_url’ et donnez le domaine du serveur. Enregistrez le fichier puis ouvrez le site GitLab nouvellement créé à partir d’un navigateur Web.

GitLab 1

Par défaut, il crée ‘root’ comme administrateur système et utilise ‘5iveL!fe’ comme mot de passe. Connectez-vous au site GitLab puis modifiez le mot de passe.

GitLab 2

Une fois le mot de passe modifié, connectez-vous au site et commencez à gérer votre projet.

GitLab manage project page

GitLab déborde de fonctionnalités et d’options. Je vais emprunter des lignes populaires du film, The Matrix :  » Malheureusement, on ne peut dire à personne tout ce que GitLab peut faire. Vous devez l’essayer par vous-même. « 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *