Yerel Projeyi GitHub ile Otomatik Olarak Web Sitesine Güncelleme

Yerel Projeyi GitHub ile Otomatik Olarak Web Sitesine Güncelleme
Günümüzün modern yazılım geliştirme süreçlerinde, kodları yönetmek ve güncel tutmak için Git ve GitHub gibi sürüm kontrol sistemleri yaygın olarak kullanılıyor. Bu makalede, yerel bilgisayarınızda geliştirdiğiniz bir web sitesi projesini GitHub deposuna bağlayarak canlı web sitesinde nasıl güncelleyebileceğinizi anlatacağım. Ayrıca, bu yöntemin sağladığı avantajları ve sürecin nasıl yapılandırılacağını adım adım inceleyeceğiz.
1. Neden Git ve GitHub Kullanmalıyız?
1.1. Sürüm Kontrolü ile Geriye Dönme
Geliştirme sürecinde yapılan her değişiklik, sürüm kontrol sistemleri sayesinde izlenebilir. Bu, kodda yapılan bir hata olduğunda geriye dönme veya eski sürümlere ulaşma imkanı sunar.
1.2. Ekip Çalışmasını Kolaylaştırma
Git, aynı proje üzerinde birden fazla kişinin çalışmasına olanak tanır. GitHub gibi platformlar üzerinden kod paylaşımı ve iş birliği yaparak, ekip arkadaşlarınızla verimli bir şekilde çalışabilirsiniz.
2. Yerel Projenizi GitHub’a Yüklemek
2.1. GitHub Deposu Oluşturma
GitHub hesabınızda yeni bir depo oluşturarak işe başlayın. Depo adını ve açıklamasını girdikten sonra, ister herkese açık, ister özel bir depo oluşturabilirsiniz.
Not: Eğer test projesi değilde yayınlanacak bir websitesini bu otomasyon ile kullanacaksanız kaynak kodlarına başkalarının ulaşamaması için özel bir depo açmanız tavsiye edilir.
2.2. Yerel Projenizi Git İle Bağlama
Yerel bilgisayarınızdaki proje klasöründe komut satırını açarak, projenizi Git deposuna dönüştürmek için şu komutları çalıştırın:
git init
git remote add origin https://github.com/kullanici-adiniz/repo-adi.git
3. Yerel Değişiklikleri GitHub’a Gönderme
3.1. Değişiklikleri Kaydetme ve Commit Etme
Yerel projenizde yaptığınız değişiklikleri takip etmek için şu komutları kullanın:
git add .
git commit -m "Yapılan değişikliğin açıklaması"
3.2. GitHub’a Gönderme (Push)
Yaptığınız commit'leri GitHub'a göndermek için şu komutları çalıştırın:
git push origin main
4. Web Sitesini Güncellemek
4.1. Web Sunucusunda Git Kurulumu
Sunucunuzda Git'in yüklü olduğundan emin olun. Eğer yüklü değilse, şu komutla yükleyebilirsiniz:
Eğer debian tabanlı ise:
sudo apt-get install git
Eğer CentOS ise:
sudo yum install git
4.2. Git Pull Kullanarak Sunucuyu Güncelleme
Sunucunuzdaki projenin bulunduğu klasörde şu komutu çalıştırarak güncellemeleri çekin:
git pull origin main
Bazı durumlarda bu komut çalışmayabilir ve hata verebilir. Bu durumlarda komutu şu şekilde çalıştırın:
git pull git@github.com:kullanici_adi/repo_adi.git main
5. GitHub Webhook ile Otomatik Güncellemeler
GitHub Webhook'ları, belirli olaylar gerçekleştiğinde (örneğin, bir push işlemi yapıldığında) sunucunuza belirli bir URL üzerinden bildirim gönderir. Bu sayede, projenizi otomatik olarak güncelleyebilirsiniz.
5.1. GitHub'da Webhook Oluşturma
-
Depo Ayarlarına Gitme: GitHub'da projenizin bulunduğu depoya gidin ve sağ üst köşede bulunan "Settings" sekmesine tıklayın.
-
Webhook Sekmesine Gitme: Sol menüde "Webhooks" seçeneğine tıklayın.
-
Webhook Oluşturma: "Add webhook" butonuna tıklayın.
-
Payload URL: Webhook'un gönderileceği URL'yi belirtin. Bu, sunucunuzda çalışacak olan PHP dosyasının URL'si olmalıdır. Örneğin:
https://example.com/update.php
. -
Content type: "application/json" seçeneğini seçin.
-
Which events would you like to trigger this webhook?: "Just the push event." seçeneğini seçin.
-
Webhook'u Oluşturma: "Add webhook" butonuna basarak işlemi tamamlayın.
- Secret: "Secret" kutucuğu içerisine sadece kendinizin bileceği bir güvenlik anahtarı girin.
Not: Secret anahtarı site tarafında da yapılacak olan ayarlama sayesinde github deponuzdan başka bir yerden istek gönderilirse algılayıp çalışmasını engelleyecek, bu sayede website bir saldırıdan korunmuş olacak.
5.2. PHP Dosyasını Oluşturma
Şimdi, GitHub'dan gelen bildirimleri işlemek için bir PHP dosyası oluşturalım. Bu dosya, GitHub'dan gelen veriyi alacak ve sunucudaki projenizi güncelleyecek:
-
update.php Dosyasını Oluşturma: Sunucunuzda
update.php
adında bir dosya oluşturun ve aşağıdaki içeriği ekleyin:<?php // update.php // Webhook için gizli anahtarınızı belirleyin $secret = 'SHA256:B1FwjZpY3xZXoQL8+gfGn8Vun94pfamwEvYNcfqLP9M'; // GitHub'dan gelen veriyi al $payload = file_get_contents('php://input'); // İmza kontrolü $signature = hash_hmac('sha256', $payload, $secret); // Başlıkları kontrol et if (!isset($_SERVER['HTTP_X_HUB_SIGNATURE_256']) || $_SERVER['HTTP_X_HUB_SIGNATURE_256'] !== 'sha256=' . $signature) { error_log('Invalid signature received.'); http_response_code(403); die(json_encode(['message' => 'Forbidden'])); } // Git pull işlemini gerçekleştirin $output = []; $return_var = 0; // Projenizin bulunduğu dizine gidin chdir('/path/to/your/live/site'); // Git pull işlemini gerçekleştir exec('git pull --no-rebase git@github.com:kullanici_adi/repo_adi.git main 2>&1', $output, $return_var); // Sonuçları döndür if ($return_var === 0) { echo json_encode(['message' => 'Success']); } else { echo json_encode(['message' => 'Failed', 'output' => $output]); error_log('Git pull error: ' . implode("\n", $output)); } ?>
Not: Eğer HTTP_X_HUB_SIGNATURE anahtarı bulunamadı
hatası alırsanız o satırı X-Hub-Signature-256 olarak güncelleyin.
Not: YOUR_SECRET_TOKEN
kısmını webhook oluştururken belirlediğiniz secret ile değiştirmeyi unutmayın. Ayrıca, chdir
fonksiyonuna sunucunuzdaki canlı web sitesi dizininin yolunu eklemelisiniz.
5.3. Webhook ve PHP Dosyasını Test Etme
- Test Etme: GitHub deposunda bir değişiklik yapıp commit ettikten sonra, bu değişikliği push edin. GitHub, belirttiğiniz URL'ye bir istek göndererek
update.php
dosyasını çalıştırmalıdır. - Sonuçları Kontrol Etme:
update.php
dosyasının çıktısını kontrol ederek güncelleme işleminin başarılı olup olmadığını görebilirsiniz.