Git
Chapters ▾ 2nd Edition

4.5 Гит на серверу - Гит демон

Гит демон

Сада ћемо подесити демон који сервира репозиторијуме преко „Гит” протокола. Ово је чест избор за брз неаутентификован приступ Гит подацима. Запамтите да ово није аутентификован сервис, и све што сервирате преко овог протокола ће бити јавно на тој мрежи.

Ако покрећете ово на серверу ван свог фајервола, требало би да га користите само за пројекте који су јавно видљиви свету. Ако је сервер који користите унутар фајервола, можете га користити за пројекте којима велики број људи или рачунара (континуална интеграција или сервери за изградњу) има приступ само за читање, а када не желите да додајете SSH кључ за свакога.

У сваком случају, Гит протокол је релативно једноставан за подешавање. У суштини, следећу команду треба да покренете демонизовану:

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

Опција --reuseaddr дозвољава серверу да се рестартује, без потребе за чекањем да старе конекције прво истекну, опција --base-path омогућава људима да клонирају пројекат без потребе да наводе комплетну путању, а путања на крају говори Гит демону где да тражи репозиторијуме за извоз. Ако имате укључен фајервол, мораћете и да отворите порт 9418 на машини на којој ово подешавате.

Овај процес можете демонизовати на неколико начина, зависно од тога који оперативни систем извршавате на машини.

Пошто је systemd најраспрострањенији систем за иницијализацију у модерним Линукс дистрибуцијама, можете га употребити за ову сврху.

[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

Можда сте приметили да се овде Гит демон покреће тако да је git и група и корисник. Промените име тако да одговара вашим потребама и обезбедите да тај корисник постоји на систему. Такође, проверите да ли се Гит бинарни фајл заиста налази у /usr/bin/git, па у случају потребе, промените путању.

На крају, извршићете systemctl enable git-daemon чиме се сервис аутоматски покреће приликом подизања система, а сервис можете да покренете и зауставите са systemctl start git-daemon и systemctl stop git-daemon респективно.

На осталим системима бисте могли да употребите xinetd, скрипту у sysvinit систему, или нешто друго — штагод вам омогућава да некако демонизујете комаду и да је надгледате.

Затим, програму Гит морате навести којим репозиторијумима треба да дозволи неаутентификован приступ базиран на Гит серверу. То можете да урадите у сваком репозиторијуму тако што креирате фајл под именом git-daemon-export-ok.

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

Присуство тог фајла говори програму Гит да је у реду да овај пројекат сервира без аутентификације.