Git
Chapters ▾ 2nd Edition

4.5 Git na serveru - Démon Git

Démon Git

Dále si zřídíme si démona pro obsluhu repozitářů přes protokol „Git“. Jde o obvyklou volbu, pokud potřebujeme rychlý přístup ke gitovým datům bez nutnosti autentizace. Pamatujte na to, že se jedná o službu bez ověřování totožnosti, a proto vše, co budete tímto protokolem obsluhovat, bude uvnitř sítě pokládáno za veřejné.

Pokud protokol používáte na serveru mimo firewall, měl by být použit pouze pro projekty, které jsou veřejně viditelné okolnímu světu. Pokud je server, na kterém protokol provozujete, uvnitř firewallu, můžete ho používat u projektů, k nimž má mít velký počet lidí nebo počítačů přístup pouze pro čtení (servery průběžné integrace nebo servery sestavení) a nechcete pro každého z nich přidávat SSH klíč.

Na protokolu Git každopádně oceníte jeho snadné nastavení. V podstatě je třeba následujícím příkazem spustit gitového démona:

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

Volba --reuseaddr umožňuje serveru restartování bez nutnosti čekat na vypršení časového limitu pro stará spojení, volba --base-path umožňuje uživatelům klonovat projekty, aniž by museli zadávat celou cestu, a cesta na konci příkazu říká démonu Git, kde má hledat repozitáře určené k exportu. Jestliže používáte bránu firewall, budete do ní muset na daném počítači provrtat díru pro port 9418.

Proces démona můžete spustit mnoha způsoby — v závislosti na tom, jaký operační systém používáte. U počítačů s Ubuntu můžete použít skript Upstart. Do souboru

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

vložte tento skript:

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

Z bezpečnostních důvodů důrazně doporučujeme, aby byl tento démon spuštěn jako uživatel, který má k repozitářům oprávnění pouze pro čtení. To lze snadno zajistit vytvořením nového uživatele git-ro a spuštěním démona s jeho oprávněními. Pro zjednodušení jej prostě spustíme pod stejným uživatelem git, pod kterým běží git-shell.

Při restartování počítače se gitový démon spustí automaticky. V případě pádu démona bude jeho činnost automaticky obnovena (respawn). Pokud ho chcete spustit aniž byste museli počítač restartovat, použijte následující příkaz:

$ initctl start local-git-daemon

V jiných systémech možná budete chtít použít xinetd, skript systému sysvinit, nebo nějaký podobný skript — umožní-li vám dosáhnout démonizovaného příkazu, který je nějak hlídán.

Dále musíte Gitu říct, ke kterým repozitářům povolíte neautentizovaný přístup přes gitový server. Můžete to udělat tak, že v každém repozitáři vytvoříte soubor pojmenovaný git-daemon-export-ok.

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

Přítomnost tohoto souboru Gitu sděluje, že obsluha daného projektu nevyžaduje ověřování totožnosti.