Git
Chapters ▾ 2nd Edition

4.5 Git on the Server - Git Cini (Daemon)

Git Cini (Daemon)

Ş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.

scroll-to-top