3

Git sunucusu nasıl kurulur?

Git sunucu diye birşey yoktur. Ssh vardır. Hayat svn sunucu kurarmış gibi zor olmak zorunda değildir. Veee: git projelerinizi merkezi bir sunucuda tutmak için root olmanıza bile gerek yok!

Nasıl olacak?

SSH ile erişebildiğiniz bir sunucudaki hesabınızda, veya sistem yöneticisi iseniz git depolarını saklaması için açtığınız hesapta, ssh ile uzaktan erişilmesi için gerekli düzenlemeleri yapın:

adduser git  # git depoları için yeni kullanıcı
su git # git kullanıcısı olduk
cd /home/git
mkdir -f .ssh # .ssh dizini olduğuna emin olalım
chmod 700 .ssh
cd .ssh
touch authorized_keys # erişebilecek kişilerin public anahtarlarını
# ekleyeceğimiz dosya
chmod 600 authorized_keys

Yeni bir depo kurmak için git kullanıcısı ile sisteme girdikten sonra aşağıdaki komutları kullanın:

mkdir ~/depo.git
cd ~/depo.git
git --bare init

Şimdi istemci tarafındaki işleri halledelim. Eğer daha önce anahtar yaratmadınız, veya sadece bu depo için özel bir anahtar yaratmak istiyorsanız, önce anahtarınızı oluşturun:

ssh-keygen -t rsa -C "kullanicim@benim.posta.sunucum.com.tr"

Anahtarınıza istediğiniz ismi verin, ör. gitanahtar-id_rsa olsun. Şimdi

~/.ssh/config

dosyasının içine şunları yazarak bu anahtarın git deposunun bulunduğu sunucuya bağlanırken kullanılacağını ssh istemcisine anlatalım:

Host git-git-gidak
Hostname git.kurulu.sunucu.com.tr
User git
IdentityFile /home/benimkullanıcım/.ssh/gitanahtar-id_rsa

Şimdi son olarak gitanahtar-id_rsa.pub dosyasının içeriğini sunucuda yarattığımız authorized_keys dosyasına ekleyelim. Yaptıklarımızın doğru olup olmadığını istemciden

ssh git-git-gidak

komutu verdiğimizde sunucudaki git kullanıcısının hesabına bağlanıp bağlanmadığımızı kontrol ederek anlayabiliriz.

Şimdi eklenecek dosyaların olduğu yerel git deposuna gidip, uzaktaki depomuzu tanıtıp, senkronize edelim:

git remote rm origin
git remote add origin git@git-git-gidak:depo.git
git push origin master

Tadaaa! Bir git sunucumuz oldu.

Not: Bu yazıda, bazı arkadaşların güvenlik diyerekten carlama damarına basan kısımlar olabilir. Evet, sınırlandırılmış bir shell kullanmak vs gibi uygulanabilecek yöntemler var. İsterseniz, yorum olarak yazın, herkesle önerilerinizi paylaşmış olun.

3 Comments

  1. >Sevgili Anonim :)

    Ben de seni düzeltmek isterim: her protokol sunucu-istemci ilişkisi kullanmaz. Demek ki protokolün varlığı, sunucunun varlığı için yeter neden değildir.

    Uzak bir ortak depo kurmak için bir git sunucusu olarak algılanabilecek programa ihtiyaç gerçekten de yoktur. Yöntemi de yukarıda var.

    Ekler için teşekkürler.

  2. >Düzeltme :

    * Git protokolü varsa bu protokol üzerinde çalışan "git sunucusu" da vardır.

    * Gitolite, gitosis'den daha iyi bir alternatif olabilir : Yetkilendirme için daha fazla seçenek sunmaktadır.

    Ek :
    git –bare init komutu ile git init arasındaki farkı belirtmekde fayda var. –bare parameteresi ile projenin bilgilerinin saklanması, orjinal dosyalarının oluşturulmaması sağlanır, bir başka deyişle sunucuda sadece .git dizininiz saklanır.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir