Configurer le serveur Git avec HTTP sur Ubuntu

Configurer le serveur Git avec HTTP sur Ubuntu
Si vous souhaitez configurer un serveur HTTP GIT pour travailler avec des référentiels GIT en privé, alors cet article est pour vous. Dans cet article, je vais vous montrer comment configurer un serveur HTTP Git Smart sur Ubuntu avec le serveur http Apache. Alors, commençons.

Installation du serveur GIT et Apache HTTP:

Les packages Git et Apache sont disponibles dans le référentiel officiel de package d'Ubuntu. Ainsi, vous pouvez facilement l'installer avec le gestionnaire de packages APT.

Tout d'abord, mettez à jour le cache du référentiel de package APT avec la commande suivante:

$ sudo apt mise à jour

Le cache du référentiel de package APT doit être mis à jour.

Maintenant, installez Git et Apache avec la commande suivante:

$ sudo apt install git apache2 apache2-utils

Maintenant, appuyez sur Y Et puis appuyez sur Pour confirmer l'installation.

Git et Apache doivent être installés.

Configuration du serveur http Apache pour GIT:

Maintenant, activez Apache mod_env, mod_cgi, mod_alias et mod_rewrite modules avec la commande suivante:

$ sudo a2enmod env cgi alias réécriture

Les modules Apache requis doivent être activés.

Maintenant, créez un nouveau répertoire / var / www / git Pour garder tous les référentiels GIT avec la commande suivante:

$ sudo mkdir / var / www / git

Maintenant, créez une nouvelle configuration de site Apache / etc / apache2 / sites-disponible / git.confli pour Git avec la commande suivante:

$ sudo nano / etc / apache2 / sites-disponible / git.confli

Maintenant, saisissez les lignes suivantes dans le fichier de configuration:


Serveradmin webmaster @ localhost
Setenv git_project_root / var / www / git
Setenv git_http_export_all
Scriptalias / git / / usr / lib / git-core / git-http-backend /
Alias ​​/ git / var / www / git

Options + EXECCGI -MultiViews + SymLinkSifownMatch
Autoverride Aucun
Exiger tous les accords

Documentroot / var / www / html

Les index d'options suivent les multivaleurs multiples
Autoverride Aucun
Exiger tous les accords

ErrorLog $ apache_log_dir / erreur.enregistrer
Loglevel avertit
Customlog $ apache_log_dir / accès.journal combiné

Le fichier de configuration final semble comme suit. Maintenant, enregistrez le fichier de configuration en appuyant sur + X suivie par Y et .

Maintenant, désactivez la configuration du site Apache par défaut avec la commande suivante:

$ sudo a2dissite 000-défaut.confli

La configuration du site par défaut doit être désactivée.

Maintenant, activez la configuration du site GIT avec la commande suivante:

$ sudo a2ensite git.confli

La configuration du site GIT doit être activée.

Maintenant, redémarrez le serveur Apache HTTP avec la commande suivante:

$ sudo systemctl redémarrer apache2

Afin de bootstrap un nouveau référentiel GIT accessible sur le serveur HTTP Apache, vous devrez exécuter quelques commandes. Vous ne voulez pas faire la même chose encore et encore juste pour créer un nouveau référentiel GIT. Alors, j'ai décidé d'écrire un script shell à cet effet.

Tout d'abord, créez un nouveau script shell / usr / local / bin / git-créate-repo.shot avec la commande suivante:

$ sudo nano / usr / local / bin / git-créate-repo.shot

Maintenant, saisissez les lignes de codes suivantes dans le script shell.

#!/ bac / bash
Git_dir = "/ var / www / git"
Repo_name = 1 $
mkdir -p "$ git_dir / $ repo_name.git "
cd "$ git_dir / $ repo_name.git "
git init --bare &> / dev / null
toucher git-daemon-export-ok
CP CP / post-mise à jour.Exemples de crochets / post-mise à jour
git config http.reçoire-toi vrai
Git Update-Server-Info
chown -rf www-data: www-data "$ git_dir / $ repo_name.git "
echo "git Repository '$ repo_name' créé dans $ git_dir / $ repo_name.git "

Une fois que vous avez tapé dans ces lignes, le script shell devrait ressembler à ce qui suit. Maintenant, enregistrez le fichier en appuyant sur + X suivie par Y et .

Maintenant, ajoutez l'autorisation d'exécuter au script shell avec la commande suivante:

$ sudo chmod + x / usr / local / bin / git-créate-repo.shot

Maintenant, créez un nouveau référentiel GIT test Dans la racine du projet Git / var / www / git en utilisant le git-create-repo.shot script shell comme suit:

