GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment installer le serveur HTTP Git avec Nginx sur Ubuntu 16.04

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 16.04.

Exigences

  • Nouveau serveur Ubuntu 16.04 installé sur votre système.
  • Utilisateur Sudo avec privilèges root.
  • Adresse IP statique 192.168.15.189 configurée sur votre serveur

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 :

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

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 :

?? 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 Tue 2017-06-20 23:00:11 IST; 51min ago
  Process: 12415 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status=0/SUCCESS)
  Process: 7616 ExecReload=/usr/sbin/nginx -g daemon on; master_process on; -s reload (code=exited, status=0/SUCCESS)
  Process: 12423 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
  Process: 12419 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
 Main PID: 12427 (nginx)
   CGroup: /system.slice/nginx.service
           ??????12427 nginx: master process /usr/sbin/nginx -g daemon on; master_process on
           ??????12431 nginx: worker process                           

Jun 20 23:00:11 localhost systemd[1]: Stopped A high performance web server and a reverse proxy server.
Jun 20 23:00:11 localhost systemd[1]: Starting A high performance web server and a reverse proxy server...
Jun 20 23:00:11 localhost systemd[1]: nginx.service: Failed to read PID from file /run/nginx.pid: Invalid argument
Jun 20 23:00:11 localhost systemd[1]: Started A high performance web server and a reverse proxy server.

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 repo.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 777 .

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 le service HTTP en exécutant la commande suivante :

sudo ufw allow http

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 du 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 directoires"

Vous devriez voir le résultat suivant :

[master 002fac9] Add files and directoires
 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

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.


Ubuntu
  1. Comment installer Nginx sur Ubuntu 20.04

  2. Comment installer MediaWiki avec Nginx sur Ubuntu 16.04

  3. Comment installer Magento avec Nginx sur Ubuntu 15.10

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

  5. Comment installer le serveur HTTP Git avec Nginx sur Debian 11

Comment installer FileRun sur Ubuntu 20.04 avec Apache/Nginx

Comment installer InvoiceNinja sur le serveur Ubuntu 18.04 avec Apache/Nginx

Comment installer InvoiceNinja sur le serveur Ubuntu 20.04 avec Apache/Nginx

Comment installer Nginx sur Ubuntu

Comment installer LetsEncrypt avec Nginx sur Ubuntu 15.04

Comment installer le serveur HTTP Git sur Ubuntu 20.04 LTS