Chapters ▾ 2nd Edition

4.5 Git på servern - Git-demon

Git-demon

Nu konfigurerar vi upp en demon som levererar kodförråd via "Git"-protokollet. Det är ett vanligt val för snabb, icke-autentiserad åtkomst till Git-data. Kom ihåg att eftersom tjänsten inte är autentiserad är allt du serverar via protokollet offentligt inom nätverket.

Om du kör detta på en server utanför din brandvägg ska det bara användas för projekt som är offentliga. Om servern ligger innanför brandväggen kan du använda det för projekt som många personer eller maskiner (till exempel CI- eller byggservrar) bara behöver läsa, och där du inte vill lägga till en SSH-nyckel per användare.

Oavsett vilket är Git-protokollet ganska lätt att sätta upp. I praktiken kör du kommandot som en bakgrundsprocess:

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

Flaggan --reuseaddr gör att servern kan starta om utan att vänta på gamla anslutningar, --base-path gör att användare kan klona utan att ange hela sökvägen, och sökvägen i slutet talar om var demonen ska leta efter kodförråd att exportera. Om du kör brandvägg behöver du också öppna port 9418 på maskinen.

Du kan demonisera processen på flera sätt beroende på operativsystem.

Eftersom systemd är det vanligaste init-systemet på moderna Linuxdistributioner kan du använda det. Lägg 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 ser att demonen startas med git som både användare och grupp. Ändra det efter behov och se till att användaren finns. Kontrollera även att Git-binären ligger på /usr/bin/git och ändra sökvägen om det behövs.

Till sist kör du systemctl enable git-daemon för att starta tjänsten automatiskt vid uppstart, och du kan starta och stoppa den med systemctl start git-daemon respektive systemctl stop git-daemon.

På andra system kan du använda xinetd, ett skript i sysvinit eller något annat – så länge kommandot körs som demon och övervakas.

Nästa steg är att tala om för Git vilka kodförråd som får icke-autentiserad Git-åtkomst. Det gör du per kodförråd genom att skapa en fil som heter git-daemon-export-ok.

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

När filen finns där vet Git att det är okej att servera projektet utan autentisering.