Git

Configureer Git Server met HTTP op Ubuntu

Configureer Git Server met HTTP op Ubuntu
Als je een Git HTTP-server wilt instellen 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 HTTP-server installeren:

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:

$ sudo apt-update

De cache van de APT-pakketrepository moet worden bijgewerkt.

Installeer nu Git en Apache met de volgende opdracht:

$ sudo apt install git apache2 apache2-utils

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

Git en Apache zouden geïnstalleerd moeten 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:

$ sudo a2enmod env cgi alias herschrijven

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 /var/www/git

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

$ sudo nano /etc/apache2/sites-available/git.conf

Typ nu de volgende regels in het configuratiebestand:


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
 

Opties +ExecCGI -MultiViews +SymLinksIfOwnerMatch
ToestaanOverschrijven Geen
Vereisen dat alles is verleend

 
DocumentRoot /var/www/html
 

Opties Indexen FollowSymLinks MultiViews
ToestaanOverschrijven Geen
Vereisen dat alles is verleend

 
 
ErrorLog $APACHE_LOG_DIR/error.log
LogLevel waarschuwing
CustomLog $APACHE_LOG_DIR/toegang.log gecombineerd

Het uiteindelijke configuratiebestand ziet er als volgt uit:. Sla nu het configuratiebestand op door op . te drukken + X gevolgd door Y en .

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

$ sudo a2dissite 000-standaard.conf

De standaard siteconfiguratie moet zijn uitgeschakeld.

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

$ sudo a2ensite git.conf

De Git-siteconfiguratie moet zijn ingeschakeld.

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

$ sudo systemctl herstart apache2

Om een ​​nieuwe Git-repository op te starten die toegankelijk is via de Apache HTTP-server, moet u een paar opdrachten 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/local/bin/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.git"
cd "$GIT_DIR/$REPO_NAME.git"
 
git init --bare &> /dev/null
touch git-daemon-export-ok
cp hooks/post-update.voorbeeldhaken/post-update
git config http.ontvangstpakket waar
git update-server-info
chown -Rf www-data:www-data "$GIT_DIR/$REPO_NAME.git"
echo "Git-repository '$REPO_NAME' gemaakt in $GIT_DIR/$REPO_NAME.git"

Zodra u deze regels typt, zou het shellscript er als volgt uit moeten zien:. Sla het bestand nu op door op te drukken + X gevolgd door Y en .

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

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

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

$ sudo git-create-repo.sh test

De Git-repository test moet worden gemaakt.

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

$ ip a

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 die van jou.

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

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

De Git-repository test zou gekloond moeten worden.

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

$ cd-test/
$ echo "Hallo wereld" > hallo
$ git toevoegen .
$ git commit -m 'initiële commit'

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

$ git push oorsprong

Zoals je kunt zien, zijn de wijzigingen prima geüpload.

Gebruikersauthenticatie configureren:

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

Bewerk eerst de git.conf siteconfiguratiebestand als volgt:

$ sudo nano /etc/apache2/sites-available/git.conf

Voeg nu de volgende sectie toe aan het configuratiebestand:.


AuthType Basis
AuthName "Git-verificatie"
AuthUserFile /etc/apache2/git.passwd
Geldige gebruiker vereisen-

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 Y 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:

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

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:

$ sudo systemctl herstart apache2

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

Nadat je je hebt geverifieerd met de gebruikersnaam en het wachtwoord, heb je 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 duwen/trekken.

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 /etc/apache2/sites-available/git.conf

Voeg nu de volgende regels toe aan het configuratiebestand:.


AuthType Basis
AuthName "Git-verificatie"
AuthUserFile /etc/apache2/git.test.passwd
Geldige gebruiker vereisen-

 

AuthType Basis
AuthName "Git-verificatie"
AuthUserFile /etc/apache2/git.test2.passwd
Geldige gebruiker vereisen-

Voor elke Git-repository test en test2, een 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 Y en .

Nu kunt u als volgt de vereiste gebruikersdatabases maken:

$ sudo htpasswd -c /etc/apache2/git.test.passwd GEBRUIKERSNAAM
$ sudo htpasswd -c /etc/apache2/git.test2.passwd GEBRUIKERSNAAM

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

$ sudo systemctl 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.

Beste gamepad-toewijzingsapps voor Linux
Als je graag games op Linux speelt met een gamepad in plaats van een typisch toetsenbord- en muisinvoersysteem, zijn er enkele handige apps voor jou. ...
Handige hulpmiddelen voor Linux-gamers
Als je graag games op Linux speelt, is de kans groot dat je apps en hulpprogramma's zoals Wine, Lutris en OBS Studio hebt gebruikt om de game-ervaring...
HD Remastered Games voor Linux die nog nooit eerder een Linux-release hebben gehad
Veel game-ontwikkelaars en uitgevers komen met HD-remaster van oude games om de levensduur van franchise te verlengen, fans die compatibiliteit met mo...