GNU/Linux >> Tutoriels Linux >  >> Debian

Comment installer le serveur HTTP Git avec Nginx sur Debian 11

Git est un système de contrôle de version open source utilisé par des milliers de développeurs à travers le monde. Il est utilisé pour garder une trace de vos modifications logicielles au niveau de la source. Il vous permet de suivre les modifications, de revenir aux étapes précédentes et de créer une version alternative des fichiers et des répertoires.

HTTP Git Server est un projet open source qui utilise un serveur Web Nginx pour servir les référentiels Git sur votre réseau local (LAN). Il est très simple et facile à mettre en place. N'importe qui peut le gérer à partir de l'interface de ligne de commande.

Dans ce tutoriel, je vais vous expliquer comment configurer un serveur de référentiel HTTP Git avec Nginx sur Debian 11.

Prérequis

  • Un serveur exécutant Debian 11.
  • Un nom de domaine valide pointé vers l'adresse IP de votre serveur.
  • Un mot de passe root est configuré sur votre serveur.

Installer Nginx et autres dépendances

Tout d'abord, vous devrez installer le serveur Web Nginx et les autres packages requis pour configurer un serveur HTTP Git. Vous pouvez tous les installer à l'aide de la commande suivante :

apt-get install nginx git fcgiwrap apache2-utils unzip -y

Une fois tous les packages installés, vous pouvez passer à l'étape suivante.

Créer un référentiel Git

Ensuite, vous devrez créer un répertoire pour stocker le référentiel Git. Créons un répertoire appelé myrepo dans le répertoire racine Web de Nginx :

mkdir /var/www/html/myrepo

Ensuite, changez le répertoire en myrepo et créez un autre répertoire pour les utilisateurs :

cd /var/www/html/myrepo
mkdir user1.git

Ensuite, accédez au répertoire de l'utilisateur et initialisez le référentiel Git à l'aide de la commande suivante :

cd user1.git
git --bare init

Vous obtiendrez le résultat suivant :

Initialized empty Git repository in /var/www/html/myrepo/user1.git/

Ensuite, mettez à jour les informations du serveur Git avec la commande suivante :

git update-server-info

Ensuite, changez le propriétaire de myrepo et définissez l'autorisation appropriée avec la commande suivante :

chown -R www-data:www-data /var/www/html/myrepo
chmod -R 755 /var/www/html/myrepo

Ensuite, créez un utilisateur appelé user1 et définissez un mot de passe :

htpasswd -c /var/www/html/myrepo/htpasswd user1

Vous pouvez définir le mot de passe comme indiqué ci-dessous :

New password: 
Re-type new password: 
Adding password for user user1

Vous pouvez vérifier votre mot de passe à l'aide de la commande suivante :

cat /var/www/html/myrepo/htpasswd

Exemple de sortie :

user1:$apr1$LoyCEkzA$Fjq5nBbLhBRdaxCQBBUQd1

Configurer Nginx pour servir le référentiel Git

Ensuite, vous devrez créer un fichier de configuration d'hôte virtuel Nginx pour servir le référentiel Git.

nano /etc/nginx/conf.d/git.conf

Ajoutez les lignes suivantes :

server {
        listen 80;

        root /var/www/html/myrepo;

        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html;

        server_name git.yourdomain.com;

        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; 
    auth_basic "Git Login"; 
    auth_basic_user_file "/var/www/html/myrepo/htpasswd";
    include /etc/nginx/fastcgi_params; 
    fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend; 
    fastcgi_param GIT_HTTP_EXPORT_ALL "";
    fastcgi_param GIT_PROJECT_ROOT /var/www/html/myrepo;
    fastcgi_param REMOTE_USER $remote_user;
    fastcgi_param PATH_INFO $1; 
    fastcgi_pass  unix:/var/run/fcgiwrap.socket;
}

}

Enregistrez et fermez le fichier lorsque vous avez terminé, puis vérifiez le Nginx pour toute erreur de syntaxe :

nginx -t

Vous obtiendrez le résultat suivant :

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Enfin, redémarrez le service Nginx pour appliquer les modifications :

