Git
Chapters ▾ 2nd Edition

4.2 Git on the Server - Bir Sunucuda Git Kurma

Bir Sunucuda Git Kurma

Şimdi kendi sunucunuzda bu protokoller üzerinde çalışan bir Git servisi kurmayı ele alacağız.

Burada, temel ve basitleştirilmiş kurulumları yapmak için gereken komutları ve adımları Linux tabanlı bir sunucuda göstereceğiz, ancak bu servisleri macOS veya Windows sunucularında çalıştırmak da mümkündür. Aslında altyapınız içinde canlı bir sunucu kurmak, güvenlik önlemlerinde veya işletim sistem araçlarında farklılıkları beraberinde getirecektir, ancak nasıl yapılacağı konusunda genel olarak fikir sahibi olacağınızı umuyorum.

Herhangi bir Git sunucusunu başlangıçta kurabilmek için mevcut bir repoyu yeni bir yalın repo (bare repository) olmak üzere (çalışma dizini içermeyen bir repo) dışa aktarmanız gerekir. Bunu yapmak oldukça basittir. Yeni bir yalın repo oluşturmak üzere reponuzu kopyalamak için kopyalama komutunu --bare seçeneği ile çalıştırırsınız. Geleneksel olarak, yalın repo dizin adları, .git soneki ile biter. Şu şekildedir:

$ git clone --bare my_project my_project.git
Cloning into bare repository 'my_project.git'...
done.

Artık my_project.git dizininde Git dizin verilerinin bir kopyasına sahip olmalısınız.

Bu, şuna benzer bir şeye karşılık gelir:

$ cp -Rf my_project/.git my_project.git

Yapılandırma dosyasında birkaç küçük fark vardır, ancak sizin amacınız için bu neredeyse aynı şeydir. Çalışma dizini olmadan yalnızca Git reposunu alır ve ona özel bir dizin oluşturur.

Yalın Repoyu Sunucuya Alma

Artık repo için bir yalın kopyaya sahip olduğunuza göre, yapmanız gereken tek şey onu bir sunucuya yerleştirmek ve protokollerinizi kurmaktır. Diyelim ki SSH erişiminiz olan git.example.com adında bir sunucu kurmuşsunuz ve tüm Git repolarınızı /srv/git dizini altında saklamak istiyorsunuz. Bu sunucuda /srv/git dizinin bulunduğunu varsayarak, yeni reponuzu, yalın repoyu kopyalayarak aşağıdaki gibi kurabilirsiniz:

$ scp -r my_project.git user@git.example.com:/srv/git

Artık, o sunucudaki /srv/git dizinine SSH tabanlı okuma erişimi olan diğer kullanıcılar, repoyu şu komutu çalıştırarak kopyalayabilir:

$ git clone user@git.example.com:/srv/git/my_project.git

Eğer /srv/git/my_project.git dizinine yazma erişimine sahip bir kullanıcı, sunucuya SSH ile bağlanırsa, otomatik olarak itme erişimine de sahip olacaktır.

git init komutunu --shared seçeneği ile çalıştırırsanız, Git otomatik olarak bir repoya grup yazma izinlerini ekler. Bu komutu çalıştırarak, bu süreçte hiçbir katkı, referans vb. yok edilmeyecektir.

$ ssh user@git.example.com
$ cd /srv/git/my_project.git
$ git init --bare --shared

Bir Git reposunu almanın, yalın bir sürüm oluşturmanın ve iş arkadaşlarınızla birlikte SSH erişimine sahip olduğunuz bir sunucuya yerleştirmenin ne kadar kolay olduğunu gördünüz. Şimdi aynı projede işbirliği yapmaya hazırsınız.

Birkaç kişinin erişimi olan kullanışlı bir Git sunucusunu çalıştırmak için yapmanız gereken tek şey budur. Sadece bir sunucuda SSH erişimine sahip hesaplar ekleyin ve tüm bu kullanıcılara okuma ve yazma erişimi veren yalın bir repoyu bir yere yerleştirin. Artık çalışmaya hazırsınız.

Sonraki birkaç bölümde, daha karmaşık kurulumlara nasıl genişleyeceğinizi göreceksiniz. Bu mevzu, her bir kullanıcı için hesap oluşturmak zorunda kalmadan, repolara genel okuma erişimi eklemek, ağ arayüzleri kurmak ve daha fazlasını içerecek. Yine de birkaç kişiyle özel bir projede işbirliği yapmak için ihtiyacınız olan tek şey bir SSH sunucusu ve bir yalın repodur.

Ufak Kurulumlar

Eğer küçük bir ekip veya organizasyonunuzda Git’i denemek için sadece birkaç geliştiriciniz varsa, işler sizin için basit olabilir. Git sunucusu kurmanın en karmaşık yönlerinden biri kullanıcı yönetimidir. Bazı repoların belirli kullanıcılar için salt okunur, diğerleri için ise okuma/yazma izinli olmasını istiyorsanız, erişim ve izinleri düzenlemek biraz daha zor olabilir.

SSH Erişimi

Eğer tüm geliştiricilerinizin zaten SSH erişimine sahip olduğu bir sunucunuz varsa, en kolayı ilk repoyu orada kurmaktır, çünkü (geçen bölümde anlattığımız gibi) neredeyse hiç iş yapmanıza gerek yoktur. Eğer repolarınızda daha karmaşık erişim kontrolü türü izinler olmasını istiyorsanız, bunları sunucunuzun işletim sisteminin normal dosya sistem izinleri ile yönetebilirsiniz.

Eğer repolarınızı, yazma erişimi vermek istediğiniz herkesin hesap sahip olmadığı bir sunucuya koymak istiyorsanız, o zaman onlar için SSH erişimi kurmalısınız. Bu işlemi yapacak bir sunucunuz varsa, zaten bir SSH sunucusu kurulu olduğunu ve sunucuya erişim sağlamak için bu yöntemi kullandığınızı varsayıyoruz.

Takımınızdaki herkese erişim sağlamanın birkaç yolu vardır. İlk olarak, herkes için birer hesap açaabilirsiniz, bu basit ancak sıkıcı olabilecek bir iştir. Her yeni kullanıcı için adduser (veya olası alternatif useradd) komutunu çalıştırmak ve geçici şifreler belirlemek istemeyebilirsiniz.

İkinci bir yöntem, makinada tek bir git kullanıcı hesabı oluşturmak, yazma erişimine sahip olacak her kullanıcıdan bir SSH genel anahtarı göndermelerini istemek ve bu anahtarı yeni git hesabının ~/.ssh/authorized_keys dosyasına eklemektir. Artık, herkes git hesabı üzerinden bu makineye erişebilecektir. Bu, herhangi bir şekilde katkı verilerini etkilemez (bağlandığınız SSH kullanıcısı, işlediğiniz katkıları etkilemez).

Bunu yapmanın başka bir yolu da SSH sunucunuzun bir LDAP sunucusu veya zaten kurulu olan başka bir merkezi kimlik doğrulama kaynağından kimlik doğrulamasını yapmasını sağlamaktır. Her kullanıcı makineye kabuk erişimi alabildiği sürece, aklınıza gelebilecek herhangi bir SSH kimlik doğrulama mekanizması çalışmalıdır.

scroll-to-top