Sådan installeres HTTP Git Server med Nginx på Ubuntu 16.04

Git er et gratis og open source-versionsstyringssystem, der kan bruges til at spore ændringer af kode. Git giver dig mulighed for at oprette mange lagre til den samme applikation og koordinere arbejdet med disse filer blandt flere personer. Det bruges primært til kildekodehåndtering i softwareudvikling.

I denne artikel lærer vi, hvordan du installerer en HTTP Git Server med Nginx på Ubuntu 16.04.

Krav

  • Frisk Ubuntu 16.04-server installeret på dit system.
  • Sudo bruger med root privilegier.
  • Statisk IP-adresse 192.168.15.189 konfigureres på din server

1 Kom godt i gang

Før du starter, skal du opdatere dit system med den nyeste stabile version.

Du kan gøre dette ved at køre følgende kommando:

sudo apt-get opdatering -y
sudo apt-get opgradering -y

Når systemet er opdateret, skal du genstarte dit system og logge ind med sudo-brugeren.

2 Installer nødvendige pakker

Først skal du installere nogle nødvendige pakker, herunder nginx, git, nano og fcgiwrap til dit system. Du kan installere dem alle ved at køre følgende kommando:

sudo apt-get install nginx git nano fcgiwrap apache2-utils -y

Når alle de nødvendige pakker er installeret, skal du oprette en mappe til Git-depot. Du kan gøre dette ved at køre følgende kommando:

sudo mkdir / var / www / html / git

Dernæst giv retlig tilladelse til Git-mappen:

sudo chown -R www-data: www-data / var / www / html / git

Når du er færdig, kan du fortsætte med at konfigurere Nginx webserver.

3 Konfigurer Nginx

Først skal du konfigurere Nginx for at videregive Git-trafik til Git. Du kan gøre dette ved at redigere Nginx standard konfigurationsfil:

sudo nano / etc / nginx / sites-available / default

Skift filen som vist nedenfor:

# Standard server konfiguration # server {lyt 80 default_server; lyt [::]: 80 default_server; root / var / www / html / git; # Tilføj index.php til listen, hvis du bruger PHP indeks index.html index.htm index.nginx-debian.html; server navn _; placering / {# Første forsøg på at betjene anmodning som fil, derefter # som mappe, og fald derefter tilbage for at vise en 404. try_files $ uri $ uri / = 404; } placering ~ (/.*) {client_max_body_size 0; # Git pushes kan være massiv, bare for at sikre, at nginx ikke pludselig skærer forbindelsen, tilføj dette. auth_basic "Git login"; # Hvilken tekst som helst vil gøre. auth_basic_user_file "/ var / www / html / git / htpasswd"; inkludere / etc / nginx / fastcgi_params; # Inkluder standard fastcgi configs fastcgi_param SCRIPT_FILENAME / usr / lib / git-core / git-http-backend; # Fortæller fastcgi at sende anmodningen til git http backend eksekverbar fastcgi_param GIT_HTTP_EXPORT_ALL ""; fastcgi_param GIT_PROJECT_ROOT / var / www / html / git; # / var / www / git er placeringen af ​​alle dine git repositories. fastcgi_param REMOTE_USER $ remote_user; fastcgi_param PATH_INFO $ 1; # Tar optagelsesgruppen fra vores lokaliseringsdirektiv og giver git det. fastcgi_pass unix: /var/run/fcgiwrap.socket; # Send anmodningen til fastcgi}}

Gem og luk filen, når du er færdig. Test derefter Nginx for enhver konfigurationsfejl med følgende kommando:

sudo nginx -t

Hvis alting er fint, skal du se følgende output:

nginx: konfigurationsfilen /etc/nginx/nginx.conf syntaks er ok nginx: konfigurationsfilen /etc/nginx/nginx.conf testen er vellykket

Derefter skal du oprette en brugerkonto, som du skal bruge til at gennemse forpligter til depotet. Du kan oprette bruger med navn hitesh ved at bruge htpasswd-hjælpeprogrammet:

sudo htpasswd -c / var / www / html / git / htpasswd hitesh

Endelig genstart Nginx for at anvende alle ændringerne med følgende kommando:

sudo systemctl genstart nginx

Du kan kontrollere status for Nginx-serveren med følgende kommando:

sudo systemctl status nginx

Du skal se følgende output:

?? nginx.service - En højtydende webserver og en omvendt proxyserver Loaded: loaded (/lib/systemd/system/nginx.service; enabled; leverandør forudindstillet: aktiveret) Aktiv: aktiv (kører) siden Tue 2017-06-20 23 : 00: 11 IST; 51min ago Process: 12415 ExecStop = / sbin / start-stop-daemon --quiet --stop --retry QUIT / 5 --pidfile /run/nginx.pid (kode = afsluttet, status = 0 / SUCCESS) Proces: 7616 ExecReload = / usr / sbin / nginx -g daemon on; master_process på; -s reload (kode = exited, status = 0 / SUCCESS) Proces: 12423 ExecStart = / usr / sbin / nginx -g daemon på; master_process på; (kode = afsluttet, status = 0 / SUCCESS) Proces: 12419 ExecStartPre = / usr / sbin / nginx -t -q -g daemon on; master_process på; (kode = afsluttet, status = 0 / SUCCESS) Hoved PID: 12427 (nginx) CGroup: /system.slice/nginx.service ?????? 12427 nginx: masterproces / usr / sbin / nginx -g daemon on; master_process på 12431 nginx: arbejdsproces Jun 20 23: 00: 11 localhost systemd [1]: Stoppet En højtydende webserver og en omvendt proxyserver. Jun 20 23: 00: 11 localhost systemd [1]: Start En højtydende webserver og en omvendt proxyserver ... Jun 20 23: 00: 11 localhost systemd [1]: nginx.service: Kunne ikke læse PID fra fil /run /nginx.pid: Ugyldigt argument Jun 20 23: 00: 11 localhost systemd [1]: Startet En højtydende webserver og en omvendt proxyserver.

4 Opret Git Repository

Når alt er konfigureret korrekt, er det tid til at oprette Git-depot.

Du kan oprette depot med navnet repo.git med følgende kommando:

cd / var / www / html / git
sudo mkdir hitesh.gitt
sudo git -bare initt
sudo git opdatering-server-info
sudo chown -R www-data.www-data.
sudo chmod -R 777.

Derefter skal du tillade http-service via UFW-firewall. UFW er som standard deaktiveret på dit system, så du skal aktivere det først. Du kan aktivere det med følgende kommando:

sudo ufw aktivere

Når UFW-firewall er aktiveret, kan du tillade HTTP-service ved at køre følgende kommando:

sudo ufw tillader http

Du kan nu kontrollere status for UFW firewall ved at køre følgende kommando:

sudo ufw status

Ok, det er det til server side konfiguration. Du kan nu gå videre til klientsiden for at teste Git.

5 Test Git på Client Machine

Før du starter, skal du installere git på klientsystemet. Du kan installere det med følgende kommando:

sudo apt-get install git -y

Opret først et lokalt arkiv med følgende kommando:

sudo mkdir ~ / testprojekt

Derefter skal du ændre mappen til testprojekt og starte det nye fjernlager med følgende kommando:

cd ~ / testprojekt
git init
git remote add oprindelse http: //hitesh@192.168.15.189/hitesh.git

Opret derefter nogle filer og mappe med følgende kommando:

mkdir test1 test2 test3
ekko "Dette er mit første depot"> test1 / repo1
ekko "Dette er mit andet depot"> test2 / repo2
ekko "Dette er mit tredje depot"> test3 / repo3

Kør derefter følgende kommando for at tilføje alle filer og mapper til depotet:

git add.
git commit -a -m "Tilføj filer og directoires"

Du skal se følgende output:

[master 002fac9] Tilføj filer og directories 3 filer ændret, 3 insertions (+) create mode 100644 repo1 opret tilstand 100644 repo2 opret tilstand 100644 repo3

Dernæst skub alle filer og mapper til Git-serveren med følgende kommando:

git push origin master

Du skal se følgende output:

Adgangskode til 'http: // hitesh @ 192.168.15.189': Tæller objekter: 6, færdig. Delta kompression med op til 4 tråde. Komprimering af objekter: 100% (2 / 2), færdig. Skriveobjekter: 100% (5 / 5), 422 bytes | 0 bytes / s, færdig. I alt 5 (delta 0), genanvendt 0 (delta 0) Til http: //hitesh@192.168.15.189/hitesh.git 68f1270..002fac9 master -> master

Nu har alle dine filer og mapper været forpligtet til din Git-server.

Dit Git repository oprettelsesproces er nu afsluttet. Du kan nu nemt klone dit lager i fremtiden. Du kan klone dit depot ved hjælp af følgende kommando på fjernsystem:

git klon hitesh @ 192.168.15.189: /var/www/html/git/hitesh.git

Du skal se følgende output:

Kloning i 'hitesh' ... hitesh @ 192.168.15.189's kodeord: remote: Tæller objekter: 8, færdig. fjernbetjening: Komprimering af objekter: 100% (3 / 3), færdig. Modtag objekter: 100% (8 / 8), 598 bytes | 0 bytes / s, færdig. fjernbetjening: I alt 8 (delta 0), genbrugt 0 (delta 0) Kontrol af tilslutning ... færdig.

Nu ændrer du mappen til det klonede arkiv med følgende kommando:

cd hitesh
træ

Du skal se følgende output:

. | - test1 | `- repo1 | - test2 | `- repo2` - test3 `- repo3 3-mapper, 3-filer

Konklusion

Jeg håber du kan nu nemt skubbe, trække, klone og begå kildekode ved hjælp af Git-serveren. Du er velkommen til at kommentere mig, hvis du er i tvivl.

Kilde

Giv en kommentar

Dette websted bruger Akismet til at reducere spam. Lær, hvordan dine kommentardata behandles.