Git je open-source systém pro správu verzí, který používají tisíce vývojářů po celém světě. Používá se ke sledování změn vašeho softwaru na úrovni zdroje. Umožňuje vám sledovat změny, vracet je zpět do předchozí fáze a vytvářet alternativní verze souborů a adresářů.
HTTP Git Server je projekt s otevřeným zdrojovým kódem, který používá webový server Nginx k obsluze úložišť Git přes vaši místní síť (LAN). Je velmi jednoduchý a snadno se nastavuje. Kdokoli jej může spravovat z rozhraní příkazového řádku.
V tomto tutoriálu vysvětlím, jak nastavit server úložiště HTTP Git s Nginx na Debianu 11.
Předpoklady
- Server se systémem Debian 11.
- Platný název domény s adresou IP vašeho serveru.
- Na vašem serveru je nakonfigurováno heslo uživatele root.
Instalovat Nginx a další závislosti
Nejprve budete muset nainstalovat webový server Nginx a další požadované balíčky pro nastavení serveru HTTP Git. Všechny je můžete nainstalovat pomocí následujícího příkazu:
apt-get install nginx git fcgiwrap apache2-utils unzip -y
Jakmile jsou všechny balíčky nainstalovány, můžete přejít k dalšímu kroku.
Vytvoření úložiště Git
Dále budete muset vytvořit adresář pro uložení úložiště Git. Vytvořme adresář s názvem myrepo uvnitř webového kořenového adresáře Nginx:
mkdir /var/www/html/myrepo
Dále změňte adresář na myrepo a vytvořte další adresář pro uživatele:
cd /var/www/html/myrepo
mkdir user1.git
Dále přejděte do uživatelského adresáře a inicializujte úložiště Git pomocí následujícího příkazu:
cd user1.git
git --bare init
Získáte následující výstup:
Initialized empty Git repository in /var/www/html/myrepo/user1.git/
Dále aktualizujte informace o serveru Git pomocí následujícího příkazu:
git update-server-info
Dále změňte vlastnictví myrepo a nastavte správná oprávnění pomocí následujícího příkazu:
chown -R www-data:www-data /var/www/html/myrepo
chmod -R 755 /var/www/html/myrepo
Dále vytvořte uživatele s názvem uživatel1 a nastavte heslo:
htpasswd -c /var/www/html/myrepo/htpasswd user1
Heslo můžete nastavit, jak je uvedeno níže:
New password: Re-type new password: Adding password for user user1
Heslo můžete zkontrolovat pomocí následujícího příkazu:
cat /var/www/html/myrepo/htpasswd
Ukázkový výstup:
user1:$apr1$LoyCEkzA$Fjq5nBbLhBRdaxCQBBUQd1
Konfigurace Nginx pro poskytování Git úložiště
Dále budete muset vytvořit konfigurační soubor virtuálního hostitele Nginx pro obsluhu úložiště Git.
nano /etc/nginx/conf.d/git.conf
Přidejte následující řádky:
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; } }
Po dokončení uložte a zavřete soubor a poté ověřte, zda Nginx neobsahuje nějakou chybu syntaxe:
nginx -t
Získáte následující výstup:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Nakonec restartujte službu Nginx, aby se změny projevily:
systemctl restart nginx
Stav Nginx můžete také zkontrolovat pomocí následujícího příkazu:
systemctl status nginx
Získáte následující výstup:
? 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.
Připojení k úložišti Git z klienta
V tomto okamžiku je server Git HTTP nastaven s Nginx. Nyní je čas jej připojit z klientského počítače a otestovat jej.
Nejprve nainstalujte balíček Git na klientský počítač pomocí následujícího příkazu:
apt-get install git -y
Dále vytvořte adresář pro svůj projekt pomocí následujícího příkazu:
mkdir project
Dále přejděte do adresáře projektu a inicializujte Git pomocí příkazu níže:
cd project
git init
Dále nakonfigurujte Git pomocí svého e-mailu a uživatelského jména:
git config --global user.email "[email protected]"
git config --global user.name "user1"
Dále přidejte svůj Git HTTP server pomocí následujícího příkazu:
git remote add origin http://[email protected]/user1.git
Dále vytvořte adresář s názvem dev01 a přidejte do něj soubor:
mkdir dev01
echo "This is my first application" > dev01/file1
Dále přidejte vytvořený adresář a soubor do úložiště Git:
git add .
Dále potvrďte změny pomocí následujícího příkazu:
git commit -a -m "Add files and directories"
Získáte následující výstup:
[master (root-commit) 0299d83] Add files and directories 1 file changed, 1 insertion(+) create mode 100644 dev01/file1
Dále nahrajte svůj soubor a adresář na server HTTP Git pomocí následujícího příkazu:
git push origin master
Budete požádáni o zadání hesla pro přístup na server Git:
Password for 'http://[email protected]':
Jakmile se připojíte, získáte následující výstup:
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
Své úložiště si také můžete stáhnout přímo ze serveru Git pomocí následujícího příkazu:
git clone http://[email protected]domain.com/user1.git
Získáte následující výstup:
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.
Závěr
Ve výše uvedené příručce jste se naučili, jak nastavit HTTP Git server s Nginx na Debianu 11. Nyní můžete toto nastavení implementovat do svého místního vývojového prostředí a spravovat a sledovat svůj projekt pomocí příkazového řádku.