Şimdi, repoları "Git" protokolünü kullanarak sunan bir daemon kuracağız. Bu, Git verilerinize hızlı, kimlik doğrulamasız erişim için yaygın bir seçenektir. Unutmayın ki bu kimlik doğrulamasız bir servis olduğundan, bu protokol üzerinden sunduğunuz her şey, ağ içindeki herkese açık olacaktır.
Eğer bunu güvenlik duvarınızın dışında bir sunucuda çalıştırıyorsanız, yalnızca dünya genelinde herkese açık olan projeler için kullanılmalıdır. Eğer çalıştırdığınız sunucu güvenlik duvarınızın içindeyse, birçok insanın veya bilgisayarın (sürekli entegrasyon veya derleme sunucuları gibi) salt okuma erişimine sahip olduğu projeler için kullanabilirsiniz. Böylece her biri için bir SSH anahtarı eklemek zorunda kalmazsınız.
Her durumda, Git protokolü kurulumu nispeten kolaydır. Temel olarak, bu komutu daemon olarak çalıştırmanız gerekmektedir:
$ git daemon --reuseaddr --base-path=/srv/git/ /srv/git/
--reuseaddr
seçeneği, sunucunun eski bağlantıların zaman aşımını beklemeksizin yeniden başlamasına olanak tanırken, --base-path
seçeneği, insanların projeleri tüm yolunu belirtmeden kopyalamasına izin verir.
Dizin ise, Git daemon’a dışa aktarılacak repoları nerede bulacağını söyler.
Eğer bir güvenlik duvarı kullanıyorsanız, bunu kurduğunuz kutunun 9418 numaralı portunda bir delik açmanız da gerekecektir.
Bu işlemi, çalıştırdığınız işletim sistemine bağlı olarak birkaç farklı şekilde demonize edebilirsiniz.
systemd
modern Linux dağılımları arasında en yaygın init sistemi olduğu için bunu kullanabilirsiniz.
Sadece /etc/systemd/system/git-daemon.service
dizinine aşağıdaki içeriğe sahip bir dosya yerleştirin:
[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 daemon’un burada hem grup hem de kullanıcı olarak git
ile başlatıldığını farketmiş olabilirsiniz.
Bunu kendi ihtiyaçlarınıza uyacak şekilde değiştirin ve sağlanan kullanıcının sistemde var olduğundan emin olun.
Ayrıca, Git binary’sinin gerçekten /usr/bin/git
dizininde olduğunu kontrol edin ve gerekirse dizini değiştirin.
Son olarak, systemctl enable git-daemon
komutunu çalıştırarak servisin otomatik olarak başlamasını sağlayabilir, systemctl start git-daemon
komutu ile servisi başlatabilir veya systemctl stop git-daemon
komutu ile durdurabilirsiniz.
Diğer sistemlerde, xinetd
(sysvinit
sisteminizde bir betik) veya başka bir şey kullanmak isteyebilirsiniz.
Yeter ki o komutu bir şekilde demonize edip izleyin.
Sonraki adım olarak, Git’e hangi repoların kimlik doğrulamasız Git sunucu tabanlı erişimine izin vereceğini belirtmelisiniz.
git-daemon-export-ok
adında bir dosya oluşturarak, her repoda bunu yapabilirsiniz.
$ cd /path/to/project.git
$ touch git-daemon-export-ok
Bu dosyanın varlığı, Git’e bu projenin kimlik doğrulamasız hizmet vermesinin uygun olduğunu söyler.