Git
Chapters ▾ 2nd Edition

4.5 Git on the Server - Git Daemon

Git Daemon

Sada ćemo podesiti demona koji servira repozitorijume preko "Git" protokola. Ovo je čest izbor za brz neautentifikovan pristup podacima sa Gita. Zapamtite da se ovo nije autentifikovan servis, i sve što servirate preko ovog protokola će biti javno na toj mreži.

Ako pokrećete ovo na serveru van svog fajervola, trebalo bi da ga koristite samo za projekte koji su javno vidljivi svetu. Ako je server koji koristite unutar fajervola, možete ga koristiti za projekte kojima veliki broj ljudi ili računara (kontinualna integracija ili bild-serveri) ima pristup za čitanje, kada ne želite da morate da dodajete SSH ključ za svakoga.

U svakom slučaju, Git protokol je relativno jednostavan za podešavanje. U suštini, treba da pokrenete ovu komandu na demonski način:

$ git daemon --reuseaddr --base-path=/opt/git/ /opt/git/

Opcija --reuseaddr dozvoljava serveru da se restartuje a da ne čeka stare konekcije da dobiju tajmaut, opcija --base-path omogućava ljudima da kloniraju projekat ne specificirajući pritom celu pitanju, a putanja na kraju govori Git demonu gde da traži repozitorijume za eksportovanje. Ako imate uključen fajervol, moraćete i da napravite rupu u njemu na portu 9418 na boksu na kome podešavate ovo.

Možete demonizirati ovaj proces na nekoliko načina, u zavisnosti od toga koji operativni sistem imate instaliran. Na Ubuntu mašini, možete da koristite Upstart skriptu. Dakle, u sledećoj datoteci

/etc/init/local-git-daemon.conf

postavite ovu skriptu:

start on startup
stop on shutdown
exec /usr/bin/git daemon \
    --user=git --group=git \
    --reuseaddr \
    --base-path=/opt/git/ \
    /opt/git/
respawn

Iz sigurnostih razloga, strogo se savetuje da ovaj demon pokrenete kao korisnik koji ima samo pristup čitanju repozitorijuma — ovo možete lako da uradite tako što ćete kreirati novog korisnika "git-ro" i pokrenuti demona preko njega. Radi jednostavnosti, mi ćemo ga jednostavno pokrenuti preko istog korisnika "git" koji izvršava git-shell onakav kakav je.

Kada restartujete mašinu, vaš Git demon će početi automatski da se ponovos stvara ako padne. Da ga pokrenete a da ne morate da restartujete server, možete pokrenuti sledeće:

$ initctl start local-git-daemon

Na drugim sistemima treba da koristite xinetd, skriptu u vašem sysvinit sistemu, ili nešto drugo — sve dok tu komandu nekako možete da demonizirate i stavite je u mod za nadgledanje.

Zatim treba da kažete Gitu prema kojim repozitorijuma treba da obezbedi neautentifikovani pristup preko Git servera. Ovo možete uraditi u svakom repozitorijumu kreiranjem datoteke sa imenom git-daemon-export-ok.

$ cd /path/to/project.git
$ touch git-daemon-export-ok

Prisutnost tog fajla govori Gitu da je OK da servira ovaj projekat bez autentifikacije.