een HTTP Git Server installeren met Nginx op Debian 11
Git is een open-source versiebeheersysteem dat door duizenden ontwikkelaars over de hele wereld gebruikt wordt. Het wordt gebruikt om je software wijzigingen op bronniveau bij te houden. Het stelt je in staat veranderingen bij te houden, terug te draaien naar vorige stadia en een alternatieve versie van bestanden en mappen te maken.
HTTP Git Server is een open-source project dat een Nginx webserver gebruikt om Git repositories over je Local Area Network (LAN) te serveren. Het is heel eenvoudig en gemakkelijk in te stellen. Iedereen kan hem beheren vanaf de command-line interface.
In deze handleiding leg ik uit hoe je een HTTP Git repository server met Nginx op Debian 11 kunt opzetten.
Vereisten
- Een server met Debian 11.
- Een geldige domeinnaam die wijst naar het IP van je server.
- Een root wachtwoord is op je server ingesteld.
Installeer Nginx en andere afhankelijkheden
Eerst moet je de Nginx webserver installeren en andere vereiste pakketten om een HTTP Git server op te zetten. Je kunt ze allemaal installeren met het volgende commando:
apt-get install nginx git fcgiwrap apache2-utils unzip -y
Als alle pakketten geïnstalleerd zijn, kun je verder gaan met de volgende stap.
Maak een Git Repository
Vervolgens moet je een map maken om de Git repository in op te slaan. Laten we een directory met de naam myrepo aanmaken binnen de Nginx web root directory:
mkdir /var/www/html/myrepo
Verander vervolgens de directory in myrepo en maak een andere directory voor gebruikers:
cd /var/www/html/myrepo
mkdir user1.git
Navigeer vervolgens naar de gebruikersmap en initialiseer de Git repository met het volgende commando:
cd user1.git
git --bare init
Je krijgt de volgende uitvoer:
Initialized empty Git repository in /var/www/html/myrepo/user1.git/
Werk vervolgens de Git server informatie bij met het volgende commando:
git update-server-info
Verander vervolgens het eigendom van myrepo en stel de juiste toestemming in met het volgende commando:
chown -R www-data:www-data /var/www/html/myrepo
chmod -R 755 /var/www/html/myrepo
Maak vervolgens een gebruiker aan met de naam user1 en stel een wachtwoord in:
htpasswd -c /var/www/html/myrepo/htpasswd user1
Je kunt het wachtwoord instellen zoals hieronder:
New password: Re-type new password: Adding password for user user1
Je kunt het wachtwoord controleren met het volgende commando:
cat /var/www/html/myrepo/htpasswd
Voorbeeld uitvoer:
user1:$apr1$LoyCEkzA$Fjq5nBbLhBRdaxCQBBUQd1
Nginx configureren om Git Repository te serveren
Vervolgens moet je een Nginx virtual host configuratiebestand maken om Git repository te serveren.
nano /etc/nginx/conf.d/git.conf
Voeg de volgende regels toe:
server { listen 80; root /var/www/html/myrepo; # Add index.php to the list if you are using PHP index index.html index.htm index.nginx-debian.html; server_name git.yourdomain.com; 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; auth_basic "Git Login"; auth_basic_user_file "/var/www/html/myrepo/htpasswd"; include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend; fastcgi_param GIT_HTTP_EXPORT_ALL ""; fastcgi_param GIT_PROJECT_ROOT /var/www/html/myrepo; fastcgi_param REMOTE_USER $remote_user; fastcgi_param PATH_INFO $1; fastcgi_pass unix:/var/run/fcgiwrap.socket; } }
Sla het bestand op en sluit het als je klaar bent, controleer Nginx dan op eventuele syntaxfouten:
nginx -t
Je krijgt de volgende uitvoer:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Herstart tenslotte de Nginx dienst om de veranderingen toe te passen:
systemctl restart nginx
Je kunt ook de Nginx status controleren met het volgende commando:
systemctl status nginx
Je krijgt de volgende uitvoer:
? 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 Sat 2021-12-11 08:00:04 UTC; 2s ago Docs: man:nginx(8) Process: 144985 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 144986 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 144987 (nginx) Tasks: 2 (limit: 2341) Memory: 2.5M CPU: 42ms CGroup: /system.slice/nginx.service ??144987 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ??144988 nginx: worker process Dec 11 08:00:04 debian11 systemd[1]: Starting A high performance web server and a reverse proxy server... Dec 11 08:00:04 debian11 systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument Dec 11 08:00:04 debian11 systemd[1]: Started A high performance web server and a reverse proxy server.
Verbind met Git Repository vanaf de client
Op dit punt is de Git HTTP server met Nginx ingesteld. Nu is het tijd om hem vanaf de cliënt machine te verbinden en te testen.
Installeer eerst het Git pakket op de cliënt machine met het volgende commando:
apt-get install git -y
Maak vervolgens een directory voor je project met het volgende commando:
mkdir project
Navigeer vervolgens naar je project map en initialiseer de Git met het onderstaande commando:
cd project
git init
Configureer vervolgens Git met je e-mail en gebruikersnaam:
git config --global user.email "[email protected]"
git config --global user.name "user1"
Voeg vervolgens je Git HTTP server toe met het volgende commando:
git remote add origin http://[email protected]/user1.git
Maak vervolgens een directory met de naam dev01 en voeg er een bestand in toe:
mkdir dev01
echo "This is my first application" > dev01/file1
Voeg vervolgens je gemaakte directory en bestand toe aan de Git repository:
git add .
Daarna commit je de veranderingen met het volgende commando:
git commit -a -m "Add files and directories"
Je krijgt de volgende uitvoer:
[master (root-commit) 0299d83] Add files and directories 1 file changed, 1 insertion(+) create mode 100644 dev01/file1
Upload vervolgens je bestand en map naar de HTTP Git server met het volgende commando:
git push origin master
Je wordt gevraagd je wachtwoord op te geven om toegang te krijgen tot de Git server:
Password for 'http://[email protected]':
Zodra je verbonden bent, krijg je de volgende uitvoer:
Counting objects: 4, done. Writing objects: 100% (4/4), 281 bytes | 281.00 KiB/s, done. Total 4 (delta 0), reused 0 (delta 0) To http://git.yourdomain.com/user1.git * [new branch] master -> master
Je kunt je repository ook direct van de Git server downloaden met het volgende commando:
git clone http://[email protected]/user1.git
Je krijgt de volgende uitvoer:
Cloning into 'user1'... Password for 'http://[email protected]': remote: Enumerating objects: 4, done. remote: Counting objects: 100% (4/4), done. remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (4/4), done.
Conclusie
In de bovenstaande gids heb je geleerd hoe je een HTTP Git server kunt opzetten met Nginx op Debian 11. Je kunt deze opzet nu implementeren in je lokale ontwikkelomgeving en je project beheren en volgen met de commandoregel.