systemctl restart nginx

Vous pouvez également vérifier l'état de Nginx à l'aide de la commande suivante :

systemctl status nginx

Vous obtiendrez le résultat suivant :

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2021-12-11 08:00:04 UTC; 2s ago
       Docs: man:nginx(8)
    Process: 144985 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 144986 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 144987 (nginx)
      Tasks: 2 (limit: 2341)
     Memory: 2.5M
        CPU: 42ms
     CGroup: /system.slice/nginx.service
             ??144987 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??144988 nginx: worker process

Dec 11 08:00:04 debian11 systemd[1]: Starting A high performance web server and a reverse proxy server...
Dec 11 08:00:04 debian11 systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument
Dec 11 08:00:04 debian11 systemd[1]: Started A high performance web server and a reverse proxy server.

Se connecter au référentiel Git depuis le client

À ce stade, le serveur HTTP Git est configuré avec Nginx. Il est maintenant temps de le connecter à partir de la machine cliente et de le tester.

Commencez par installer le package Git sur la machine cliente à l'aide de la commande suivante :

apt-get install git -y

Ensuite, créez un répertoire pour votre projet avec la commande suivante :

mkdir project

Ensuite, accédez au répertoire de votre projet et initialisez Git à l'aide de la commande ci-dessous :

cd project
git init

Ensuite, configurez Git en utilisant votre adresse e-mail et votre nom d'utilisateur :

git config --global user.email "[email protected]"
git config --global user.name "user1"

Ensuite, ajoutez votre serveur HTTP Git à l'aide de la commande suivante :

git remote add origin http://[email protected]/user1.git

Créez ensuite un répertoire appelé dev01 et ajoutez-y un fichier :

mkdir dev01
echo "This is my first application" > dev01/file1

Ensuite, ajoutez votre répertoire et votre fichier créés au dépôt Git :

git add .

Ensuite, validez les modifications avec la commande suivante :

git commit -a -m "Add files and directories"

Vous obtiendrez le résultat suivant :

[master (root-commit) 0299d83] Add files and directories
 1 file changed, 1 insertion(+)
 create mode 100644 dev01/file1

Ensuite, téléchargez votre fichier et votre répertoire sur le serveur HTTP Git à l'aide de la commande suivante :

git push origin master

Il vous sera demandé de fournir votre mot de passe pour accéder au serveur Git :

Password for 'http://[email protected]': 

Une fois connecté, vous obtiendrez le résultat suivant :

Counting objects: 4, done.
Writing objects: 100% (4/4), 281 bytes | 281.00 KiB/s, done.
Total 4 (delta 0), reused 0 (delta 0)
To http://git.yourdomain.com/user1.git
 * [new branch]      master -> master

Vous pouvez également télécharger votre référentiel depuis le serveur Git directement à l'aide de la commande suivante :

git clone http://[email protected]domain.com/user1.git

Vous obtiendrez le résultat suivant :

Cloning into 'user1'...
Password for 'http://[email protected]': 
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (4/4), done.

Conclusion

Dans le guide ci-dessus, vous avez appris à configurer un serveur HTTP Git avec Nginx sur Debian 11. Vous pouvez maintenant implémenter cette configuration dans votre environnement de développement local et gérer et suivre votre projet à l'aide de la ligne de commande.


Debian
  1. Comment installer le serveur HTTP Git avec Nginx sur Ubuntu 16.04

  2. Comment installer le serveur HTTP Git avec Nginx sur Ubuntu 20.04

  3. Comment installer Ghost sur Debian avec Nginx

  4. Comment installer DokuWiki sur Debian Wheezy avec Nginx

  5. Comment installer WonderCMS avec Nginx sur Debian 11

Comment installer Nextcloud 10 avec Nginx sur Debian 8

Comment installer phpMyAdmin avec Nginx sur Debian 11 Bullseye

Comment installer phpMyAdmin avec Nginx sur Debian 11

Comment installer Nginx avec PHP-FPM sur Debian 11

Comment installer le serveur HTTP Git sur Ubuntu 20.04 LTS

Comment installer Nginx dans Debian 7