Konfigurer git -server med HTTP på Ubuntu

Konfigurer git -server med HTTP på Ubuntu
Hvis du vil konfigurere en Git HTTP -server for å jobbe med Git -lagringsplasser privat, er denne artikkelen noe for deg. I denne artikkelen skal jeg vise deg hvordan du konfigurerer en Git Smart HTTP -server på Ubuntu med Apache HTTP -server. Så la oss komme i gang.

Installere Git og Apache HTTP -server:

Git- og Apache -pakker er tilgjengelige i det offisielle pakkelagdet til Ubuntu. Så du kan enkelt installere den med Apt Package Manager.

Oppdater først Apt Package Repository Cache med følgende kommando:

$ sudo apt oppdatering

Apt Package Repository Cache skal oppdateres.

Nå, installer Git og Apache med følgende kommando:

$ sudo apt install git apache2 apache2-utils

Nå, trykk Y Og trykk deretter For å bekrefte installasjonen.

Git og Apache bør installeres.

Konfigurere Apache HTTP -server for GIT:

Aktiver Apache nå mod_env, mod_cgi, mod_alias og mod_rewrite Moduler med følgende kommando:

$ sudo a2enmod env cgi alias omskrives

De nødvendige Apache -modulene skal være aktivert.

Lag nå en ny katalog /var/www/git For å holde alle Git -lagrene med følgende kommando:

$ sudo mkdir/var/www/git

Lag nå en ny konfigurasjon av Apache Site /etc/apache2/nettsteder-tilgjengelig/git.konf For git med følgende kommando:

$ sudo nano/etc/apache2/nettsteder-tilgjengelig/git.konf

Skriv inn følgende linjer i konfigurasjonsfilen:


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

Alternativer +execcgi -multiViews +symlinksifoWreMatch
Tillat ingen
Krever alt gitt

Documentroot/var/www/html

Alternativerindekser følger Symlinks Multiviews
Tillat ingen
Krever alt gitt

Errorlog $ apache_log_dir/feil.Logg
LogLevel advarer
CustomLog $ apache_log_dir/tilgang.logg kombinert

Den endelige konfigurasjonsfilen ser ut som følger. Lagre nå konfigurasjonsfilen ved å trykke på + X etterfulgt av Y og .

Deaktiver nå standard Apache Site -konfigurasjon med følgende kommando:

$ sudo a2dissite 000-default.konf

Standard nettstedkonfigurasjon skal deaktiveres.

Aktiver nå Git Site -konfigurasjonen med følgende kommando:

$ sudo a2ensite git.konf

Konfigurasjonen av Git -nettstedets bør aktiveres.

Nå, start Apache HTTP -serveren med følgende kommando:

$ sudo SystemCTL Restart Apache2

For å starte opp et nytt Git -depot tilgjengelig over Apache HTTP -serveren, må du kjøre noen få kommandoer. Du vil ikke gjøre det samme om og om igjen bare for å lage et nytt Git -depot. Så jeg bestemte meg for å skrive et skallskript for det formålet.

Lag først et nytt skallskript /usr/local/bin/git-create-repo.sh med følgende kommando:

$ sudo nano/usr/local/bin/git-create-repo.sh

Skriv inn følgende linjer med koder i skallskriptet.

#!/bin/bash
Git_dir = "/var/www/git"
Repo_name = $ 1
mkdir -p "$ git_dir/$ repo_name.Git "
CD "$ git_dir/$ repo_name.Git "
git init - -fair &> /dev /null
Touch git-daemon-export-ok
CP-kroker/post-oppdatering.Eksempelkroker/post-oppdatering
git config http.motta Pack True
git oppdateringsserver-info
Chown -rf www-data: www-data "$ git_dir/$ repo_name.Git "
Echo "Git Repository '$ repo_name' opprettet i $ git_dir/$ repo_name.Git "

Når du skriver inn disse linjene, skal skallskriptet se ut som følger. Lagre filen nå ved å trykke på + X etterfulgt av Y og .

Legg nå utfør tillatelse til Shell -skriptet med følgende kommando:

$ sudo chmod +x/usr/local/bin/git-create-repo.sh

