Git est un système de contrôle de version gratuit et open-source qui peut être utilisé pour suivre les modifications de code. Git vous permet de créer de nombreux référentiels pour la même application et de coordonner le travail sur ces fichiers entre plusieurs personnes. Il est principalement utilisé pour la gestion du code source dans le développement de logiciels.
Dans cet article, nous allons apprendre à installer un serveur HTTP Git avec Nginx sur Ubuntu 18.04 LTS (Bionic Beaver).
Exigences
- Nouveau serveur Ubuntu 18.04 installé sur votre système.
- Utilisateur Sudo avec privilèges root.
- Une adresse IP statique est configurée sur votre serveur, j'utilise l'IP 192.168.1.100 dans ce tutoriel.
1 Mise en route
Avant de commencer, vous devrez mettre à jour votre système avec la dernière version stable.
Vous pouvez le faire en exécutant la commande suivante :
sudo apt-get update -y
sudo apt-get upgrade -y
Une fois votre système mis à jour, redémarrez votre système et connectez-vous avec l'utilisateur sudo.
2 Installer les packages requis
Tout d'abord, vous devrez installer certains packages requis, notamment nginx, git, nano et fcgiwrap sur votre système. Vous pouvez tous les installer en exécutant la commande suivante :
sudo apt-get install nginx git nano fcgiwrap apache2-utils -y
Une fois tous les packages requis installés, vous devrez créer un répertoire pour le référentiel Git. Vous pouvez le faire en exécutant la commande suivante :
sudo mkdir /var/www/html/git
Ensuite, donnez l'autorisation appropriée au répertoire Git :
sudo chown -R www-data:www-data /var/www/html/git
Une fois que vous avez terminé, vous pouvez procéder à la configuration du serveur Web Nginx.
3 Configurer Nginx
Tout d'abord, vous devrez configurer Nginx pour transmettre le trafic Git à Git. Vous pouvez le faire en modifiant le fichier de configuration par défaut de Nginx :
sudo nano /etc/nginx/sites-available/default
Modifiez le fichier comme indiqué ci-dessous :
# 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 } }
Enregistrez et fermez le fichier lorsque vous avez terminé. Testez ensuite Nginx pour toute erreur de configuration avec la commande suivante :
sudo nginx -t
Si tout va bien, vous devriez voir le résultat suivant :
Ensuite, vous devrez créer un compte utilisateur dont vous aurez besoin pour parcourir ou valider le référentiel. Vous pouvez créer un utilisateur avec le nom hitesh en utilisant l'utilitaire htpasswd :
sudo htpasswd -c /var/www/html/git/htpasswd hitesh
Enfin, redémarrez Nginx pour appliquer toutes les modifications avec la commande suivante :
sudo systemctl restart nginx
Vous pouvez vérifier l'état du serveur Nginx avec la commande suivante :
sudo systemctl status nginx
Vous devriez voir le résultat suivant :
4 Créer un référentiel Git
Une fois que tout est correctement configuré, il est temps de créer le référentiel Git.
Vous pouvez créer un référentiel avec le nom hitesh.git avec la commande suivante :
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 755 .
Ensuite, vous devrez autoriser le service HTTP via le pare-feu UFW. Par défaut, UFW est désactivé sur votre système, vous devez donc d'abord l'activer. Vous pouvez l'activer avec la commande suivante :
sudo ufw enable
Une fois le pare-feu UFW activé, vous pouvez autoriser les services HTTP et SSH en exécutant la commande suivante :
sudo ufw allow http
sudo ufw allow ssh
SSH n'est pas nécessaire pour GIT, mais vous devez l'activer pour pouvoir gérer votre serveur via SSH.
Vous pouvez maintenant vérifier l'état du pare-feu UFW en exécutant la commande suivante :
sudo ufw status
Ok c'est tout pour la configuration côté serveur. Vous pouvez maintenant passer côté client pour tester Git.
5 Tester Git sur la machine cliente
Avant de commencer, vous devrez installer git sur le système client. Vous pouvez l'installer avec la commande suivante :
sudo apt-get install git -y
Commencez par créer un dépôt local avec la commande suivante :
sudo mkdir ~/testproject
Ensuite, changez le répertoire en 'testproject' et lancez le nouveau référentiel distant avec la commande suivante :
cd ~/testproject
git init
git remote add origin http://[email protected]/hitesh.git
Ensuite, créez des fichiers et un répertoire avec la commande suivante :
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
Ensuite, exécutez la commande suivante pour ajouter tous les fichiers et répertoires au référentiel :
git add .
git commit -a -m "Add files and directories"
Vous devriez voir le résultat suivant :
[master 002fac9] Add files and directories 3 files changed, 3 insertions(+) create mode 100644 repo1 create mode 100644 repo2 create mode 100644 repo3
Ensuite, poussez tous les fichiers et répertoires vers le serveur Git avec la commande suivante :
git push origin master
Vous devriez voir le résultat suivant :
Password for 'http://[email protected]': 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://[email protected]/hitesh.git 68f1270..002fac9 master -> master
Maintenant, tous vos fichiers et répertoires ont été validés sur votre serveur Git.
Votre processus de création de référentiel Git est maintenant terminé. Vous pouvez désormais cloner facilement votre référentiel à l'avenir. Vous pouvez cloner votre référentiel à l'aide de la commande suivante sur le système distant :
git clone [email protected]:/var/www/html/git/hitesh.git
Vous devriez voir le résultat suivant :
Cloning into 'hitesh'... [email protected]'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.
Maintenant, changez le répertoire vers le dépôt cloné avec la commande suivante :
cd hitesh
tree
Vous devriez voir le résultat suivant :
. |-- test1 | `-- repo1 |-- test2 | `-- repo2 `-- test3 `-- repo3 3 directories, 3 files
Télécharger en tant que machine virtuelle
Ce didacticiel est disponible sous forme d'image de machine virtuelle prête à l'emploi au format ovf/ova compatible avec VMWare et Virtualbox. L'image de la machine virtuelle utilise les informations de connexion suivantes :
Connexion SSH/shell
Nom d'utilisateur :administrateur
Mot de passe :howtoforge
Cet utilisateur a les droits sudo.
Connexion GIT
Nom d'utilisateur : hitesh
Mot de passe :howtoforge
L'IP de la VM est 192.168.1.100, elle peut être modifiée dans le fichier /etc/netplan/01-netcfg.yaml. Veuillez modifier tous les mots de passe ci-dessus pour sécuriser la machine virtuelle.
Conclusion
J'espère que vous pourrez désormais facilement pousser, extraire, cloner et valider le code source à l'aide du serveur Git. N'hésitez pas à me commenter si vous avez un doute.
Liens
- Ubuntu
- Git