Geliştirici için VPS: test ortamları
Test ortamı, hatayı müşterilerin değil sizin bulmanız için vardır. Yazılım ve ayarlar bakımından canlı sunucuya benzemelidir, ama kaynak olarak yarısı kadar olabilir ve yalnızca birkaç gün yaşayabilir. Test ortamının nasıl ucuz tutulacağını, tek sunucuda birkaç sürümün nasıl barındırılacağını ve sitenin kopyasının arama sonuçlarına düşmesinin ya da gerçek müşterilere e-posta göndermesinin nasıl önleneceğini ele alıyoruz.
Yazılım geliştirmede genellikle üç ortam bulunur. Yerel makinede geliştirici kodu yazar. Test ortamında (staging) derlenmiş sürüm, canlıya yakın koşullarda denenir: müşteri yeni özelliğe bakar, test uzmanı senaryoları geçer, veritabanı geçişleri (migration) kontrol edilir. Canlı sunucu (production) gerçek kullanıcılara hizmet verir. Bazen her dal için geçici ortamlar da eklenir: bunlarda tek bir iş gösterilir ve birleştirmeden sonra silinir.
Test ortamında canlı sunucuyla neler aynı olmalı?
- Yazılım sürümleri. Aynı işletim sistemi; PHP, Node.js, Python, veritabanı ve web sunucusunun aynı sürümleri. Yalnızca başka bir sürümde ortaya çıkan hatalar, yayına almadaki en sık sürprizlerdir.
- Ayarlar. Web sunucusu yapılandırması, önbellekleme, dosya yükleme sınırları, saat dilimi, parolalar ve anahtarlar dışındaki ortam değişkenleri.
- Yayına alma yöntemi. Test ortamı, canlı sunucuyla aynı betik ya da iş hattıyla güncellenir. Böylece yalnızca kod değil, yayına alma sürecinin kendisi de test edilir. Böyle bir iş hattının nasıl kurulacağı Kendi VPS'inizde CI/CD yazısında anlatılıyor.
Farklı olabilecekler. Kaynaklar: bir iki kullanıcısı olan bir test ortamına, canlı sunucu 8 çekirdek istese bile 1–2 çekirdek ve 2–4 GB bellek yeter. Veri hacmi: tam veritabanı yerine anonimleştirilmiş bir örneklem. Küçültülmüş bir test ortamında yük altında hız ölçmenin anlamı yoktur: bunun için canlı sunucuyla aynı yapılandırmada bir sunucu gerekir. Böyle bir testin nasıl yapılacağı Yayına almadan önce site yük testi yazısında anlatılıyor.
Kısa ömürlü ortamlar: saatlik ücretlendirme ve anlık görüntüler
Bir işi göstermek ya da bir güncellemeyi denemek için gereken ortama birkaç gün ihtiyaç duyulur. Bunun için bir ay ödemek zorunlu değildir: saatlik ücretlendirmede ücret sunucu var olduğu sürece işler, sunucu silindikten sonra durur. accsly.io kataloğuna göre Kasım 2026 itibarıyla VPS paketi olan 2.248 sağlayıcıdan 173'ü saatlik ücretlendirme sunuyor. Bu sağlayıcılarda 1 çekirdek ve 2 GB bellekli paketin ortanca fiyatı ayda yaklaşık 11 dolar, saatte yaklaşık 0,015 dolar; ortamın bir haftalık çalışması yaklaşık 2,6 dolar tutar. 2 çekirdek ve 4 GB'lık bir ortam ayda 24 dolar, saatte yaklaşık 0,033 dolar; üç gün yaklaşık 2,3 dolar. Fiyatlar katalogda rubleyle tutulur ve 7 Kasım 2026 kuruyla (1 dolar = 82,14 ruble) çevrilip yuvarlanmıştır. Başabaş hesabı ve dikkat edilmesi gereken noktalar Saatlik ücretlendirme ne zaman kârlı? yazısında, paketler ise Saatlik ücretli VPS seçkisinde.
Disk anlık görüntüsü (snapshot) ortam oluşturmayı hızlandırır. Sunucuyu bir kez ayarlayın, anlık görüntüsünü alın ve yeni ortamları dakikalar içinde bundan oluşturun. Yeniden gerekecek bir ortamı silmeden önce anlık görüntüsünü alın ve sunucuyu silin: anlık görüntüyü saklamak genellikle çalışan bir sunucudan ucuzdur, ama o da para tutar. Aynı sağlayıcıdaki anlık görüntü yedeğin yerini tutmaz; aradaki fark VPS yedekleri: stratejiler ve araçlar yazısında açıklanıyor.
Sağlayıcı yeniyse test ortamı, canlı siteyi taşımadan önce onu denemenin kolay bir yoludur. accsly.io kataloğuna göre Kasım 2026 itibarıyla 247 sağlayıcı ücretsiz deneme süresi veriyor; bu sürelerin koşulları ve kısıtlamaları Deneme süresi ve para iadesi yazısında ele alınıyor.
Docker Compose ile tek sunucuda birden çok ortam
Test ortamlarına sürekli ihtiyaç varsa, daha büyük tek bir sunucu tutup birkaç sürümü konteynerlerde çalıştırmak daha ucuzdur. Docker Compose varsayılan olarak compose.yaml ve compose.override.yaml dosyalarını okur, -f anahtarıyla ise birkaç dosyayı sırayla birleştirir (Docker belgeleri). Ortak kısım bir kez tanımlanır, compose.staging.yaml dosyasında ise test ortamının farkları durur: başka portlar, daha düşük bellek sınırları, test değişkenleri.
Her ortam kendi proje adıyla başlatılır: docker compose -p feature-123 -f compose.yaml -f compose.staging.yaml up -d. Farklı adlardaki projelerin kendi konteynerleri, ağları ve birimleri (volumes) olduğundan ortamlar birbirini etkilemez. Dışarıdan bunları tek bir web sunucusu ya da ters proxy alt alan adlarına göre ayırır: feature-123.stage.example.com. Sunucunun Docker'a nasıl hazırlanacağı ve diskin imajlarla nasıl doldurulmayacağı VPS'te Docker: nereden başlamalı yazısında anlatılıyor.
Ne kadar kaynak alınmalı: veritabanlı her ortam için 1–2 GB bellek ve 5–10 GB disk ayırın. 2 çekirdek ve 4 GB'lık bir sunucu iki üç küçük ortamı kaldırır. accsly.io kataloğuna göre Kasım 2026 itibarıyla böyle bir paketin ortanca fiyatı ayda yaklaşık 21 dolar, paketlerin dörtte biri 12,5 dolardan ucuz. Tek bir ortam için 1 çekirdek ve 2 GB'lık paket 11 dolar, dörtte biri 7 dolardan ucuz. Seçkiler: Test ortamı için VPS ve Docker için VPS.
Test ortamı arama motorlarından nasıl gizlenir?
Sitenin aramadaki bir kopyası, canlı siteyle rekabet eden yinelenen sayfalar ve henüz yayımlanmamış olanın sızması demektir. Yöntemler, güvenilirlik sırasıyla:
- robots.txt korumaz. Google, robots.txt'teki yasağın bir sayfayı aramadan çıkarmanın yolu olmadığını açıkça yazıyor: bağlantı verilen bir adres, tarayıcı onu hiç ziyaret etmemiş olsa bile sonuçlarda görünebilir.
- noindex.
<meta name="robots" content="noindex">meta etiketi ya daX-Robots-Tag: noindexbaşlığı dizine eklemeyi yasaklar; başlığı web sunucusu ayarlarında tüm ortam için tek seferde eklemek daha kolaydır. Bunu hem Google hem Bing destekler. Tarayıcının bu yasağı görebilmesi gerekir, bu yüzden ortamı aynı anda robots.txt ile kapatmamalısınız (Google belgeleri). - Parola en güvenilir seçenektir. nginx'te temel kimlik doğrulama iki yönergeyle,
auth_basicveauth_basic_user_fileile açılır; parola dosyasıhtpasswdaracıyla oluşturulur (nginx belgeleri).satisfy anyyönergesi ofis adreslerinden parolasız girişe izin verir, diğerlerinden parola ister. Tarayıcı tek bir sayfa bile göremez.
Ortamın adı gizli değildir. Let's Encrypt verdiği her sertifikayı herkese açık Certificate Transparency günlüklerinde yayımlar ve bunlardan sertifika alınmış tüm alt alan adları görülebilir. *.stage.example.com için alınan bir sertifika tek tek ortamların adlarını gizler, ama parola korumasının yerini tutmaz. Bu tür sertifikaların nasıl alınacağı ve alt alan adlarının nasıl ayarlanacağı SSL sertifikaları: ücretsiz ve ücretli ve Sunucu sahibi için alan adları ve DNS yazılarında anlatılıyor.
Veriler ve yan etkiler
- Canlı veritabanını olduğu gibi kopyalamayın. İçinde müşterilerin kişisel verileri var, test ortamı ise canlı sunucudan daha zayıf korunur. Adları, telefonları, e-posta adreslerini ve ödeme bilgilerini anonimleştirin ya da bir test veri seti hazırlayın. GDPR ve 6698 sayılı KVKK, kişisel verilerin yalnızca amaçla sınırlı ve gerektiği kadar işlenmesini ister; test için gerçek müşteri verisi buna genellikle uymaz. Ayrıntılar GDPR ve hosting seçimi yazısında.
- E-posta ve SMS gönderimini kapatın. Veritabanı kopyası olan bir test ortamı gerçek müşterilere bildirim gönderebilir. Giden e-postayı bir test tuzak kutusuna yönlendirin ya da kapatın.
- Ödemeler yalnızca test modunda. Ödeme sistemlerinin test anahtarları ve test kartları vardır; test ortamında canlı anahtarlara gerek yoktur.
- Zamanlanmış görevleri kontrol edin. Pazaryerlerine aktarımlar, CRM ile senkronizasyon, cron'dan dış API'lere yapılan çağrılar test ortamında test ortamlarına gitmeli ya da kapalı olmalıdır.
- Ayrı anahtarlar ve parolalar. Test ortamına yükleniciler ve test uzmanları erişir; test ortamındaki hiçbir anahtar canlı sunucuyu açmamalıdır.
Unutulan test ortamları
Unutulan bir ortam her ay para tutar ve zamanla en savunmasız nokta haline gelir: güncellemeleri yapılmaz, parolaları eskidir, veritabanı kopyası da çoktan ayrılmış yüklenicilere açık durur. Bunu önlemeye yardımcı olan birkaç kural:
- her ortamın, adında ya da sağlayıcı panelindeki etiketinde yazılı bir sahibi ve silinme tarihi olsun;
- dallar için geçici ortamlar, dal birleştirildikten sonra onları oluşturan iş hattıyla silinsin;
- kalıcı test ortamı canlı sunucuyla birlikte güncellensin ve aynı şekilde korunsun: yalnızca anahtarla giriş, güvenlik duvarı, güvenlik güncellemeleri (VPS satın aldıktan sonra ilk 10 adım: güvenlik);
- ayda bir sağlayıcı panelindeki sunucu listesini gerekli ortamların listesiyle karşılaştırın ve fazlalıkları silin.