VDS'te Otomatik Dağıtım (CI/CD) Kurulumu: Elle FTP Dönemini Kapatmak

Sanal sunucuda otomatik dağıtım: sürüm kontrolü, sıfır kesintili sembolik bağ yöntemi, webhook güvenliği ve geri dönüş planı. VDS'te Otomatik Dağıtım (CI/CD)…

VDS'te Otomatik Dağıtım (CI/CD) Kurulumu: Elle FTP Dönemini Kapatmak
İçindekiler
  1. Temel: Sürüm Kontrolü
  2. Seviye 1: Çek ve Yayınla
  3. Seviye 2: Sıfır Kesintili Dağıtım
  4. Seviye 3: Otomatik Tetikleme
  5. Dağıtım Kullanıcısının Yetkileri
  6. Veritabanı Değişiklikleri
  7. Geri Dönüş Planı
  8. Sonuç
  9. Sıkça Sorulan Sorular (SSS)
  10. Küçük bir site için bu kadar yapı gerekli mi?
  11. Yapılandırma dosyalarını depoda tutabilir miyim?
  12. Webhook uç noktası güvenli mi?
  13. Dağıtım sırasında site kapanır mı?

VDS'te Otomatik Dağıtım (CI/CD) Kurulumu: Elle FTP Dönemini Kapatmak

Kod değişikliğini canlıya almak hâlâ dosyaları elle FTP ile yüklemekten ibaretse, üç sorunu birden yaşıyorsunuz demektir: yükleme sırasında site tutarsız bir hâlde kalıyor, hangi sürümün canlıda olduğunu kimse kesin bilmiyor ve bir hata çıktığında geri dönmek elle iş gerektiriyor.

Otomatik dağıtım bu üçünü de çözer ve kendi sanal sunucunuz üzerinde kurmak sanıldığından basittir. Bu rehber, kademeli bir kurulum yolu sunuyor.

Temel: Sürüm Kontrolü

Otomatik dağıtımın ön koşulu, kodun bir sürüm kontrol deposunda olmasıdır. Bu adım atlanamaz — dağıtım otomasyonu "deponun şu hâlini sunucuya taşı" demektir; depo yoksa taşınacak tanımlı bir hâl de yoktur.

Depo kurulduğunda daha ilk günden bir kazanç elde edersiniz: hangi değişikliğin ne zaman yapıldığı kayıt altına girer ve istediğiniz noktaya dönebilirsiniz. Otomasyon bunun üzerine eklenir.

Seviye 1: Çek ve Yayınla

En basit otomasyon: sunucuda depoyu klonlayıp, dağıtım anında güncel sürümü çekmek. Elle FTP'ye göre üç avantajı vardır — hangi sürümün canlıda olduğu kesindir, aktarım hızlıdır (yalnızca değişenler gelir) ve geri dönmek tek komuttur.

Bu seviyede dikkat edilmesi gereken tek şey: deponuzda hassas bilgi bulunmamalıdır. Veritabanı parolaları ve API anahtarları depoya değil, sunucudaki ayrı bir yapılandırma dosyasına yazılmalı ve o dosya sürüm kontrolünün dışında tutulmalıdır.

Seviye 2: Sıfır Kesintili Dağıtım

Dosyaları doğrudan canlı dizine çekmenin bir sorunu vardır: aktarım sürerken site yarı güncellenmiş hâlde çalışır. Bazı dosyalar yeni, bazıları eski — bu, birkaç saniye süren tutarsız bir durum yaratır ve ziyaretçi o anda hata alabilir.

Çözüm, sembolik bağ yöntemidir:

  1. Her dağıtım, yeni ve ayrı bir dizine yapılır.
  2. Bağımlılıklar kurulur, varlıklar derlenir — hepsi canlı dizine dokunmadan.
  3. Hazır olduğunda, canlı dizini işaret eden sembolik bağ yeni dizine çevrilir.

Son adım tek bir işlemdir ve anlıktır. Ziyaretçi ya tamamen eski ya tamamen yeni sürümü görür; arada bir tutarsız hâl oluşmaz. Geri dönmek de aynı derecede hızlıdır: bağı önceki dizine çevirirsiniz.

Bu yapıda paylaşılan içerikler (yükleme dizini, log dizini, yapılandırma dosyası) sürüm dizinlerinin dışında tutulur ve her sürüme bağlanır — aksi halde her dağıtımda kullanıcı yüklemeleri kaybolur.

Seviye 3: Otomatik Tetikleme

Dağıtımı elle başlatmak yerine, depoya yapılan bir gönderimin süreci kendiliğinden tetiklemesini sağlayabilirsiniz. İki yaklaşım vardır:

Yaklaşım Nasıl çalışır Dikkat
Webhook Depo, sunucudaki bir uç noktayı çağırır Uç nokta mutlaka imza doğrulaması yapmalı
Dış çalıştırıcı Depo servisi sunucuya SSH ile bağlanıp dağıtır Dağıtım için sınırlı yetkili ayrı bir kullanıcı açın

Webhook yaklaşımında güvenlik kritiktir: kimliği doğrulanmamış bir dağıtım uç noktası, internetteki herkese sunucunuzda komut çalıştırma imkânı verir. İmza doğrulaması olmadan bu uç noktayı asla yayınlamayın.

Dağıtım Kullanıcısının Yetkileri

Otomatik dağıtım, sunucunuzda komut çalıştıran bir mekanizmadır — dolayısıyla bir saldırı yüzeyidir. Yetkileri daraltın:

  • Ayrı bir dağıtım kullanıcısı açın. Root ile dağıtım yapmayın.
  • Yalnızca gerekli dizinlere yazma izni verin. Sunucunun tamamına değil.
  • Dağıtım anahtarını salt okunur yapın. Sunucunun depodan çekmesi yeterlidir; yazma yetkisine ihtiyacı yoktur.
  • Yükseltilmiş yetki gerekiyorsa sınırlayın. Servis yeniden başlatma gibi işlemler için yalnızca o komutlara izin verin.

Veritabanı Değişiklikleri

Kod dağıtımı otomatikleşse bile veritabanı şeması ayrı bir konudur ve en çok burada hata yapılır. İki kural:

Geriye dönük uyumlu değişiklikler yapın. Yeni kod eski şemayla, eski kod yeni şemayla çalışabilmelidir. Bir sütunu silmek yerine önce kullanımdan kaldırın, bir sonraki dağıtımda silin. Bu, dağıtım sırasında iki sürümün kısa süre bir arada bulunmasını sorunsuz kılar.

Şema değişikliğinden önce yedek alın. Kod dağıtımını geri almak saniyeler sürer; bozulmuş bir şemayı geri almak yedek gerektirir.

Geri Dönüş Planı

İyi bir dağıtım sisteminin ölçütü, ne kadar hızlı ileri gittiği değil ne kadar hızlı geri dönebildiğidir. Sembolik bağ yöntemiyle geri dönüş, bağı önceki sürüm dizinine çevirmekten ibarettir — saniyeler sürer.

Son birkaç sürümü diskte tutun ve geri dönüşü gerçekten deneyin. Hiç test edilmemiş bir geri dönüş prosedürü, en çok ihtiyaç duyduğunuz anda sizi yarı yolda bırakır.

Sonuç

Otomatik dağıtım, karmaşık araçlar gerektiren bir lüks değil; kendi sunucunuzda kademeli olarak kurulabilen pratik bir düzendir. Sürüm kontrolüyle başlayın, sembolik bağ yöntemine geçin, sonra tetiklemeyi otomatikleştirin. Her seviye tek başına değer üretir ve bir sonrakini kolaylaştırır. Kaynakların size ayrıldığı bir VDS sunucu ortamında bu kurulumu yapmanız için hiçbir kısıt yoktur — paylaşımlı barındırmada ise çoğu adım mümkün değildir.

Sıkça Sorulan Sorular (SSS)

Küçük bir site için bu kadar yapı gerekli mi?

Tamamı değil. Sürüm kontrolü ve "çek ve yayınla" seviyesi neredeyse her proje için değerlidir ve kurulumu kısadır. Sembolik bağ ve otomatik tetikleme, sık dağıtım yapıyorsanız anlamlı hale gelir.

Yapılandırma dosyalarını depoda tutabilir miyim?

Parola ve anahtar içerenleri tutmayın. Örnek bir şablon dosyası depoda dursun, gerçek değerler sunucuda sürüm kontrolü dışında bir dosyada olsun ve her dağıtımda o dosyaya bağlanılsın. Depoya bir kez giren parola, geçmişte kalır — silmek yetmez, değiştirmek gerekir.

Webhook uç noktası güvenli mi?

İmza doğrulaması yapıyorsa evet. Doğrulama olmadan yayınlanan bir dağıtım uç noktası, internetteki herkese sunucunuzda kod çalıştırma imkânı verir. Bu, dağıtım otomasyonunda yapılabilecek en tehlikeli hatadır.

Dağıtım sırasında site kapanır mı?

Doğrudan dosya kopyalıyorsanız kısa bir tutarsızlık penceresi oluşur. Sembolik bağ yöntemiyle bu pencere tamamen kapanır: geçiş anlıktır ve ziyaretçi ya eski ya yeni sürümü bütün olarak görür.