Lag nå et nytt Git -depot test I Git -prosjektroten /var/www/git bruker git-create-repo.sh Shell -skript som følger:

$ sudo git-create-repo.SH -test

Git -depotet test bør opprettes.

For å få tilgang til Git -depotet, trenger du IP -adressen til Git HTTP -serveren.

$ ip a

Som du ser er IP -adressen i mitt tilfelle 192.168.21.208. Det vil være annerledes for deg. Erstatt den med din fra nå av.

Nå kan du klone test Git Repository som følger:

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

Git -depotet test skal klones.

La oss nå legge til en ny forpliktelse til test Git Repository.

$ CD -test/
$ ECHO "Hello World"> Hei
$ git Legg til .
$ git commit -m 'initial commit'

Last opp endringene til test Git -depot på serveren som følger:

$ git push origin

Som du kan se, blir endringene lastet opp helt fint.

Konfigurere brukergodkjenning:

I denne delen skal jeg vise deg hvordan du konfigurerer brukergodkjenning på Git -lagringene på serveren.

Først, rediger git.konf Nettstedskonfigurasjonsfil som følger:

$ sudo nano/etc/apache2/nettsteder-tilgjengelig/git.konf

Legg nå til følgende avsnitt i konfigurasjonsfilen.


AuthType Basic
Authname "Git Verification"
AuthUserFile/etc/apache2/git.Passwd
Krever gyldig bruker

Her, /etc/apache2/git.Passwd er brukerdatabasefilen.

Den endelige konfigurasjonsfilen skal se ut som følger. Lagre filen nå ved å trykke på + X etterfulgt av Y og .

Opprett nå en ny brukerdatabasefil /etc/apache2/git.Passwd og legg til en ny bruker (la oss si Shovon) til databasefilen som følger:

$ sudo htpasswd -c/etc/apache2/git.Passwd Shovon

Skriv inn et nytt passord for den nye brukeren og trykk nå .

Skyp det samme passordet og trykk på nytt .

Brukerpassordparet skal legges til i databasen.

Nå, start Apache HTTP -serveren med følgende kommando:

$ sudo SystemCTL Restart Apache2

Nå, hvis du prøver å klone test depot igjen, vil du bli bedt om å autentisere som du kan se på skjermdumpen nedenfor.

Når du autentiserer deg ved hjelp av brukernavnet og passordet, vil du kunne få tilgang til Git -depotet.

Selv når du prøver å presse eller trekke fra Git -depotet, vil du også bli bedt om brukernavn og passord.

Når du autentiserer, fungerer Push/Pull.

Du kan også angi forskjellige brukerdatabase for forskjellige Git -depoter. Dette kan være nyttig for prosjekter der mange mennesker jobber sammen på samme Git -depot.

For å angi Git Repository-autentisering, rediger først git.konf Nettstedskonfigurasjonsfil som følger:

$ sudo nano/etc/apache2/nettsteder-tilgjengelig/git.konf

Legg nå til følgende linjer i konfigurasjonsfilen.


AuthType Basic
Authname "Git Verification"
AuthUserFile/etc/apache2/git.test.Passwd
Krever gyldig bruker


AuthType Basic
Authname "Git Verification"
AuthUserFile/etc/apache2/git.Test2.Passwd
Krever gyldig bruker

For hvert Git -depot test og Test2, en Seksjonen er definert. En annen brukerdatabasefil brukes til hvert Git -depot.

Den endelige konfigurasjonsfilen skal se ut som følger. Lagre nå konfigurasjonsfilen ved å trykke på + X etterfulgt av Y og .

Nå kan du opprette de nødvendige brukerdatabasene som følger:

$ sudo htpasswd -c/etc/apache2/git.test.PASSWD Brukernavn
$ sudo htpasswd -c/etc/apache2/git.Test2.PASSWD Brukernavn

Når du er ferdig, start Apache HTTP -serveren med følgende kommando:

$ sudo SystemCTL Restart Apache2

Nå skal hvert Git -depot ha sitt eget sett med brukere som har tilgang til det.

Så det er slik du konfigurerer Git -serveren med Apache HTTP -server på Ubuntu. Takk for at du leste denne artikkelen.