İçindekiler
WordPress Multisite, tek bir WordPress kurulumu üzerinde birden fazla siteyi çalıştırmanızı sağlayan yerleşik bir özelliktir. Bütün siteler aynı çekirdek dosyalarını, aynı eklenti ve tema dosyalarını ve aynı veritabanını paylaşır. Her sitenin ise kendi içerikleri, ayarları ve kullanıcı rolleri vardır.
Teoride, onlarca siteyi tek bir panelden yönetmek ve tek bir güncellemeyle hepsini güncel tutmak çok cazip. Pratikte ise Multisite her durum için doğru araç değil.
Nasıl çalışır?
Multisite'ta bir ağ (network) ve bu ağdaki siteler vardır. Ağı yöneten süper yönetici (Super Admin) rolü, bütün sitelerde yetkilidir; eklenti ve tema kurabilir, site ekleyip silebilir.
Siteler iki şekilde adreslenebilir:
- Alt klasör:
ornek.com/istanbul,ornek.com/ankara - Alt alan adı:
istanbul.ornek.com,ankara.ornek.com
Ayrıca her siteye tamamen farklı bir alan adı da atanabilir (domain mapping). Bu özellik WordPress 4.5'ten beri çekirdekte bulunuyor.
Veritabanında ağ genelindeki bilgiler wp_site, wp_sitemeta, wp_blogs gibi tablolarda tutulur. Her site için ise wp_2_posts, wp_3_posts gibi önekli ayrı tablolar oluşturulur. Kullanıcılar ise ağ genelinde tek bir tabloda durur.
Ne zaman iyi bir seçim?
Aynı kurumun benzer siteleri. Bir üniversitenin fakülte siteleri, bir zincirin şube siteleri, bir şirketin farklı dillerdeki siteleri. Hepsi aynı temayı ve benzer eklentileri kullanır, aynı ekip tarafından yönetilir.
Kullanıcıların kendi sitesini açtığı platformlar. Öğrencilerin ya da üyelerin kendi bloglarını oluşturduğu bir platform. WordPress.com'un kendisi de bu mimarinin büyük ölçekli bir örneğidir.
Ortak kullanıcı tabanı gereken durumlar. Bir kullanıcının tek bir hesapla birden fazla sitede yazabilmesi gerekiyorsa, Multisite bunu doğal olarak sağlar.
Ne zaman başınızı ağrıtır?
Birbirinden bağımsız müşteri siteleri. Bir ajansın farklı müşterilere ait sitelerini tek bir Multisite ağında barındırması genellikle kötü bir fikirdir:
- Tek bir hata hepsini etkiler. Bir eklenti güncellemesi ya da bir PHP hatası, ağdaki bütün siteleri aynı anda çökertebilir.
- Tek bir güvenlik açığı hepsini etkiler. Siteler aynı dosyaları ve aynı veritabanını paylaştığı için, bir sitenin ele geçirilmesi genellikle bütün ağın ele geçirilmesi demektir.
- Bir müşteri ayrılmak istediğinde sitesini ağdan ayırmak zahmetli bir iştir.
- Farklı ihtiyaçlar. Bir müşteri farklı bir PHP sürümüne, farklı bir eklentiye ya da özel bir yapılandırmaya ihtiyaç duyduğunda, ortak bir altyapıda bunu sağlamak zordur.
Eklenti uyumluluğu. Eklentilerin çoğu Multisite'ta çalışır, ama hepsi değil. Bazı eklentiler ağ genelinde etkinleştirildiğinde beklenmedik davranışlar gösterir, bazıları ise yalnızca tek site kurulumları için tasarlanmıştır. Özellikle güvenlik, önbellek, yedekleme ve e-ticaret eklentilerinin Multisite desteğini önceden kontrol edin.
Kaynak paylaşımı. Bütün siteler aynı PHP havuzunu ve veritabanını paylaştığı için, yoğun trafik alan tek bir site diğerlerini yavaşlatabilir.
Önemli kısıtlamalar
- Eklenti ve temaları yalnızca süper yönetici kurabilir. Site yöneticileri yalnızca ağda kurulu olanlar arasından seçim yapabilir. Bu, kontrol açısından bir avantaj, esneklik açısından bir kısıtlamadır.
- Yöneticiler varsayılan olarak
unfiltered_htmlyetkisine sahip değildir. Tek site kurulumunda yöneticiler içeriğe her türlü HTML ve JavaScript ekleyebilirken, Multisite'ta bu yetki yalnızca süper yöneticilere aittir. Bu güvenlik açısından doğru bir karardır, ama bazı yerleştirme kodlarının neden çalışmadığını açıklar. - Yedekleme ve geri yükleme daha karmaşıktır. Tek bir sitenin yedeğini almak ya da yalnızca bir siteyi geri yüklemek, her yedekleme aracında desteklenmez.
- Bir siteyi ağdan çıkarmak veritabanı tablolarının, kullanıcıların ve medya dosyalarının ayrıştırılmasını gerektirir. Bunun için araçlar var, ama hiçbir zaman tek tıkla olmaz.
Multisite'ı etkinleştirmek
Kararınızı verdiyseniz, wp-config.php dosyasına şu satırı ekleyerek başlayın:
define( 'WP_ALLOW_MULTISITE', true );
Ardından Araçlar → Ağ Kurulumu sayfasındaki adımları izleyin. WordPress size wp-config.php ve .htaccess dosyalarına eklemeniz gereken satırları verir. Alt alan adı yapısı seçtiyseniz DNS'te bir joker (wildcard) kayıt (*.ornek.com) ve buna uygun bir sertifika gerekir.
WP-CLI ile bütün siteler üzerinde işlem yapmak kolaydır:
wp site list --fields=blog_id,url
wp plugin update --all --network
for u in $(wp site list --field=url); do wp --url="$u" cache flush; done
Alternatif: Ayrı kurulumlar ve iyi otomasyon
Birbirinden bağımsız çok sayıda siteyi yönetiyorsanız, her siteyi kendi kullanıcısı, kendi PHP havuzu ve kendi veritabanıyla ayrı bir kurulum olarak tutmak ve bunları otomasyonla yönetmek genellikle daha sağlam bir yaklaşımdır. WP-CLI ile yazılmış basit bir döngü, onlarca sitenin güncellemesini tek komutla yapabilir. Bir site sorun çıkardığında da diğerleri bundan etkilenmez.
Karar için kısa sorular
- Siteler aynı kuruma mı ait ve aynı ekip tarafından mı yönetiliyor?
- Hepsi aynı tema ve eklentileri kullanabilir mi?
- Kullanıcıların birden fazla sitede ortak hesapla çalışması gerekiyor mu?
- Bir sitenin sorununun diğerlerini etkilemesi kabul edilebilir mi?
Cevapların çoğu "evet" ise Multisite hayatınızı kolaylaştırır. Çoğu "hayır" ise ayrı kurulumlar ve iyi bir otomasyon, uzun vadede çok daha az baş ağrısı demektir.
Yorumlar
Henüz yorum yok. İlk yorumu siz yazın.