CI/CD Rehberi: VPS/VDS Üzerinde Güvenli ve Kesintisiz Dağıtım

CI/CD Rehberi: VPS/VDS Üzerinde Güvenli ve Kesintisiz Dağıtım - Corelux
Paylaş:

CI/CD Rehberi: VPS/VDS Üzerinde Güvenli ve Kesintisiz Dağıtım

Son Güncelleme: Mart 2026

CI/CD (Sürekli Entegrasyon ve Sürekli Dağıtım) süreçleri, modern web uygulamalarının hızlı ve güvenli şekilde üretime alınmasını sağlar. Bu rehber, VPS, VDS ve kiralık sunucu altyapılarında pratik CI/CD yaklaşımlarını, alan adı ve SSL (sertifika) yönetimini, güvenlik uygulamalarını ve rollback (geri alma) stratejilerini adım adım anlatır.

Hedef: Küçük-orta ölçekli ekiplerin, Corelux benzeri altyapılarda düşük maliyetle kesintisiz dağıtım uygulayabilmesi ve operasyonel riskleri azaltması.

İçindekiler

Neden CI/CD?

Geleneksel elle yapılan dağıtımlar, özelikle küçük ekiplerde hata, gecikme ve güvenlik zaafiyetlerine yol açar. CI ile kod değişiklikleri otomatik testlerden geçirilir; CD ile testleri geçen sürümler otomatik olarak üretime gönderilebilir. Bu yaklaşımın faydaları şunlardır:

  • Hız: Geliştiriciler daha sık ve küçük yayınlar yapar.
  • Güvenilirlik: Otomatik testlerle hatalar erken tespit edilir.
  • İzlenebilirlik: Hangi commit'in hangi sürüme gittiği net olur.

Hazırlıklar: Altyapı ve Güvenlik

İyi bir CI/CD hattı kurmadan önce altyapı hazırlıkları ve temel güvenlik konuları tamamlanmalıdır.

Sunucu Seçimi

Güvenlik Temelleri

  • SSH Key Yönetimi: Parola yerine SSH anahtar kullanın, anahtarları passphrase ile koruyun ve master anahtarları ayrı bir kasada saklayın.
  • Firewall ve Port Kısıtlaması: Yönetim portlarını (SSH/RDP) sadece CI sunucusunun IP'sine açın.
  • Servis Kullanıcıları: Uygulamaları root yerine sınırlı izinlere sahip kullanıcılarla çalıştırın.

PHP Uygulamaları İçin Pratik Pipeline

PHP projeleri (ör. Laravel, WordPress) için tipik bir pipeline şu adımları içerir: kod çekme, bağımlılık yükleme, test çalıştırma, varlık derleme, paket hazırlama, dağıtım.

Örnek: Basit Rsync + GitHub Actions Akışı

  1. Commit tetiklemesi: Geliştirici main/production branch'ine push yapar.
  2. CI aşaması: GitHub Actions/Runner kodu çekip phpunit/testleri çalıştırır ve composer bağımlılıklarını yükler.
  3. Build: Varsa asset pipeline (npm/webpack) çalıştırılır.
  4. Deploy: Artefakt sunucuya rsync ile gönderilir; önce /releases/timestamp dizinine kopyalanır, sonra symlink ile current işaretlenir.

Bu yaklaşımın önemli noktaları:

  • Atomic Deploy: Symlink yöntemi ile anlık kesinti riski azaltılır.
  • Rollback: Eski sürüme symlink değiştirerek hızlıca dönebilirsiniz.
  • Dosya izinleri: Web kullanıcı ve deploy kullanıcısı izinlerini önceden yapılandırın.

Node.js Uygulamaları İçin Pipeline

Node.js uygulamaları genelde PM2 veya systemd ile çalıştırılır. Aşağıdaki örnek, PM2 kullanarak kesintisiz güncelleme sağlar.

Örnek: CI (GitLab CI/GitHub Actions) + PM2

  1. Build: CI pipeline npm install, test ve build adımlarını çalıştırır.
  2. Deploy: Artefakt sunucuya gönderilir ve PM2 reload komutu ile proses zero-downtime olarak yeniden yüklenir.
  3. Healthcheck: Yeni sürümün birkaç saniye sağlıklı çalıştığı doğrulanır; başarısızsa otomatik rollback tetiklenir.

Docker & Container Tabanlı Dağıtım

Container tabanlı dağıtım, ortam tutarlılığı sağlar. CI pipeline Docker image üretir, registry'e push eder, hedef sunucu image'i çekip çalıştırır.

Pratik Örnekler

  • Tek sunucu, Docker Compose: CI yeni image'i push eder, sunucuda docker-compose pull && docker-compose up -d ile güncelleme yapılır.
  • Birden fazla node: Rolling update yapabilen bir orkestratör (kubernetes) yoksa, load balancer arkasında sıralı node güncellemeleri uygulayın.

Sıfır Kesinti (Zero-downtime) Stratejileri

Sıfır kesinti hedefliyorsanız aşağıdaki yaklaşımlar uygulanabilir:

  • Blue-Green Deploy: Yeni sürümü alternatif bir ortamda (green) başlatıp, teste sonra trafik yönlendirmesini değiştirin.
  • Rolling Update: Her seferinde bir örneği güncelleyin ve sağlık kontrolü ile ilerleyin.
  • Symlink Releases: PHP gibi dosya tabanlı uygulamalarda symlink yöntemi ile atomic deploy yapın.

