Git entegrasyonu (Git Version Control) hostingde nasıl kullanılır?

Günümüz web geliştirme dünyasında, proje yönetimi ve dağıtımı süreçlerini optimize etmek hayati önem taşır. İşte bu noktada Git ve hosting ortamları arasındaki entegrasyon devreye girer. Geliştiricilerin kodlarını verimli bir şekilde yönetmelerine ve canlı sunuculara sorunsuz bir şekilde dağıtmalarına olanak tanıyan bu yöntem, hem bireysel projelerde hem de büyük ekiplerde zaman ve emek tasarrufu sağlar. Bu blog yazısında, Git’in temellerinden başlayarak, hosting ortamınızla nasıl entegre edebileceğinizi, farklı entegrasyon yöntemlerini ve bu süreçte dikkat etmeniz gerekenleri detaylı bir şekilde inceleyeceğiz. Amacımız, projelerinizi güvenli, hızlı ve otomatik bir şekilde canlıya almanız için size kapsamlı bir rehber sunmaktır.

Git Nedir ve Neden Önemlidir?

Git, Linus Torvalds tarafından geliştirilen, dağıtık bir sürüm kontrol sistemidir (DVCS – Distributed Version Control System). Basitçe ifade etmek gerekirse, projelerinizin tüm geçmişini takip etmenizi, farklı sürümler arasında kolayca geçiş yapmanızı, birden fazla geliştiricinin aynı proje üzerinde çakışmadan çalışmasını ve hataları kolayca geri almanızı sağlayan bir araçtır.

  • Sürüm Takibi: Kod tabanınızdaki her değişikliği kaydeder ve istediğiniz zaman önceki bir sürüme dönebilmenizi sağlar.
  • İşbirliği: Ekiplerin aynı proje üzerinde paralel çalışmasına olanak tanır, değişiklikleri birleştirme sürecini kolaylaştırır.
  • Hata Giderme: Hatalı bir dağıtım veya kod değişikliği durumunda, projenizi sorunsuz çalışan önceki bir duruma geri döndürebilirsiniz.
  • Dallanma ve Birleştirme (Branching & Merging): Yeni özellikler geliştirmek veya hataları düzeltmek için ana kod tabanından bağımsız dallar oluşturabilir, işiniz bittiğinde bunları ana dala birleştirebilirsiniz.

Hosting ve Git Entegrasyonunun Avantajları

Git’in gücünü hosting ortamınızla birleştirmek, geliştirme ve dağıtım süreçlerinizi önemli ölçüde iyileştirir. Bu entegrasyon, manuel işlemleri azaltarak ve hata olasılığını düşürerek size birçok avantaj sunar:

  • Otomatik Dağıtım (Automated Deployment): Kodunuzu Git deponuza (örneğin GitHub, GitLab) ittiğinizde, değişikliklerin otomatik olarak sunucunuza aktarılmasını sağlayabilirsiniz. Bu, “git push” komutu ile web sitenizi güncellemek anlamına gelir.
  • Hata Azaltma: Manuel dosya yüklemeleri (FTP gibi) sırasında oluşabilecek insan hatalarını ortadan kaldırır.
  • Geri Alma Kolaylığı: Yanlış bir dağıtım durumunda, Git’in sürüm kontrol yetenekleri sayesinde projenizi anında önceki bir kararlı sürüme geri döndürebilirsiniz.
  • Ekip Çalışması Verimliliği: Birden fazla geliştirici çalışırken, herkesin aynı anda kod üzerinde çalışabilmesini ve değişikliklerin sorunsuzca birleştirilmesini sağlar.
  • Sürüm Geçmişi ve Şeffaflık: Canlı sunucunuzda çalışan kodun hangi versiyon olduğunu her zaman bilirsiniz ve yapılan tüm değişikliklerin bir geçmişi elinizin altında olur.

Yaygın Git Entegrasyon Yöntemleri

Hosting sağlayıcıları ve Git servisleri, farklı entegrasyon yolları sunar. En yaygın olanları şunlardır:

1. SSH ile Manuel Entegrasyon

Bu yöntem, Git’in temel kullanım mantığına dayanır ve çoğu paylaşımlı veya özel hosting ortamında uygulanabilir. Sunucunuza SSH (Secure Shell) ile bağlanarak Git komutlarını doğrudan çalıştırırsınız.

  • SSH Anahtarı Oluşturma: Yerel bilgisayarınızda bir SSH anahtarı oluşturun ve genel anahtarınızı hosting panelinize veya sunucunuzun ~/.ssh/authorized_keys dosyasına ekleyin. Bu, sunucunuzla güvenli bir bağlantı kurmanızı sağlar.
  • Depoyu Klonlama: Sunucunuzun web kök dizinine (örneğin public_html) gidin ve Git deponuzu klonlayın: git clone [depo-url] . (nokta işareti, mevcut dizine klonlamak içindir).
  • Güncelleme: Yerel geliştirme ortamınızda değişiklikleri Git deponuza ittikten sonra, SSH ile sunucunuza bağlanıp git pull origin [dal-adı] komutunu çalıştırarak sunucudaki kodunuzu güncelleyebilirsiniz.

