Git 🌙
Chapters â–Ÿ 2nd Edition

4.5 Git pÄ servern - Git Daemonen

Git Daemonen

Nu skall vi konfigurera en daemon som tillhandahĂ„ller repon över “Git” protokollet. Det Ă€r vanligt för snabb icke-autentiserad Ă„tkomst till din Gitdata. Kom ihĂ„g att, eftersom detta inte Ă€r en autentiserad tjĂ€nst, kommer allt du skickar över protokollet att vara publikt inom dess nĂ€tverk.

Om du kör detta pÄ en server utanför din brandvÀgg, skall det bara anvÀndas för projekt som Àr publikt synliga för hela vÀrlden. Om servern du kör pÄ ligger innanför din brandvÀgg kan du anvÀnda den för projekt som ett stort antal mÀnniskor eller datorer (integrations- eller byggservrar) bara har lÀsrÀttigheter till och du inte vill lÀgga till en separat SSH-nyckel för varje.

Oavsett vilket Àr Gitprotokollet relativt lÀtt att konfigurera. Du behöver i praktiken bara köra detta kommando som en daemonprocess:

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

Flaggan --reuseaddr tillÄter att servern startar om utan att vÀnta pÄ att gamla anslutningar dör ut, medan flaggan --base-path tillÄter folk att klona projekt utan att specificera hela sökvÀgen. SökvÀgen i slutet talar om för Gitdaemonen var den skall leta efter repon för att exportera. Om du kör en brandvÀgg, kommer du behöva öppna upp port 9418 pÄ den maskin du konfigurerar detta pÄ.

Du kan daemonisera processen pÄ olika sÀtt, beroende pÄ ditt operativsystem.

Eftersom systemd Àr det vanligatste init-systemet pÄ moderna Linuxdistributioner kan du anvÀnda den för ÀndamÄlet. LÀgg helt enkelt en fil i /etc/systemd/system/git-daemon.service med följande innehÄll:

[Unit]
Description=Start Git Daemon

[Service]
ExecStart=/usr/bin/git daemon --reuseaddr --base-path=/srv/git/ /srv/git/

Restart=always
RestartSec=500ms

StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=git-daemon

User=git
Group=git

[Install]
WantedBy=multi-user.target

Du kanske har noterat att Gitdaemonen startas med git som bÄde grupp och anvÀndare. Modifiera dem för att passa dina behov och sÀkerstÀll att anvÀndaren och gruppen existerar pÄ systemet. Kontrollera ocksÄ att GitbinÀren Àr tillgÀnglig pÄ /usr/bin/git och Àndra sökvÀgen om nödvÀndigt.

Slutligen behöver du köra systemctl enable git-daemon för att automatiskt starta tjÀnsten vid uppstart, och starta och stoppa tjÀnsten med systemctl start git-daemon respektive systemctl stop git-daemon.

Upp till och med LTS 14.04, anvÀnde Ubuntu enhetskonfiguration av uppstartstjÀnster. DÀrför, pÄ Ubuntu 14.04 och tidigare kan du anvÀnda ett uppstartsskript. SÄ dÀrför, i följande fil

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

lÀgger du följande skript:

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

Av sĂ€kerhetsskĂ€l Ă€r det starkt rekommenderat att denna daemon körs som en anvĂ€ndare med enbart lĂ€srĂ€ttigheter till dina repon — du kan lĂ€tt göra detta genom att skapa en ny anvĂ€ndare git-ro och köra daemonen som den. För enkelhets skull kommer vi köra den som samma git-anvĂ€ndare som git-shell kör som.

NÀr du startar om din maskin kommer din Gitdaemon starta automatiskt och Äterstartas om den stoppas. För att starta den utan att behöva starta om kan du köra:

$ initctl start local-git-daemon

PĂ„ andra system kanske du vill anvĂ€nda xinetd, ett skript i ditt sysvinit-system eller nĂ„got annat — sĂ„ lĂ€nge som kommandot Ă€r daemoniserat och övervakas pĂ„ nĂ„got sĂ€tt.

Nu behöver du tala om för Git vilka repon som tillÄts icke-autentiserad Gitserverbaserad Ätkomst till. Du kan göra detta för varje repo genom att skapa en fil som heter git-daemon-export-ok.

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

NÀrvaron av den filen talar om för Git att det Àr OK att tillhandahÄlla det projektet utan autentisering.

scroll-to-top