Git 🌙
Chapters ▾ 2nd Edition

4.5 Git na serwerze - Git Daemon

Git Daemon

Teraz skonfigurujemy demona obsługującego repozytoria poprzez protokół "Git". Jest to najczęstszy wybór dla szybkiego, nieuwierzytelnionego dostępu do danych Git. Pamiętaj, że ponieważ nie jest to usługa uwierzytelniona, wszystko co udostępniasz przez ten protokół jest publiczne w obrębie jego sieci.

Jeśli używasz projektu na serwerze poza firewallem, powinieneś stosować ten protokół jedynie do projektów, które są publicznie widoczne dla świata. Jeśli serwer, którego używasz znajduje się wewnątrz sieci z firewallem, możesz również użyć go do projektów używanych przez wiele ludzi i komputerów (ciągła integracja lub budowa serwera) mających dostęp tylko do odczytu, jeśli nie chcesz dodawać klucza SSH dla każdego.

W każdym bądź razie, protokół Git jest stosunkowo prosty w konfiguracji. Po prostu, musisz uruchomić komendę poprzez demona:

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

--reuseaddr pozwala serwerowi na restart bez konieczności czekania na zakończenie starych połączeń, natomiast opcja --base-path pozwala ludziom na klonowanie bez konieczności podawania całej ścieżki, a ścieżka na końcu mówi Git demonowi, które repozytorium mają zostać eksportowane. Jeśli używasz firewalla, będziesz musiał dodać regułę otwarcia portu 9418 w oknie ustawień swojego firewalla.

Możesz zdemonizować ten proces na wiele sposobów, w zależności od używanego systemu. Na maszynie z Ubuntu możesz użyć skryptu Upstart. W poniższym pliku:

/etc/event.d/local-git-daemon

zamieszczasz ten skrypt:

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

Ze względów bezpieczeństwa, zaleca się do korzystania z demona jako użytkownik z uprawnieniami tylko do odczytu dla danego repozytorium – możesz łatwo to zrobić tworząc nowego użytkownika git-ro i uruchamiając demona jako ten użytkownik. Dla uproszczenia będziemy używać tego samego użytkownika git, jako który działa git-shell.

Kiedy zrestartujesz maszynę, Twój Git demon wystartuje automatycznie jeśli był wyłączony. Aby uruchomić go bez restartu, możesz użyć polecenia:

$ initctl start local-git-daemon

Na innych systemach, możesz użyć xinetd, skryptu w folderze systemowym sysvinit, lub inaczej – tak długo jak będziesz demonizował to polecenie i obserwował jakoś.

Następnie musisz powiedzieć Gitowi, do których repozytoriów pozwolić na nieuwierzytelniony dostęp oparty na serwerze Git. Możesz to zrobić w każdym repozytorium poprzez utworzenie pliku o nazwie git-daemon-export-ok.

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

Obecność tego pliku mówi Gitowi, że można udostępniać ten projekt bez uwierzytelniania.

scroll-to-top