Git
Chapters ▾ 2nd Edition

4.2 Git on the Server - Postavljanje Gita na server

Postavljanje Gita na server

Sada ćemo pokriti podešavaje Git servisa i pokretanje ovih servisa na vašem sopstvenom serveru.

Note

Ovde ćemo demonstrirati komande i korake neophodne radi osnovne, pojednostavljene instalacije na serveru baziranom na Linuksu, mada je moguće pokenuti ove servise i na Mekovim ili Vindouzovim serverima. Zapravo, postavljanje produkcionog servera u sa vašom vlastitom infrastrukturom će nesumnjivo imati razlike po pitanju sigurnosti i alataima koje pruža operativni sistem, ali nadamo se da će vam ovo dati opštu sliku o tome šta treba uraditi.

Kako biste inicijalno postavili bilo koji Git server, morate prvo da eksportujete postojeći repozitoijum u go repozitorijum — repozitoijum koji ne sadrži radni direktorijum. Ovo je obično jednostavno uraditi. Da biste klonirali svoj repozitorijum i napravili novi go repozitorijum, možete da pokrenete komandu clone uz opciju --bare. Po konvenciji, goli repozitorijumi se završavaju sa .git, na primer:

$ git clone --bare my_project my_project.git
Cloning into bare repository 'my_project.git'...
done.

Sada bi trebalo da imate kopiju podataka iz Git direktorijuma u direktorijumu my_project.git.

Grubo rečeno, ovo je ekvivalentno sa sledećim.

$ cp -Rf my_project/.git my_project.git

Postoji nekoliko malih razlika u konfiguracionom fajlu; ali za ovu svrhu, u pitanju je dovoljno približna alternativa. Ova komanda uzima sâm Git repozitojum, bez radnom direktorijuma, i kreira direktorijum namenjn posebno njemu.

Postavljanje golog repozitorijuma na server

Sada kada imate golu kopiju repozitorijuma, sve što treba da uradite jeste da je okačite na server i postavite protokole. ecimo da ste postavili server git.example.com kome imate SSH pristup, i želite da uskladištite sve svoje Git repozitorijume pod direktorijum /srv/git. Pod pretpostavkom da /srv/git postoji na tom serveru, možete da podesite novi repozitorijum tako što ćete tamo iskopirati svoj goli repozitorijum:

$ scp -r my_project.git user@git.example.com:/srv/git

Sada i drugi korisnici koji imaju SSH pristup istom serveru i pristup za čitanje direktorijuma /srv/git mogu da kloniraju vaš repozitorijum pokretanjem

$ git clone user@git.example.com:/srv/git/my_project.git

Ako korisnik SSH-uje do servera i ima pristup pisanja direktorijumu /srv/git/my_project.git, automatski će imati i privilegiju da guraju izmene.

Git će automatski dodati grupne dozvole za upis u repozitorijum ako pokrenete komandu git init suz opciju --shared.

$ ssh user@git.example.com
$ cd /srv/git/my_project.git
$ git init --bare --shared

Vidite koliko je jednostavno uzeti Git repozitorijum, kreirati njegovu golu verziju, i postaviti je na server kome vi i vaši kolaboratori imaju SSH pristup. Sada ste spremni za kolaboraciju nad istim projektom.

Važno je da primetiti da je ovo buvkalno sve što treba da uradite da pokrenete koristan Git server kome nekoliko ljudi ima pristup — samo dodajte naloge koji podržavaju SSH na server i postavite goli repozitorijum negde gde svi ti korisnicima imaju pristup za čitanje i upis. Spremni ste da krenete — ništa više vam nije potrebno.

U sledećih nekoliko odeljaka, videćete kako da načinete neka sofisticiranija podešavanja. Ova diskusija će uključiti i to da ne morate da kreirate korisničke naloge za svakog korisnika, zatim dodavanje javnog pristupa za čitanje repozitorijumima, podešavanje veb korisničkih interfejsa i još toga. Ipak, imajte na umu da za kolaboraciju sa nekoliko ljudi na privatnom projektu, sve što vam je potrebno je SSH server i goli repozitorijum.

Mala podešavanja

Ako ste mala grupa ljudi ili jednostavno isprobavate Git za svoju organizaciju i imate samo nekoliko developera, stvari mogu biti dosta jednsotavne za vas. Jedan od najkomplikovanihih aspekata podešavanja Git servera je upravljanje korisnicima. Ako želite da neki repozitorijumi budu dostupni samo za čitanje, a drugima i za čitanje i za upis, pristup i permisije mogu biti nešto komplikovanije za podešavanje.

SSH pristup

Ako imate server kome svi developeri već imaju SSh pristup, u opštem slučaju je najjednostavnije tamo pdoesiti prvi repozitorijum, jer skoro ništa dodatno ne treba da uradite (kao što smo videli u prethodnom odeljku). Ako želite složeniju kontrolu pristupa nad repozitorijumima, možete pristupiti tom problemu koristeći uobičajene permisije za sistem datoteka koji ima oeprativni sistem koji je podignut na vašem serveru.

Ako želite da postavite svoje repozitorijume na server koji nema naloge za svaku osobuiz time kojoj želite da dodelite privilegije pisanja, morate podesiti SSH za svakog od njih. Pretpostavljamo da ako želite server kojim ovo možete ostvariti, već imate instaliran SSH i da tako pristupate serveru.

Ima nekoliko načina na koje možete svima iz tima dozvoliti pristup. Prvi je da podesite naloge za svakoga, što je jednostavno ali može biti zamorno. Možda ne želite da pokrećete adduser i da podesite privremenu šifru za svakog korisnika.

Druga metoda je da kreirate jedistvenog korisnika "git" namašini i da pitate svakog korisnika ko ima pristup za upis na server da vam pošalje svoj javni SSH ključ, i da dodate taj ključ u fajl ~/.ssh/authorized_keys novog korisnika "git". Sada svi mogu da pristupe mašini kroz korisnika "git". Ovo ni na koji način ne utiče na komitovane podatke — SSh korisnice koje povezujete ne utiču na komitove koje beležite.

Drugi način da uradite ovo jeste da podesite stvari tako da se vaš SSh server autentifikuje pomoću LDAP servera ili nekog drugog centralizovanog izvora autentifikacije kog ste već pokrenuli. Sve dok svaki korisnik ima pristup mašini preko šela, bilo koji mehanizam za autentifikaciju preko SSH-a treba da uspe.