Ziyaretçiler İçin Kesintiyi En Aza İndirerek WordPress Barındırma Sağlayıcısını Değiştirme
Barındırma sağlayıcısı değiştirmek yalnızca dosya kopyalamaktan ibaret değildir: WordPress veritabanı, URL’leri saran serileştirilmiş veriler içerir ve dikkatsiz bir değişiklik bunları sessizce bozar. İlk dışa aktarımdan son DNS geçişine kadar izlediğim yöntem şudur.
URL değişikliği derinlemesine neyi etkiliyor
WordPress, bazı ayarlarını (tema seçenekleri, widget yapılandırması, eklenti tercihleri) MySQL veritabanının metin sütunlarında serileştirilmiş PHP verisi olarak saklar. Serileştirilmiş bir dize, içerdiği her alt dizinin tam uzunluğunu kodlar: örneğin s:21:"https://eski-site.com", “21 karakterlik bir dize, işte içeriği” anlamına gelir. Test veya hedef site farklı bir URL kullanıyorsa (geçici adres, alt alan adı, IP) ve bu, REPLACE() ile basit bir SQL UPDATE’iyle değiştirilirse, tırnak işaretlerinden önce belirtilen sayı artık yeni dize uzunluğuyla uyuşmaz.
Bu göz ardı edilebilecek bir durum değildir: bir WooCommerce mağazasında, eski sitenin adresi düzinelerce farklı serileştirilmiş kayıtta (ödeme ağ geçidi ayarları, sepet widget’ları, kargo eklentisi tercihleri) karşımıza çıkabilir ve her biri ham bir değişiklikle bozulma riski taşır. Bu dağınık hacim, bir müşteri belirli bir aksaklığı bildirene kadar sorunu ilk bakışta fark etmeyi zorlaştıran şeydir.
Bu durumda WordPress veriyi doğru şekilde ters serileştiremez: tema ayarları varsayılan değerlere sıfırlanır, widget’lar kenar çubuğundan kaybolur, eklenti seçenekleri boşalır; genellikle günlerce görünür bir hata olmadan. Doğru yöntem, her değişiklikte bu uzunlukları yeniden hesaplayan bir araçtan geçer; genellikle WP-CLI’nin wp search-replace eski-url yeni-url --all-tables komutu kullanılır.
Görünür bir kesinti olmadan barındırma sağlayıcısını nasıl değiştiriyorum
-
Dosyaları ve veritabanını kopyalama
Canlı siteye dokunmadan sitenin tüm dosyalarını ve veritabanının tam bir dışa aktarımını yeni barındırmaya kopyalarım.
-
wp-config.php dosyasını uyarlama
Yeni ortamda wp-config.php içine yeni veritabanı bağlantı bilgilerini (ad, kullanıcı, parola, sunucu) girerim.
-
wp search-replace ile URL düzeltme
Test sitesi farklı bir adres altında (geçici alt alan adı, IP) erişilebiliyorsa, kayıtlı URL’leri, serileştirilmiş dize uzunluklarını bozmak yerine yeniden hesaplayan wp search-replace ile düzeltirim.
-
Yerel hosts dosyası üzerinden doğrulama
Makinemin hosts dosyasını geçici olarak düzenleyerek siteyi yeni barındırmada test ederim; bu, herkese açık DNS’e dokunmadan veya ziyaretçileri etkilemeden yeni sunucuya işaret etmemi sağlar.
-
Geçiş öncesi DNS TTL’ini düşürme
Geçişten birkaç gün önce, değişiklik gerçekleştiğinde yayılmayı hızlandırmak için DNS kayıtlarının TTL (yaşam süresi) değerini düşürürüm.
-
Düşük trafikte DNS veya sunucu geçişi
Geçişi düşük trafikli bir zaman dilimine planlarım ve site çevrimiçi satış yapıyorsa ilk kopyalama ile son geçiş arasında alınan siparişleri veya mesajları sisteme aktarırım.
Daha fazlası için
-
Sıralamaları kaybetmeden alan adı değiştirme
Aynı serileştirme mekanizması geçerlidir; buna ek olarak yeni alan adına 301 yönlendirmelerin yönetimi de gerekir.
-
Bir WordPress sitesini HTTPS’e taşıma
Bu kez protokol üzerinde, aynı düzeltme mantığını izleyen benzer nitelikte bir URL değişikliği.
-
E-ticaret için barındırma seçme
Bir WooCommerce mağazası için barındırma önermeden önce kontrol ettiğim kriterler.
-
PHP serileştirmesini anlama
Bu sayfada ele alınan mekanizmanın tam tanımı.
İhtiyacınızı bir dakikada anlatın
Size bir anket daha değil, doğrudan bir tahmin sunabilmem için birkaç hedefli soru.