Blog’a Dön

Staging (Test) Ortamı Nedir? Web Sitesi İçin Kurulum

Staging ortamı nedir, neden gerekir? Alt alan adında test sitesi, veritabanı kopyalama, parola koruması, arama motorlarından gizleme ve canlıya taşıma.

Nodesty Ekibi4 dk okumaHosting
Koyu Nodesty arka planında Staging yazısı ile Test, Noindex ve Deploy ifadeleri

Staging ortamı, canlı web sitenizin bir kopyasının çalıştığı ve değişikliklerin canlıya alınmadan önce denendiği test ortamıdır. Eklenti ve tema güncellemelerini, yeni PHP sürümlerini, tasarım değişikliklerini ve yeni özellikleri önce staging'de denersiniz; her şey çalışıyorsa canlı siteye taşırsınız. Böylece bir güncelleme siteyi bozduğunda bunu ziyaretçileriniz değil, yalnızca siz görürsünüz.

Bu rehberde staging ortamının neden gerektiğini, web hostingde ve kendi sunucunuzda nasıl kurulacağını, staging sitesini korumayı ve değişiklikleri canlıya güvenle taşımayı anlatıyoruz.

Neden staging ortamı kullanmalısınız?

  • Güncellemeler siteyi bozabilir. Bir eklenti güncellemesi ya da yeni PHP sürümü beyaz ekrana ya da 500 hatasına yol açabilir. Staging'de önce denemek, canlı sitedeki kesintiyi önler.
  • Tasarım ve içerik değişiklikleri. Yeni bir temayı ya da sayfa düzenini ziyaretçiler görmeden hazırlayabilirsiniz.
  • Ekip çalışması. Müşterinize ya da ekibinize değişiklikleri canlıya almadan gösterebilirsiniz.
  • Hata ayıklama. Canlı sitede tekrarlamak riskli olan sorunları güvenle inceleyebilirsiniz.

Staging kurmanın yolları

YöntemUygun olduğu durum
Aynı hostingde alt alan adıÇoğu WordPress ve PHP sitesi
Staging eklentisiKüçük WordPress siteleri, hızlı kopya
Kendi sunucunuzda ayrı siteÖzel uygulamalar, Laravel ve Node.js projeleri
Ayrı sunucuCanlıyı hiç etkilememesi gereken yoğun testler