2. Webhook Kullanarak Otomatik Dağıtım

Webhook’lar, Git depolama servislerinin (GitHub, GitLab, Bitbucket vb.) bir olay (örneğin bir kod itme – git push) meydana geldiğinde belirli bir URL’ye HTTP POST isteği göndermesini sağlayan mekanizmalardır. Bu, tam otomatik dağıtım için idealdir.

  • Webhook Kurulumu: Git deponuzun ayarlarından bir webhook oluşturun. Hedef URL olarak sunucunuzda dağıtımı tetikleyecek bir betiğin adresini girin. Genellikle bir “gizli anahtar” (secret) da belirlersiniz.
  • Sunucu Tarafı Betiği: Sunucunuzda, webhook’tan gelen POST isteğini dinleyecek bir betik (PHP, Python, Node.js vb.) bulundurun. Bu betik, gelen isteği doğrulamalı (gizli anahtar kontrolü) ve ardından git pull komutunu çalıştırarak deponuzu güncellemelidir.
  • Otomatik Güncelleme: Artık, yerel deponuza bir değişiklik ittiğinizde, Git servisi webhook’u tetikleyecek, sunucudaki betiğiniz çalışacak ve web siteniz otomatik olarak güncellenecektir.

3. Hosting Sağlayıcısının Dahili Git Entegrasyonu

Birçok modern hosting sağlayıcısı (cPanel, Plesk, çeşitli yönetilen WordPress hosting’ler vb.), kendi panelleri üzerinden kolay Git entegrasyonu sunar. Bu yöntem, teknik bilgi gereksinimini minimize eder.

  • Panel Üzerinden Bağlantı: Hosting kontrol panelinizde “Git” veya “Sürüm Kontrolü” gibi bir bölüm arayın. Buradan Git deponuzun URL’sini girerek bir bağlantı kurabilirsiniz.
  • Otomatik veya Manuel Dağıtım: Bazı sağlayıcılar, otomatik dağıtım seçenekleri sunarken (bir “push” sonrası), bazıları panel üzerinden manuel olarak “Deploy” (Dağıt) düğmesine tıklamanızı isteyebilir.
  • Basit Kurulum: Genellikle SSH anahtarları ve webhook betikleriyle uğraşmanıza gerek kalmaz, tüm süreç panel arayüzü üzerinden yönetilir.

Adım Adım Entegrasyon Rehberi (Örnek: Webhook ile Otomatik Dağıtım)

Şimdi, en popüler ve verimli yöntemlerden biri olan webhook tabanlı otomatik dağıtımı adım adım inceleyelim. Bu örnekte, bir GitHub deposu ve PHP betiği kullanacağız.

1. Git Deponuzu Hazırlayın

  • Öncelikle, projenizin kaynak kodunu içeren bir Git deponuz olduğundan emin olun (örneğin GitHub’da).
  • Yerel makinenizde değişikliklerinizi yapın ve bunları depoya itin: git add ., git commit -m "İlk commit", git push origin main.

2. Hosting Ortamınızı Yapılandırın

  • SSH Erişimi: Hosting sağlayıcınızdan SSH erişimi edinin. Bu, Git komutlarını sunucuda çalıştırabilmeniz için gereklidir.
  • Depoyu Klonlama: SSH ile sunucunuza bağlanın. Web sitenizin dosyalarının bulunduğu dizine (örneğin /home/kullaniciadi/public_html) gidin. Bu dizine Git deponuzu klonlayın:
    git clone [depo-url] . (nokta, mevcut dizine klonlamak içindir).
  • İzinleri Ayarlama: Klonladığınız dizin ve dosyaların web sunucusu kullanıcısı tarafından yazılabilir olduğundan emin olun, özellikle de betiğin çalışacağı ve Git’in dosyaları değiştireceği yerlerde.

3. Webhook Kurulumu (GitHub Örneği)

  • GitHub deponuzun ayarlarına (Settings) gidin.
  • Sol menüden “Webhooks” seçeneğine tıklayın, ardından “Add webhook” düğmesine basın.
  • Payload URL: Buraya, sunucunuzdaki dağıtım betiğinin tam URL’sini girin (örneğin: https://www.siteadresiniz.com/webhook.php).
  • Content type: “application/json” olarak seçin.
  • Secret: Güvenlik için güçlü bir gizli anahtar (parola gibi) belirleyin ve bunu bir yere not alın. Bu, webhook isteğinin gerçekliğini doğrulamak için kullanılacak.
  • Which events would you like to trigger this webhook?: Genellikle “Just the push event.” (Sadece push olayı) yeterlidir.
  • “Add webhook” ile kurulumu tamamlayın.

4. Sunucu Tarafı Betiği (webhook.php Örneği)

Sunucunuzda, webhook URL’sini verdiğiniz dizinde (örneğin public_html içinde) bir webhook.php dosyası oluşturun ve içine aşağıdaki gibi bir kod ekleyin. Bu, gelen webhook isteğini doğrulayacak ve git pull komutunu çalıştıracaktır.


<?php
    define('SECRET_KEY', 'WEBHOOK_GİZLİ_ANAHTARINIZ'); // GitHub'da belirlediğiniz gizli anahtar
    define('REPO_DIR', '/home/kullaniciadi/public_html'); // Projenizin klonlandığı dizin

    // Gelen isteği ve gizli anahtarı doğrula
    if ($_SERVER['HTTP_X_HUB_SIGNATURE'] || $_SERVER['HTTP_X_GITLAB_TOKEN']) {
        $payload = file_get_contents('php://input');
        $signature = 'sha1=' . hash_hmac('sha1', $payload, SECRET_KEY);

        if (!hash_equals($signature, $_SERVER['HTTP_X_HUB_SIGNATURE']) && !hash_equals(SECRET_KEY, $_SERVER['HTTP_X_GITLAB_TOKEN'])) {
            header('HTTP/1.0 403 Forbidden');
            die('Erişim Reddedildi: İmza doğrulanamadı.');
        }
    } else {
        header('HTTP/1.0 403 Forbidden');
        die('Erişim Reddedildi: Gizli anahtar veya imza eksik.');
    }

    // Git pull komutunu çalıştır
    chdir(REPO_DIR);
    $output = shell_exec('git pull 2>&1'); // 2>&1 hata çıktılarını da yakalar

    echo "<pre>" . htmlspecialchars($output) . "</pre>";
    file_put_contents('deploy.log', date('Y-m-d H:i:s') . " - Dağıtım yapıldı:\n" . $output . "\n", FILE_APPEND);
?>

Not: Yukarıdaki PHP betiği basit bir örnektir. Güvenlik ve hata yönetimi için daha gelişmiş betikler kullanmanız önerilir. WEBHOOK_GİZLİ_ANAHTARINIZ ve /home/kullaniciadi/public_html kısımlarını kendi bilgilerinizle değiştirin. Ayrıca, shell_exec fonksiyonunun hosting ortamınızda etkinleştirilmiş olması gerekmektedir.

5. Test Edin

  • Yerel deponuzda küçük bir değişiklik yapın (örneğin bir HTML dosyasında bir metni değiştirin).
  • Değişikliği kaydedin, commit’leyin ve Git deponuza itin: git push origin main.
  • GitHub’da “Webhooks” ayarlarına geri dönerek son dağıtımın başarılı olup olmadığını kontrol edin (genellikle “Recent Deliveries” bölümünde).
  • Web sitenizi tarayıcınızda açarak değişikliğin yansıtılıp yansıtılmadığını kontrol edin.

Entegrasyonda Dikkat Edilmesi Gerekenler

  • Güvenlik: SSH anahtarlarınızı ve webhook gizli anahtarlarınızı güvende tutun. Sunucunuzda .git dizinine doğrudan web erişimini engelleyin.
  • İzinler: Web sunucusu kullanıcısının (genellikle www-data veya apache) Git depolarına ve dağıtım dizinine yazma iznine sahip olduğundan emin olun.
  • Ortam Değişkenleri: Farklı ortamlarda (geliştirme, hazırlık, üretim) farklı yapılandırmalarınız varsa, bunları Git deponuza kaydetmek yerine sunucunuzda ortam değişkenleri olarak yönetmeyi düşünün.
  • Bağımlılıklar: Projenizin Composer (PHP), npm (Node.js) gibi araçlarla yönetilen bağımlılıkları varsa, dağıtım betiğinizin içinde bu bağımlılıkları yüklemek için komutlar (örneğin composer install, npm install) çalıştırmanız gerekebilir.
  • Yedekleme: Her dağıtımdan önce veya düzenli aralıklarla projenizin yedeklerini almayı unutmayın.
  • Hata Kaydı (Logging): Dağıtım betiğinizin çıktısını bir log dosyasına kaydetmek, olası sorunları teşhis etmede yardımcı olacaktır.

Git entegrasyonu, modern web geliştirme süreçlerinin olmazsa olmaz bir parçasıdır. Projelerinizi hosting ortamınızla entegre ederek, hem kendi iş akışınızı kolaylaştırır hem de ekip olarak daha verimli çalışırsınız. Otomatik dağıtım, hata riskini azaltır, zaman kazandırır ve geliştiricilerin asıl işleri olan kod yazmaya odaklanmasını sağlar. Bu rehberdeki adımları takip ederek, siz de projelerinizi daha profesyonel ve sorunsuz bir şekilde yönetmeye başlayabilirsiniz. Unutmayın, doğru yapılandırılmış bir Git entegrasyonu, projelerinizin gelecekteki büyümesi ve sürdürülebilirliği için sağlam bir temel oluşturur.

Yorum bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Scroll to Top