$ sudo git-créate-repo.test de shot

Le référentiel Git test devrait être créé.

Pour accéder au référentiel GIT, vous avez besoin de l'adresse IP du serveur GIT HTTP.

$ ip a

Comme vous pouvez le voir, l'adresse IP dans mon cas est 192.168.21.208. Ce sera différent pour vous. Remplacez-le par le vôtre à partir de maintenant.

Maintenant, vous pouvez cloner le test Référentiel Git comme suit:

$ git clone http: // 192.168.21.208 / git / test.git

Le référentiel Git test devrait être cloné.

Maintenant, ajoutons un nouvel engagement à la test Référentiel GIT.

$ cd test /
$ echo "Hello World"> Bonjour
$ git add .
$ git commit -m 'initial commit'

Maintenant, téléchargez les modifications au test Référentiel GIT sur le serveur comme suit:

$ git push origine

Comme vous pouvez le voir, les modifications sont très bien téléchargées.

Configuration de l'authentification des utilisateurs:

Dans cette section, je vais vous montrer comment configurer l'authentification des utilisateurs sur les référentiels GIT dans le serveur.

Premièrement, modifiez le git.confli Fichier de configuration du site comme suit:

$ sudo nano / etc / apache2 / sites-disponible / git.confli

Maintenant, ajoutez la section suivante dans le fichier de configuration.


AuthType Basic
Authname "Vérification GIT"
AuthUserFile / etc / apache2 / git.passage
Exiger un utilisateur valide

Ici, / etc / apache2 / git.passage est le fichier de base de données utilisateur.

Le fichier de configuration final doit ressembler comme suit. Maintenant, enregistrez le fichier en appuyant sur + X suivie par Y et .

Maintenant, créez un nouveau fichier de base de données utilisateur / etc / apache2 / git.passage et ajouter un nouvel utilisateur (disons bousculade) au fichier de base de données comme suit:

$ sudo htpasswd -c / etc / apache2 / git.passwd shovon

Maintenant, saisissez un nouveau mot de passe pour le nouvel utilisateur et appuyez sur .

Retyper le même mot de passe et appuyez sur .

La paire de mots-cycle utilisateur doit être ajoutée à la base de données.

Maintenant, redémarrez le serveur Apache HTTP avec la commande suivante:

$ sudo systemctl redémarrer apache2

Maintenant, si vous essayez de cloner le test Référentiel à nouveau, il vous sera demandé de vous authentifier comme vous pouvez le voir dans la capture d'écran ci-dessous.

Une fois que vous vous authentifierez à l'aide du nom d'utilisateur et du mot de passe, vous pourrez accéder au référentiel GIT.

Même lorsque vous essayez de pousser ou de tirer du référentiel Git, il vous sera également demandé le nom d'utilisateur et le mot de passe.

Une fois que vous vous authentifiez, Push / Pull fonctionnera.

Vous pouvez également définir une base de données d'utilisateurs différentes pour différents référentiels GIT. Cela pourrait être utile pour des projets où beaucoup de gens travaillent ensemble sur le même référentiel GIT.

Pour définir l'authentification du référentiel GIT, éditez d'abord git.confli Fichier de configuration du site comme suit:

$ sudo nano / etc / apache2 / sites-disponible / git.confli

Maintenant, ajoutez les lignes suivantes dans le fichier de configuration.


AuthType Basic
Authname "Vérification GIT"
AuthUserFile / etc / apache2 / git.test.passage
Exiger un utilisateur valide


AuthType Basic
Authname "Vérification GIT"
AuthUserFile / etc / apache2 / git.test2.passage
Exiger un utilisateur valide

Pour chaque référentiel GIT test et test2, un La section est définie. Un fichier de base de données utilisateur différent est utilisé pour chaque référentiel GIT.

Le fichier de configuration final doit ressembler comme suit. Maintenant, enregistrez le fichier de configuration en appuyant sur + X suivie par Y et .

Maintenant, vous pouvez créer les bases de données utilisateur requises comme suit:

$ sudo htpasswd -c / etc / apache2 / git.test.Nom d'utilisateur Passwd
$ sudo htpasswd -c / etc / apache2 / git.test2.Nom d'utilisateur Passwd

Une fois que vous avez terminé, redémarrez Apache HTTP Server avec la commande suivante:

$ sudo systemctl redémarrer apache2

Maintenant, chaque référentiel GIT devrait avoir son propre ensemble d'utilisateurs qui peuvent y accéder.

C'est donc ainsi que vous configurez Git Server avec le serveur http Apache sur Ubuntu. Merci d'avoir lu cet article.