← Yazılara Dön

Blog

Otomatik Deploy "Olmaz" Sanıyordum: FTPS ile Çözülen Bir Varsayım

Bu site framework kullanmadan, sıfırdan HTML, CSS ve JavaScript ile kodlanıyor. Bunun bir bedeli var: Vercel ya da Netlify gibi platformların "kodu push'la, birkaç dakika içinde canlı olsun" akışı bu projede yok, çünkü o araçlar Next.js veya React gibi framework projeleri için tasarlanmış. Bu yüzden aylarca her değişikliği cPanel'in dosya yöneticisine elle yükledim. Bir gün "bu ortamda otomatik deploy imkânsız" varsayımını gerçekten test ettim ve yanıldığımı öğrendim.

Neden Basit Bir Git Push Yetmiyordu

cPanel'in kendi Git aracı denendi. Paylaşımlı hosting planında repo, sitenin kök klasörünün dışında bir yere klonlanıyor ve otomatik deploy kancası sunmuyor; yani her değişiklikten sonra yine elle bir kopyalama adımı gerekiyordu. SSH erişimi de yoktu, paylaşımlı hosting bunu kapalı tutuyor. İkisi birden denenince "bu ortamda otomasyon olmaz" sonucuna varıldı ve aylarca elle yükleme sürdü.

Denenmemiş Tek Şey: FTP

Bir gün şu ayrımı fark ettim: "Git için olmuyor" sonucu yalnızca cPanel'in kendi Git aracı için doğrulanmıştı, FTP hiç denenmemişti. Sunucu Pure-FTPd çalıştırıyor ve TLS destekliyor, yani FTPS mümkün. .NET'in FtpWebRequest sınıfı FTPS'i doğrudan konuşabiliyor, npm paketi ya da ek bir yazılım kurulumu gerekmeden, saf PowerShell ile. Bir akşamlık bir denemeyle, aylardır imkânsız sayılan otomasyon çalışır hale geldi.

Bir İnceliği Doğru Çözmek

İlk bağlantı denemesinde bir sorun çıktı: ftp.metetezel.com üzerinden bağlanınca TLS sertifikası doğrulanmıyordu, çünkü sertifika farklı bir sunucu adına kesilmişti. Kolay ama yanlış çözüm sertifika doğrulamasını tamamen kapatmak olurdu; şifre taşıyan bir bağlantıda bu kötü bir fikir. Doğrusu barındırma sağlayıcısının gerçek sunucu adını kullanmaktı. O adres üzerinden bağlanınca sertifika geçerli çıktı ve doğrulama açık kalabildi.

Güvenlik Sınırları Bilinçli Kuruldu

Script'in üç kuralı var. Uzaktaki hiçbir dosyayı silmiyor, tek yönlü bir yükleme yapıyor, ayna mantığı değil. Varsayılan modu her zaman plan: onay bayrağı verilmeden hiçbir dosya yüklenmiyor. Ve her yükleme sonrası her dosyanın boyutu sunucudan tekrar okunup yerelle karşılaştırılıyor; yalnızca hepsi eşleşirse "son yüklenen" işareti ilerliyor. Kısmi ya da bozuk bir yükleme sessizce kabul edilmiyor.

Sonuç

Şimdi bir değişiklik yaptığımda script planı gösteriyor, onayladıktan sonra yüklüyor ve her dosyayı doğruluyor, birkaç dakika içinde. Asıl ders otomasyonun kendisinden çok, vazgeçmeden önceki sorudaydı: "bu ortamda X mümkün değil" sonucuna varmadan önce hangi varyantın gerçekten denendiğini bilmek gerekiyor. "Git için olmuyor" ile "hiçbir otomasyon mümkün değil" aynı şey değildi, ama uzun süre öyle davrandım. Benzer bir teknik teşhis sürecinde yardım isterseniz, iletişime geçebilirsiniz →.

İlgili Yazılar