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
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
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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Uzak sunucuda webprojesi klasörü içinde bulunması gereken gitpull.php dosyası ise aşağıdaki şekilde olmalıdır
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.
Denizin üstünde yüzen de nedir? Cehennemdir uşak cehennemdir, vapur değildir Görele'den geldik, Of'tan Rize'den, ateş değil sudur gönlümüz çeken Denizin üstünde oy yandım yandım korlamış kömürü nar dudak sandım Sürmele'den geldikten Of'tan Sinop'tan, ateş değil sudur canımız yakan Şu demir ocakta yanan da nedir? Yüreğimdir uşak yüreğimdir, kömür değildir Dört bucaktan geldik uzak demeden, ateş değil sudur bizi tüketen Denizin üstünde oy yandım yandım, ateşten ekmeği derine bandım Türkiye'den geldik uzak demeden, gurbet değil hasret bizi tüketen
Gentoo kurulu bilgisayarıma ATI ekran kartının sürücüsünü başarılı bir şekilde kurmama rağmen 3D motorunun aktif edilmesi ve OpenGL ile ilintili bir çok sorun yaşadım.Bu sorunlardan bir tanesi fglrx modülünün Xorg.log dosyasında verdiği şu hata. (EE) fglrx(0): [agp] unable to acquire AGP, error "xf86_ENODEV" (EE) fglrx(0): cannot init AGP (II) fglrx(0): [drm] removed 1 reserved context for kernel (II) fglrx(0): [drm] unmapping 8192 bytes of SAREA 0xf9353000 at 0xb7626000 (WW) fglrx(0): *********************************************** (WW) fglrx(0): * DRI initialization failed! * (WW) fglrx(0): * (maybe driver kernel module missing or bad) * (WW) fglrx(0): * 2D acceleraton available (MMIO) * (WW) fglrx(0): * no 3D acceleration available * (WW) fglrx(0): ********************************************* * Kullandığım kernel sürümü 2.6.23-r3 ve bununla beraber Xorg 7.2 ve xorg-server-1.4-r2 kurulu bilgisayarıma.VIA chipsetli bir anakartım ve de AMD Sempron 3100+ markalı bir işlemci...
Yorumlar