Configureer Git Server met HTTP op Ubuntu

Configure Git Server With Http Ubuntu



Als je een Git HTTP-server wilt opzetten om privé met Git-repositories te werken, dan is dit artikel iets voor jou. In dit artikel laat ik je zien hoe je een Git Smart HTTP-server configureert op Ubuntu met Apache HTTP-server. Dus laten we beginnen.

Git- en Apache-pakketten zijn beschikbaar in de officiële pakketrepository van Ubuntu. U kunt het dus eenvoudig installeren met de APT-pakketbeheerder.







Werk eerst de cache van de APT-pakketrepository bij met de volgende opdracht:



$sudogeschikte update



De cache van de pakketrepository van APT moet worden bijgewerkt.





Installeer nu Git en Apache met de volgende opdracht:



$sudogeschiktinstalleren Gaanapache2 apache2-utils

Druk nu op EN en druk vervolgens op om de installatie te bevestigen.

Git en Apache moeten geïnstalleerd zijn.

Apache HTTP-server configureren voor Git:

Schakel nu Apache in mod_env , mod_cgi , mod_alias en mod_rewrite modules met het volgende commando:

$sudoa2enmodbenijdencgialiasherschrijven

De vereiste Apache-modules moeten zijn ingeschakeld.

Maak nu een nieuwe map aan /var/www/git voor het bewaren van alle Git-repository's met het volgende commando:

$sudo mkdir /waar/www/Gaan

Maak nu een nieuwe Apache-siteconfiguratie /etc/apache2/sites-available/git.conf voor Git met het volgende commando:

$sudo nano /enzovoort/apache2/sites-beschikbaar/git.conf

Typ nu de volgende regels in het configuratiebestand:

<Virtuele Host*:80>
ServerAdmin webmaster@localhost

SetEnv GIT_PROJECT_ROOT<sterk> /waar/www/Gaansterk>
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias/Gaan/ /usr/lib/git-core/git-http-backend/

Alias/Gaan /waar/www/Gaan

<Directory/usr/lib/git-core>
Opties +ExecCGI-Meerdere weergaven+SymLinksIfOwnerMatch
ToestaanOverschrijven Geen
Vereisen dat alles is verleend
Directory>

DocumentRoot/waar/www/html

<Directory/waar/www>
Opties Indexen FollowSymLinks MultiViews
ToestaanOverschrijven Geen
Vereisen dat alles is verleend
Directory>


Foutlog$ {APACHE_LOG_DIR}/error.log
LogLevel waarschuwing
CustomLog$ {APACHE_LOG_DIR}/access.log gecombineerd
Virtuele Host>

Het uiteindelijke configuratiebestand ziet er als volgt uit. Sla nu het configuratiebestand op door op te drukken + x gevolgd door EN en .

Schakel nu de standaard Apache-siteconfiguratie uit met de volgende opdracht:

$sudoa2dissite 000-default.conf

De standaard siteconfiguratie moet worden uitgeschakeld.

Schakel nu de Git-siteconfiguratie in met de volgende opdracht:

$sudoa2ensite git.conf

De Git-siteconfiguratie moet zijn ingeschakeld.

Start nu de Apache HTTP-server opnieuw met de volgende opdracht:

$sudosystemctl herstart apache2

Om een ​​nieuwe Git-repository op te starten die toegankelijk is via de Apache HTTP-server, moet je een paar commando's uitvoeren. Je wilt niet steeds hetzelfde doen om een ​​nieuwe Git-repository te maken. Dus besloot ik voor dat doel een shellscript te schrijven.

Maak eerst een nieuw shellscript /usr/local/bin/git-create-repo.sh met het volgende commando:

$sudo nano /usr/lokaal/ben/git-create-repo.sh

Typ nu de volgende regels codes in het shellscript.

#!/bin/bash

GIT_DIR='/var/www/git'
REPO_NAME=$ 1

mkdir -P '${GIT_DIR}/${REPO_NAME}.Gaan'
CD '${GIT_DIR}/${REPO_NAME}.Gaan'

git init --alleen maar &> /dev/nul
aanrakengit-daemon-export-ok
cphaken/post-update.sample hooks/post-update
git confighttp.receivepackwaar
git update-server-info
chown -Rfwww-data: www-data'${GIT_DIR}/${REPO_NAME}.Gaan'
gooide uit 'Git-opslagplaats'${REPO_NAME}' gemaakt in${GIT_DIR}/${REPO_NAME}.Gaan'

Nadat u deze regels hebt ingevoerd, ziet het shellscript er als volgt uit. Sla het bestand nu op door op te drukken + x gevolgd door EN en .

Voeg nu uitvoeringstoestemming toe aan het shellscript met de volgende opdracht:

$sudo chmod+ x/usr/lokaal/ben/git-create-repo.sh

Maak nu een nieuwe Git-repository toets in de hoofdmap van het Git-project /var/www/git de ... gebruiken git-create-repo.sh shell-script als volgt:

$sudogit-create-repo.shtoets

De Git-repository toets moet worden gecreëerd.

Om toegang te krijgen tot de Git-repository, hebt u het IP-adres van de Git HTTP-server nodig.

$ik ptot

Zoals je kunt zien, is het IP-adres in mijn geval: 192.168.21.208 . Het zal voor jou anders zijn. Vervang hem vanaf nu door de jouwe.

Nu kunt u de . klonen toets Git-repository als volgt:

$git kloonhttp://192.168.21.208/Gaan/test.go

De Git-repository toets gekloond moeten worden.

Laten we nu een nieuwe commit toevoegen aan de toets Git-opslagplaats.

$CDtoets/
$gooide uit 'Hallo Wereld' >Hallo
$git add.
$git commit -m 'eerste inzet'

Upload nu de wijzigingen naar de toets Git-repository op de server als volgt:

$git pushoorsprong

Zoals u kunt zien, worden de wijzigingen prima geüpload.

Gebruikersauthenticatie configureren:

In deze sectie laat ik je zien hoe je gebruikersauthenticatie configureert op de Git-opslagplaatsen op de server.

Bewerk eerst de git.conf siteconfiguratiebestand als volgt:

$sudo nano /enzovoort/apache2/sites-beschikbaar/git.conf

Voeg nu de volgende sectie toe aan het configuratiebestand.

<LocatieMatch/Gaan/.*.Gaan>
AuthType Basis
AuthNaam'Git-verificatie'
AuthUserFile/enzovoort/apache2/git.passwd
Geldige gebruiker vereisen
LocatieMatch>

Hier, /etc/apache2/git.passwd is het gebruikersdatabasebestand.

Het uiteindelijke configuratiebestand zou er als volgt uit moeten zien. Sla het bestand nu op door op te drukken + x gevolgd door EN en .

Maak nu een nieuw gebruikersdatabasebestand aan /etc/apache2/git.passwd en voeg een nieuwe gebruiker toe (laten we zeggen sjovon ) als volgt naar het databasebestand:

$sudohtpasswd-C /enzovoort/apache2/git.passwd shovon

Typ nu een nieuw wachtwoord voor de nieuwe gebruiker en druk op .

Typ hetzelfde wachtwoord opnieuw en druk op .

Het gebruiker-wachtwoordpaar moet aan de database worden toegevoegd.

Start nu de Apache HTTP-server opnieuw met de volgende opdracht:

$sudosystemctl herstart apache2

Als je nu probeert de toets repository opnieuw, wordt u gevraagd om te authenticeren, zoals u kunt zien in de onderstaande schermafbeelding.

Nadat u zich heeft geverifieerd met de gebruikersnaam en het wachtwoord, krijgt u toegang tot de Git-repository.

Zelfs wanneer u probeert te pushen of te trekken uit de Git-repository, wordt u ook om de gebruikersnaam en het wachtwoord gevraagd.

Zodra u zich verifieert, werkt push/pull.

U kunt ook verschillende gebruikersdatabases instellen voor verschillende Git-opslagplaatsen. Dit kan handig zijn voor projecten waar veel mensen samenwerken aan dezelfde Git-repository.

Om Git repository-wise authenticatie in te stellen, bewerk eerst de git.conf siteconfiguratiebestand als volgt:

$sudo nano /enzovoort/apache2/sites-beschikbaar/git.conf

Voeg nu de volgende regels toe aan het configuratiebestand.

<Plaats/Gaan/test.go>
AuthType Basis
AuthNaam'Git-verificatie'
AuthUserFile/enzovoort/apache2/git.test.passwd
Geldige gebruiker vereisen
Plaats>

<Plaats/Gaan/test2.git>
AuthType Basis
AuthNaam'Git-verificatie'
AuthUserFile/enzovoort/apache2/git.test2.passwd
Geldige gebruiker vereisen
Plaats>

Voor elke Git-repository toets en test2 , tot sectie is gedefinieerd. Voor elke Git-repository wordt een ander gebruikersdatabasebestand gebruikt.

Het uiteindelijke configuratiebestand zou er als volgt uit moeten zien. Sla nu het configuratiebestand op door op te drukken + x gevolgd door EN en .

Nu kunt u als volgt de vereiste gebruikersdatabases maken:

$sudohtpasswd-C /enzovoort/apache2/git.test.passwd GEBRUIKERSNAAM
$sudohtpasswd-C /enzovoort/apache2/git.test2.passwd GEBRUIKERSNAAM

Als u klaar bent, start u de Apache HTTP-server opnieuw met de volgende opdracht:

$sudosystemctl herstart apache2

Nu zou elke Git-repository zijn eigen set gebruikers moeten hebben die er toegang toe hebben.

Dus zo configureer je Git Server met Apache HTTP Server op Ubuntu. Bedankt voor het lezen van dit artikel.