Web hostingde staging kurma

  1. Alt alan adı oluşturun. Kontrol panelinizde staging.alanadiniz.com gibi bir alt alan adı açın; panel, dosyalar için ayrı bir klasör hazırlar. Adımlar Alt alan adı nedir? yazımızda.
  2. Dosyaları kopyalayın. Canlı sitenin dosyalarını dosya yöneticisiyle sıkıştırıp staging klasörüne kopyalayın ve orada açın.
  3. Ayrı bir veritabanı oluşturun. Canlı veritabanını phpMyAdmin'den dışa aktarın, yeni bir veritabanı ve kullanıcı oluşturup içe aktarın. Staging sitesinin canlı veritabanına asla bağlanmaması gerekir.
  4. Yapılandırmayı güncelleyin. Staging kopyasının yapılandırma dosyasında (WordPress'te wp-config.php) yeni veritabanı bilgilerini yazın.
  5. Site adresini değiştirin. WordPress, site adresini veritabanında saklar. Staging veritabanındaki adresleri staging.alanadiniz.com olarak güncelleyin; bunun için bir arama-değiştirme eklentisi ya da WP-CLI ile wp search-replace kullanın. Veritabanında doğrudan bul-değiştir yapmayın; serileştirilmiş veriler bozulabilir.

Bu adımlar bir siteyi taşımakla neredeyse aynıdır; ayrıntılar Web sitesi taşıma rehberimizde.

Kendi sunucunuzda staging

Kendi sunucunuzda staging, ayrı bir site olarak kurulur:

  • Staging için ayrı bir klasör, ayrı bir veritabanı ve ayrı bir .env dosyası kullanın (APP_ENV=staging).
  • Nginx'te staging alt alan adı için ayrı bir server block oluşturun.
  • Git kullanıyorsanız staging sunucusunu ayrı bir daldan (örneğin develop ya da staging) besleyin; ana dala alınan değişiklikler canlıya, staging dalı staging'e yayınlansın. Otomatik yayın düzenini Git ile deploy rehberimizde anlattık.

Staging sitesini koruyun

Staging sitesi herkese açık olmamalıdır:

Parola koruması. Kontrol panelindeki dizin gizliliği (Directory Privacy) ya da benzeri bir özellikle staging klasörüne parola koyun. Nginx kullanıyorsanız:

location / {
    auth_basic "Staging";
    auth_basic_user_file /etc/nginx/.htpasswd-staging;
}

Parola dosyasını htpasswd aracıyla oluşturabilirsiniz (Ubuntu'da apache2-utils paketi).

Arama motorlarından gizleme. Staging sitesinin Google'da görünmesi, kopya içerik sorunlarına yol açabilir. Parola koruması bunu büyük ölçüde engeller; ek olarak bütün sayfalara bir noindex başlığı ekleyin:

add_header X-Robots-Tag "noindex, nofollow" always;

WordPress'te Ayarlar → Okuma sayfasındaki arama motorlarını engelleme seçeneğini de işaretleyebilirsiniz. Bu ayarı canlıya taşımamaya dikkat edin.

E-posta ve ödemeleri kapatın

Staging kopyası, canlı sitenizin kullanıcı ve müşteri listesini içerir. Önlem almazsanız:

  • Staging'deki bir test, gerçek müşterilere sipariş ya da bülten e-postası gönderebilir.
  • Zamanlanmış görevler, canlı sitedekiyle aynı işleri ikinci kez çalıştırabilir.

Bunu önlemek için staging'de e-posta gönderimini kapatın ya da bütün e-postaları bir test adresine yönlendirin; ödeme altyapılarını test (sandbox) moduna alın ve canlı API anahtarlarını staging'den kaldırın. Mümkünse kişisel verileri staging kopyasında anonimleştirin.

Değişiklikleri canlıya taşımak

  1. Önce canlı sitenin yedeğini alın.
  2. Kod ve ayarları taşıyın. Tema, eklenti ve kod değişikliklerini Git ya da dosya aktarımıyla canlıya alın.
  3. Veritabanına dikkat edin. Staging veritabanını olduğu gibi canlıya yüklemek, staging kopyasından sonra canlıda oluşan siparişleri, yorumları ve kullanıcıları siler. Çoğu durumda yalnızca kod ve ayarlar taşınır; içerik değişikliklerini canlıda yaparsınız ya da veritabanı değişikliklerini migration'larla uygularsınız.
  4. Canlıda kontrol edin. Önemli sayfaları, formları ve ödeme adımlarını tekrar deneyin.
  5. Staging'i düzenli tazeleyin. Staging kopyası zamanla canlıdan uzaklaşır; büyük değişikliklerden önce canlıdan yeni bir kopya alın.

Yedekleme alışkanlıklarını Sunucu yedekleme rehberimizde anlattık.

Nodesty ile staging

Nodesty web hosting paketlerinde cPanel ya da DirectAdmin üzerinden bir alt alan adı ve ayrı bir veritabanı oluşturarak staging sitenizi aynı hesapta kurabilirsiniz; oluşturabileceğiniz alt alan adı ve veritabanı sayısı paket limitlerine bağlıdır ve her alt alan adı için ücretsiz SSL kullanılabilir. JetBackup ile canlı sitenizin yedeğine kontrol panelinden ulaşırsınız. Uygulamanız için ayrı bir staging sunucusu kurmak isterseniz AMD Ryzen 9 9950X VDS paketlerimiz tam root erişimi sunar.

Sıkça Sorulan Sorular

Staging ortamı için ayrı hosting gerekir mi?

Genellikle hayır. Aynı hosting hesabında bir alt alan adı ve ayrı bir veritabanıyla staging sitesi kurabilirsiniz. Yoğun testler yapıyorsanız ya da canlı siteyi hiç etkilememesi gereken ağır işler çalıştırıyorsanız ayrı bir hesap ya da sunucu daha güvenlidir.

Staging sitesi Google'da görünür mü?

Önlem almazsanız görünebilir ve canlı sitenizle aynı içeriği taşıdığı için kopya içerik olarak değerlendirilebilir. Staging sitesini parolayla koruyun ve arama motorlarının dizine eklememesi için noindex etiketi ya da X-Robots-Tag başlığı kullanın.

Staging'deki değişiklikleri canlı siteye nasıl taşırım?

Kod ve tema değişikliklerini Git ya da dosya aktarımıyla taşımak kolaydır. Veritabanını taşırken dikkatli olun; canlı sitede staging kopyasından sonra oluşan siparişler, yorumlar ve kullanıcılar, staging veritabanını canlıya yüklediğinizde kaybolur. Çoğu durumda yalnızca kod ve ayarlar taşınır, içerik canlıda kalır.

Staging sitesi canlı müşterilere e-posta gönderebilir mi?

Evet, önlem almazsanız gönderebilir; staging kopyası canlı sitenin kullanıcı ve müşteri listesini içerir. Staging'de e-posta gönderimini kapatın ya da bütün e-postaları test adresine yönlendiren bir ayar kullanın.

WordPress için staging eklentisi kullanabilir miyim?

Evet. Bazı eklentiler siteyi tek tıkla aynı hesapta bir alt klasöre ya da alt alan adına kopyalar. Büyük sitelerde ve özel yapılandırmalarda elle kurulan bir staging ortamı daha güvenilir sonuç verir.

Staging ile geliştirme ortamı arasındaki fark nedir?

Geliştirme ortamı genellikle geliştiricinin kendi bilgisayarındaki ortamdır ve değişikliklerin yapıldığı yerdir. Staging ise canlı sunucuya mümkün olduğunca benzeyen, değişikliklerin canlıya alınmadan önce son kez denendiği ortamdır.

Nodesty

Yazar hakkında

Nodesty Ekibi · Altyapı ve Destek

Nodesty ekibi sunucularımızı, ağımızı ve DDoS korumamızı her gün işletir ve müşteri destek taleplerini 7/24 yanıtlar. Bu rehberler o deneyimden yazılır.

İlgili yazılar

Sunucunuzu şimdi başlatın.

Nodesty'nin üstün altyapısı ile projelerinizi özgürce inşa edin ve sınır tanımadan ölçeklendirin.

                                                                                                                                                                                                                            
                                                                                                                                                                                                                            
                                                                                                                                                                                                                            
                                                                                                                             ············································                                                   
                                                ··································································································..........···························                                     
                                       ················..........................................................................................................................··············                             
                                  ·············.................::::::::::::::::::::::::::::::::::::::::::::::....................:::::::::::::::::::::::::::::::::::::::................···········                        
                             ············................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............·········                     
                         ············.................:::::::::::::::::::::::::::::::::::::::::::::::::::------------::::::::::::::::::::::::::::::----------------:::::::::::::::::::::..........········                  
                    ············......................::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------:::::::::::::.........········                
                ··········.............................................::::::::::::::::::-------------==========================================-----------------------------------:::::::::::........·······               
             ········..................:.....................................::::::::::--------=======+++++++++++++++++++++++++++++++++++++=========================------------------::::::::::.......·······              
           ······.........::::::::::::::::::::................................:::::::-----=====++++xxxxxx**************************xxxxxxxxx++++++++++++++===================------------::::::::.......·······             
          ·····.......:::::::::::::::::::::::::::.............................:::::----===+++xxx****%%%%&&&&&&#############&&&&&&&%%%%%*******xxxxxxxx++++++++++++++==============----------:::::::......······             
         ····......::::::::-------------:::::::::::..........................::::---===+++xx***%%%&&&####@@@@@@@@@@@@@@@@@@@@@@@@####&&&&&%%%%*******xxxxxxxxx+++++++++++++===========--------::::::......·····             
        ····.....:::::::--------------------:::::::::.......................::::---===++xxx**%%&&&###@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###&&&&%%%%%********xxxxxxxxxxx++++++++++++========------::::::.....······            
        ····.....:::::--------------------------::::::::....................::::---===++xx***%%&&&####@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###&&&&&%%%%%**********xxxxxxxxxxxxx+++++++++=======------:::::.....·····            
        ····....::::::-------=============---------:::::::::................:::::---===+++xx***%%%&&&#####@@@@@@@@@@@@@@@@@@@@@@@@@#####&&&&&%%%%%%*************xxxxxxxxxxxxxx+++++++++======-----:::::....·····            
         ····....:::::-------================---------:::::::::...............:::::----===++++xxx***%%%%&&&&&&#################&&&&&&%%%%%%%*******************xxxxxxxxxxxxxxxxx++++++++======----:::::....·····            
         ·····....:::::--------=================---------::::::::::..............:::::::-----====+++++xxxxxx**************************xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx++++++++=====-----::::....·····            
          ·····.....:::::--------=================----------:::::::::::.................:::::::::-------=============++++++++++++++++++++++++++++++++++++xxxxxxxxxxxxxxxxxxxxxxx++++++++======-----::::....·····            
            ·····.....:::::::----------===========-------------::::::::::::.........................::::::::::::::::::------------------=============+++++++++++++++++++++++++++++++++=======-----::::.....·····            
              ······......:::::::---------------------------------:::::::::::::........................................:::::::::::::::-----------============+++++++++++++++++++++========------:::::.....·····             
                 ······........:::::::::---------------------------:::::::::::::::::...........................................:::::::::::::------------=============================--------::::::.....······              
                    ·········.........:::::::::::::::-------------::::::::::::::::::::::::.......................................::::::::::::::::--------------------------------------::::::::......·······                
                          ··········............::::::::::::::::::::::::::::::::::::::::::::::::::................................::::::::::::::::::::::::::-------------:::::::::::::::.........········                   
                                  ············..................:::::::::::::::::::::::::::::::::::::::::::.........................:::::::::::::::::::::::::::::::::::::................···········                        
                                             ················.............................................................................................................·················                                 
                                                           ······················................................................................···························                                                
                                                                               ·········································································