Neden Staging Ortamına İhtiyacımız Var?
Sitenizde büyük bir güncelleme yapacağınızı düşünün: yeni bir eklenti kurmak, temayı değiştirmek veya özel bir özellik yazmak. Bunu doğrudan canlı (Production) sitede yaparsanız, herhangi bir hata sitenin tamamen çökmesine, kullanıcılara hata gösterilmesine ve hatta veri kaybına neden olabilir. İşte bu noktada staging ortamı imdadınıza yetişir.
Staging ortamı, canlı sitenizin neredeyse tam bir kopyasıdır ve ayrı bir alt alan adı veya dizinde bulunur. Herhangi bir değişikliği önce bu ortamda test edebilir ve doğru olduğundan emin olduktan sonra ana siteye taşıyabilirsiniz. Bu, bozulma riskini büyük ölçüde azaltır ve gönül rahatlığıyla deneme yapmanızı sağlar.
Bu makalede, siteniz için profesyonel bir staging ortamının nasıl oluşturulacağını, uygun araçların nasıl kullanılacağını ve en yaygın hatalardan nasıl kaçınılacağını öğreneceksiniz.
Staging Ortamı ile Geliştirme Ortamı (Development) Arasındaki Fark
Birçok kişi bu iki kavramı karıştırır. Geliştirme ortamı (Development), ilk kodlamanın yapıldığı yerdir ve genellikle programcının kişisel bilgisayarında bulunur. Ancak staging ortamı mümkün olduğunca canlı ortama benzemelidir: aynı PHP sürümü, aynı sunucu ayarları, aynı veritabanı ve hatta aynı gerçek içerik.
Başka bir deyişle, staging ortamı, geliştirme ortamı ile canlı ortam arasında bir köprüdür. Geliştirme ortamında çalışan bir değişiklik önce staging'de test edilir ve ardından Production'a geçer.
Staging Ortamı Oluşturma Yöntemleri
Site türüne ve barındırma olanaklarına bağlı olarak farklı yöntemler vardır. Aşağıda üç yaygın yöntemi inceleyeceğiz.
Birinci Yöntem: Alt Alan Adı (Subdomain) Kullanma
En basit yöntem, staging.example.com gibi bir alt alan adı oluşturmak ve siteyi buraya kopyalamaktır. Adımlar:
- Barındırma kontrol panelinizde (örneğin cPanel veya DirectAdmin) yeni bir alt alan adı oluşturun.
- Bunun için ayrı bir dizin belirleyin (örneğin
public_html/staging). - Canlı site dosyalarını bu dizine kopyalayın.
- Veritabanının bir kopyasını alın ve
db_staginggibi yeni bir adla içe aktarın. wp-config.phpdosyasını (WordPress'te) veya benzer ayar dosyasını yeni veritabanına bağlanacak şekilde düzenleyin.- Veritabanındaki site adresini değiştirin (örneğin aşağıdaki SQL komutuyla):
UPDATE wp_options SET option_value = 'https://staging.example.com' WHERE option_name = 'siteurl';
UPDATE wp_options SET option_value = 'https://staging.example.com' WHERE option_name = 'home';
Önemli Not: WordPress kullanıyorsanız, içerikteki adresleri değiştirmek için özel bir arama ve değiştirme (Search and Replace) eklentisi kullandığınızdan emin olun. Aksi takdirde, dahili bağlantılar canlı siteyi işaret eder.
İkinci Yöntem: Git ve Ayrı Branch'ler Kullanma
Siteniz özel bir içerik yönetim sistemi veya çerçeve (Laravel, Django veya React gibi) ile oluşturulmuşsa, Git kullanmak en iyi seçenektir. staging adında ayrı bir Branch oluşturun ve değişiklikleri önce burada uygulayın. Ardından CI/CD (örneğin GitHub Actions veya Jenkins) kullanarak otomatik olarak staging sunucusuna dağıtın.
Staging'e dağıtım için basit bir GitHub Actions dosyası örneği:
name: Deploy to Staging
on:
push:
branches: [ staging ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Deploy to server
uses: appleboy/scp-action@v0.1.4
with:
host: ${{ secrets.STAGING_HOST }}
username: ${{ secrets.STAGING_USER }}
key: ${{ secrets.STAGING_SSH_KEY }}
source: "."
target: "/var/www/staging"
Bu yöntem, bir proje üzerinde birden fazla kişinin çalıştığı geliştirme ekipleri için idealdir.
Üçüncü Yöntem: Docker Kullanma
Tamamen izole ve tekrarlanabilir bir staging ortamı istiyorsanız, Docker en iyi seçimdir. Bir docker-compose.yml dosyasıyla web sunucusunu, veritabanını ve diğer hizmetleri tanımlayabilirsiniz. Ardından kodu bir Container içinde çalıştırmanız yeterlidir.
Basit bir örnek:
version: '3.8'
services:
web:
image: nginx:latest
volumes:
- ./site:/usr/share/nginx/html
ports:
- "8080:80"
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: staging_db
Bu yöntemle staging ortamınız, canlı ortamla (muhtemelen aynı sunucuda veya benzer bir sunucuda çalışan) tamamen aynı olacaktır.
Staging Ortamı İçin Önemli Güvenlik İpuçları
Staging ortamı, herkes tarafından kolayca erişilebilir olmamalıdır. Aksi takdirde, arama motorları onu indeksleyebilir ve yinelenen içerik oluşabilir. Ayrıca hassas bilgiler (gerçek kullanıcı şifreleri gibi) sızabilir.
- Parola Koruması: Yalnızca yetkili kişilerin staging'e erişebilmesi için kontrol panelindeki Password Protect Directories özelliğini kullanın.
- İndekslemeyi Devre Dışı Bırakma: Staging köküne aşağıdaki içeriğe sahip bir
robots.txtdosyası yerleştirin:
User-agent: *
Disallow: /
- IP Whitelist Kullanma: Ekibinizin sabit bir IP'si varsa, erişimi yalnızca bu IP'lere sınırlayın (örneğin
.htaccessdosyasında). - Gerçek Kullanıcı Verilerini Kullanmama: Mümkünse, sahte veya anonimleştirilmiş (Anonymized) veriler kullanın. Gerçek verileri kullanmak zorundaysanız, şifreleri hash'lediğinizden ve kredi kartı bilgilerini kaldırdığınızdan emin olun.
Staging Ortamı Oluştururken Yapılan Yaygın Hatalar
Birçok kişi staging ortamı oluştururken ana amacı sorgulatan hatalar yapar. İşte birkaç örnek:
- Canlı Ortamla Uyumsuzluk: Staging ortamınız canlı ortamdan farklı bir PHP sürümüne sahipse, staging'de çalışan bir kod Production'da bozulabilir. Sunucu ayarlarını her zaman aynı tutun.
- Düzenli Güncellemeyi Unutma: Staging ortamı, canlı siteden gelen yeni verilerle zaman zaman güncellenmelidir. Aksi takdirde, eski verilerle test edersiniz ve yanıltıcı sonuçlar alırsınız.
- Tüm Senaryoları Test Etmeme: Sadece ana sayfayı test etmek yeterli değildir. Kullanıcı kaydı, ödeme ve e-posta gönderme gibi kritik süreçleri de staging'de test ettiğinizden emin olun.
- Belgelememe: Bir ekip olarak çalışıyorsanız, staging ortamının oluşturulması ve güncellenmesi adımlarını belgeleyin, böylece tüm üyeler kullanabilir.
Staging Ortamını Yönetmek İçin Kullanışlı Araçlar
Staging ortamıyla çalışmayı kolaylaştıran birçok araç vardır. En popüler olanlardan bazıları şunlardır:
- WP Staging (WordPress için): WordPress sitenizin tek tıklamayla kopyasını alan ve bir alt alan adına yerleştiren ücretsiz bir eklenti.
- Laravel Forge: Laravel projeleri için staging ortamına otomatik dağıtım sağlayan bir araç.
- Deployer: Staging desteği sunan, PHP için açık kaynaklı otomatik dağıtım aracı.
- ServerNet Staging Service: ServerNet barındırma hizmetlerini kullanıyorsanız, hızlı bir staging ortamı kurmak için dahili özelliklerinden yararlanabilirsiniz. Bu hizmet, derin teknik bilgi gerektirmeden izole bir test ortamı oluşturmanıza olanak tanır.
Sonuç
Profesyonel bir staging ortamı oluşturmak, sitenizin istikrarı ve güvenliği için yapabileceğiniz en iyi yatırımlardan biridir. İlk kurulum için biraz zaman harcayarak, ani çökmelerin neden olduğu baş ağrılarından kaçınır ve değişiklikleri daha güvenle uygulayabilirsiniz.
Staging ortamının sadece bir araç değil, aynı zamanda bir süreç olduğunu unutmayın. Onu güncel tutun, düzenli olarak test edin ve ekip üyelerinin nasıl kullanılacağını bildiğinden emin olun. Bu makaledeki ipuçlarını takip ederek siteniz için güçlü ve güvenilir bir test ortamı oluşturabilirsiniz.
Yorumlar 0
Henüz yorum yok — ilk siz olun!