Web Projelerinde Git Kullanımı

Sürüm takibi ve işbirlikçilik, yazılım geliştirmede önemli rol oynayan faktörlerdir.
Bu yazıda anlatılanları uygulayabilmeniz için git'in hem yerel hem de uzak sunucunuzda kurulu olması ve bir GitHub hesabınızın bulunması gereklidir. Ayrıca, PHP destekli, Linux üzerinde çalışan bir web sunucunuzun olduğunu düşünüyorum.
Öncelikle aşağıdaki komutları kullanarak yerel sunucunuzda bir git deposu oluşturun
1
2
3
4
5
mkdir webprojesi
cd webprojesi
git init
git add .
git commit -m 'First commit'
Daha sonra GitHub'da "webprojesi" isimli bir uzak repo oluşturmamız gerekecek. Bu adımları izleyerek bu işlemi kolaylıkla gerçekleştirebilirsiniz.
Şimdi ise uzak sunucumuzun, GitHub ile bağlantı kurabilmesi için gerekli olan SSH ayarlarını yapalım. Bu arada web sunucusu olarak Apache kullandığımızı düşünüyorum. Bağlantı kurma işlemi bir PHP dosyası içinde gerçekleşeceğinden, varsayılan kullanıcımız apache olacaktır. apache kullanıcısının ssh ile GitHub'a erişimini sağlamak için öncelikle apache kullanıcısı ile oturum açmamız gerekecek. Bir çok dağıtımda apache kullanıcısı ile ilişkilendirilmiş herhangi bir kabuk yoktur. Bu ise terminalde apache kullanıcısı ile oturum açamayacağımız anlamına gelmektedir. Bu sorunu çözmek için /etc/passwd dosyasını açıp
1
apache:x:81:81:added by portage for apache:/var/www:/sbin/nologin
satırını
1
apache:x:81:81:added by portage for apache:/var/www:/bin/bash
şeklinde değiştirmeniz yeterli olacaktır. Şimdi root kullanıcısı ile oturum açıp su apache komutunu girelim. Bu komut, apache kullanıcısı ile oturum açmamızı sağlayacak. Oturum açtıktan sonra
1
2
cd 
/var/www ssh-keygen -t rsa -C "your_email@youremail.com"
komutları ile bir ssh anahtarı oluşturalım. Aşağıdaki gibi bir çıktı alacağız.
1
2
3
4
Generating public/private rsa key pair.
Enter file in which to save the key (/var/www/.ssh/id_rsa):
Created directory '/var/www/.ssh'.
Enter passphrase (empty for no passphrase):
Burada bizden bir şifre oluşturmamız istenmektedir. Şifre olşturulduktan sonra
1
ssh ukullaniciismim@uzaksunucu.com
komutu ile uzaktaki web sunucusu ile ssh bağlantısı oluşturalım. Şimdi uzak sunucumuzun kök web dizinine geçiş yaparak
1
2
ssh ukullaniciismim@uzaksunucu.com
git clone git@github.com:username/webproje.git
komutunu verelim. Bu komut ile GitHub da oluşturduğumuz repoyu kök dizine kopyalamış olduk. Kök dizininizde webprojesi isimli bir klasör oluşacaktır. Bu aşmadan sonra her commit işleminden sonra uzak sunucuyu repo ile senkronize eden gitpull.php dosyasını oluşturalım. Bunun için GIT'ın bize sunduğu post-receive hook özelliğini kullanacağız. Öncelikle her SSH bağlantısında şifre sorulmasını engellemek için, uzak sunucumuzdaki webprojesi klasörü içinde aşağıdaki şekilde, guncelle.sh isimli bir bash betiği oluşturalım.
Uzak sunucuda webprojesi klasörü içinde bulunması gereken gitpull.php dosyası ise aşağıdaki şekilde olmalıdır
Daha sonra aşağıdaki resimde URL kısmına gitpull.php isminin tam yolunu yazacağız. Bu aşamadan sonra her commit işlemi sonrası dosyalarınız otomatik olarak uzak sunucuya çekilecektir.

Benzer methodlar için aşağıdaki sitelere bakabilirsiniz.
KAYNAKLAR
  1. The Perfect Workflow, with Git, GitHub, and SSH
  2. Setting Up ssh-agent to Ask Passphrase Only Once

Yorumlar

Kemal dedi ki…
git kullanımını türkçe olarak anlatan en iyi makaleydi bu :) Teşekkürler.

Bu blogdaki popüler yayınlar

Sümeyra Çakır - Ateşçiler Türküsü

Hüsnüne güvenme ey ruh-i mahım