Güvenlik ve İzinler

Dağıtım süreçleri güvenli değilse otomasyon bir saldırı vektörü olabilir. Öne çıkan güvenlik önlemleri:

  • CI Secrets Yönetimi: API anahtarları ve SSH anahtarlarını CI platformunun secrets bölümünde saklayın; repository içinde plaintext anahtar tutmayın.
  • Minimal İzinler: Deploy kullanıcılarına sadece gerekli folder ve komut izinlerini verin.
  • İzleme ve Loglama: Dağıtım aktivitelerini merkezi loglama sistemine gönderin ve anormal aktiviteleri alarm ile takip edin.

Alan Adı, DNS ve SSL Otomasyonu

Doğru DNS ve SSL yapılandırması, uygulamanızın güvenliği ve SEO'su için kritik öneme sahiptir.

Alan Adı ve DNS

  • DNS TTL: Dağıtım sırasında düşük TTL (ör. 60s) kullanmak redirect/traffic cutover işlemlerini kolaylaştırır; stabilite için sonra TTL'i yükseltin.
  • Sağlık Kontrolleri: Load balancer healthcheck endpoint'leri kullanın.

SSL Otomasyonu

  • Let's Encrypt: Otomatik yenileme (certbot veya ACME client) ile sertifikalarınızı yönetin.
  • Kurumsal Sertifikalar: Kurumsal ihtiyaçlarda Corelux'un SSL Sertifikası hizmetini değerlendirebilirsiniz.

Yedekleme ve Rollback Senaryoları

Her dağıtımda bir geri alma planı (rollback) ve yedekleme stratejisi olmalıdır.

Yedekleme Tipleri

Yedekleme Türü Açıklama Kullanım Senaryosu
Snapshot Disk veya VM anlık görüntüsü Hızlı tam geri dönüş gerektiren durumlar
Incremental Değişen blokların yedeklenmesi Depolama maliyetini düşürür
Offsite (Uzaktan) Farklı lokasyona yedekleme Felaket kurtarma

Corelux altyapısında yedekleme ihtiyacınız varsa Yedekleme Hizmeti sayfasını inceleyin.

Rollback Stratejileri

  • Symlink rollback: Bir önceki release dizinine dönerek anında geri alma.
  • DB Migration Rollback: Migration'lar idempotent (geri alınabilir) olmalı veya migration rollback script'leri hazır olmalı.
  • Feature Flags: Kritik değişiklikleri feature flag ile yöneterek hızlı devre dışı bırakma imkanı sağlayın.

Dağıtım Yöntemleri Karşılaştırma

Yöntem Avantaj Dezavantaj
Rsync + Symlink Basit, düşük maliyetli, hızlı Manual script bakım gerektirir
Container (Docker) Ortam tutarlılığı, kolay ölçeklenebilirlik Registry ve image yönetimi ek yük
Orkestrasyon (Kubernetes) Otomatik scaling, self-healing Öğrenme eğrisi ve operasyonel maliyet yüksek
Platform-as-a-Service Yönetim kolaylığı, entegre CI/CD Maliyet/genel kontrol sınırlamaları

Sıkça Sorulan Sorular

CI/CD nedir ve neden önemlidir?

CI (Sürekli Entegrasyon) kod değişikliklerini otomatik testlerle doğrulama, CD (Sürekli Dağıtım) ise bu testleri geçen sürümlerin otomatik olarak üretime aktarılmasıdır. Bu sayede hata sayısı azalır ve dağıtımlar hızlanır.

VPS üzerinde CI runner çalıştırmak güvenli midir?

Evet, ancak runner'ı izole bir kullanıcı ve sınırlı izinlerle çalıştırın; ayrıca ağ ve firewall kurallarını sıkı tutun.

SSL yenilemeleri nasıl otomatikleştirilir?

Let's Encrypt ile ACME protokolü üzerinden certbot veya benzeri client'lar kullanarak otomatik yenileme yapılır. Kurumsal ihtiyaçlar için Corelux'un SSL Sertifikası hizmetine bakabilirsiniz.

Rollback için en hızlı yöntem hangisidir?

Dosya tabanlı uygulamalarda symlink ile önceki release'e dönmek en hızlı yöntemdir; veritabanı değişiklikleri için migration rollback script'leri önceden hazırlanmalıdır.

Small team (küçük ekip) için hangi CI/CD yaklaşım uygundur?

Basit bir GitHub/GitLab Actions + rsync veya Docker Compose kombinasyonu, küçük ekipler için hem düşük maliyetli hem de yönetimi kolay bir çözümdür.

Sonuç

Bu rehber, VPS ve VDS altyapılarında güvenli, izlenebilir ve mümkün olduğunca kesintisiz bir CI/CD hattı kurmak için pratik adımları özetledi. Başlangıçta SSH anahtar yönetimi, otomatik test ve yedekleme stratejilerini uygulamak en kritik adımlardır. Daha yüksek performans veya kurumsal ihtiyaç durumlarında Corelux'un Türkiye VPS, Türkiye VDS veya Kiralık Sunucu ve Yedekleme Hizmeti sayfalarını inceleyerek uygun altyapıyı seçebilirsiniz.

Eğer hosting bazlı daha yönetimli bir çözüm arıyorsanız, Corelux'un Linux Hosting hizmetini değerlendirebilirsiniz. Projenizin gereksinimlerine göre en uygun dağıtım stratejisini birlikte belirleyebiliriz.

Yazar

Boran BAR

Chat on WhatsApp