Git
Chapters ▾ 2nd Edition

4.2 Git na strežniku - Pridobitev Gita na strežniku

Pridobitev Gita na strežniku

Sedaj bomo šli skozi nastavitve storitve Git, ki poganja te protokole na vašem lastnem strežniku.

Opomba

Tu bomo demonstrirali ukaze in potrebne korake za osnovne, poenostavljene namestitve na strežnikih, osnovanih na Linuxu, čeprav je možno poganjati te storitve tudi na strežnikih macOS ali Windows. V bistvu bo nastavitev produkcijskega strežnika znotraj vaše infrastrukture zagotovo povzročila razlike v varnostnih ukrepih ali orodjih operacijskih sistemov, vendar upajmo, da vam bo to dalo splošno idejo, kaj je vključeno.

Da se začetno nastavi katerikoli strežnik Git, morate izvoziti obstoječi repozitorij v nov goli repozitorij — repozitorij, ki ne vsebuje delovnega direktorija. To je v splošnem precej enostavno narediti. Da klonirate svoj repozitorij, da ustvarite nov goli repozitorij, poženite ukaz kloniranja z možnostjo --bare. Po dogovoru se direktoriji golega repozitorija končajo z .git:

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

Sedaj bi morali imeti kopijo podatkov direktorija Git v vašem direktoriju my_project.

To je v grobem enakovredno nečemu takemu:

$ cp -Rf my_project/.git my_project.git

V nastavitveni datoteki je nekaj manjših razlik; vendar za vaše namene je to blizu podobne stvari. Vzame sam repozitorij Git brez delovnega direktorija in ustvari direktorij posebej zanj.

Dodajanje golega repozitorija na strežnik

Sedaj, ko imate golo kopijo svojega repozitorija, je vse, kar morate narediti, da ga daste na strežnik in nastavite svoje protokole. Recimo, da ste nastavili strežnik imenovan git.example.com, do katerega imate dostop SSH, in želite shraniti vse vaše repozitorije Git pod direktorij /srv/git. Če predpostavljamo, da /srv/git obstaja na tem strežniku, lahko nastavite vaš novi repozitorij s kopiranjem vašega golega repozitorija preko:

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

Na tej točki lahko ostali uporabniki, ki imajo dostop SSH do istega strežnika, ki ima bralni dostop do direktorija /srv/git, klonirajo vaš repozitorij s pogonom:

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

Če se uporabnik prijavi preko SSH v strežnik in ima pisalni dostop do direktorija /srv/git/my_project.git, bo imel avtomatično tudi dostop potiskanja.

Git bo avtomatično ustrezno dodal skupino pravic pisanja k repozitoriju, če poženete ukaz git init z možnostjo --shared. Upoštevajte, saj zagon tega ukaza med postopkom ne bo uničil nobenih potrditev, referenc itd.

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

Vidite, kako enostavno je narediti repozitorij Git, ustvariti golo različico in ga postaviti na strežnik, do katerega imate vi in vaši sodelavci dostop preko SSH. Sedaj ste pripravljeni na sodelovanje na istem projektu.

Pomembno je omeniti, da je to dobesedno vse, kar morate pognati za uspešen strežnik Git, do katerega ima dostop več ljudi — na strežnik samo dodajte račune, ki imajo dostop SSH, in dodajte goli repozitorij nekam, da imajo vsi tisti uporabniki bralni in pisalni dostop do njega. Pripravljeni ste za pogon — nič drugega ni potrebnega.

V naslednjih nekaj razdelkih boste videli, kako to razširiti na bolj prefinjene nastavitve. Ta diskusija bo vključevala, da ni treba ustvariti uporabniških računov za vsakega uporabnika, dodajanje javnega bralnega dostopa k repozitorijem, nastavljanje spletnih uporabniških vmesnikov in več. Vendar pomnite, da za sodelovanje z več ljudmi na zasebnem projektu je vse, kar morate imeti, strežnik SSH in goli repozitorij.

Majhne nastavitve

Če gre za manjše stvari ali samo poskušate Git v vaši organizaciji in imate samo nekaj razvijalcev, so stvari lahko enostavne za vas. Eden najbolj zapletenih vidikov nastavljanja strežnika Git je upravljanje uporabnikov. Če želite, da je nekaj repozitorijev samo bralnih za določene uporabnike in bralno/pisalnih za ostale, je lahko malo bolj zahtevno urediti dostop in pravice.

Dostop SSH

Če imate strežnik, do katerega imajo dostop SSH že vsi vaši razvijalci, je v splošnem najenostavnejše nastaviti vaš prvi repozitorij tam, saj vam ni treba opraviti skoraj nič dela (kot smo pokrili v zadnjem razdelku). Če želite na svojih repozitorijih bolj kompleksen tip kontrole dostopa pravic, jih lahko upravljate z običajnimi pravicami datotečnega sistema operacijskega sistema, na katerem teče vaš strežnik.

Če želite postaviti svoje repozitorije na strežnik, ki nima računov za vsakogar v vaši ekipi, za katero želite imeti dostop pisanja, morate zanje nastaviti dostop SSH. Predpostavljamo, da če imate strežnik, s katerim to naredite, imate že nameščen strežnik SSH, in to je način, kako dostopate do strežnika.

Na voljo je nekaj načinov, na katere lahko daste dostop za vse v svoji ekipi. Najprej se morajo nastaviti računi za vsakogar, kar je enostavno vendar okorno. Morda ne želite poganjati adduser (ali morebitne alternative useradd) in nastavljati začasnih gesel za vsakega uporabnika.

Drugi način je ustvariti enega uporabnika git na napravi, prositi vsakega uporabnika, ki bo imel pisalni dostop, da vam pošlje javni ključ SSH in dodati ta ključ v datoteko ~/.ssh/authorized_keys vašega novega uporabnika git. Na tej točki bo vsak lahko dostopal do te naprave preko uporabnika git. To ne vpliva na podatke potrditev na kakršenkoli način — uporabnik SSH, s katerim se povezujete, ne vpliva na potrditve, ki jih snemate.

Drug način je, da mora vaš strežnik SSH overiti iz strežnika LDAP ali nekega drugega osrednjega overitvenega vira, ki ga že morda imate nastavljenega. Dokler lahko vsak uporabnik dobi lupinski dostop na napravi, bi moral delati katerikoli overitveni mehanizem SSH, ki si ga lahko zamislite.

scroll-to-top