WordPress Multisite, birden fazla siteyi tek bir WordPress kurulumundan yönetmenin en verimli yollarından biri. Ama bu yapıyı OpenLiteSpeed ile birleştirdiğinde, hem performans hem de yönetim kolaylığı açısından ciddi bir güç elde ediyorsun. Ben bu ikilinin üretim ortamlarında nasıl çalıştığını defalarca gördüm ve doğru yapılandırıldığında gerçekten etkileyici sonuçlar veriyor. Bu yazıda sıfırdan başlayarak OpenLiteSpeed üzerinde WordPress Multisite kurulumunu adım adım ele alacağız.
Neden OpenLiteSpeed ve WordPress Multisite?
Apache veya Nginx kullananlar için OpenLiteSpeed ilk başta yabancı gelebilir. Ama özellikle WordPress için tasarlanmış LiteSpeed Cache eklentisiyle birlikte kullandığında, sayfa yükleme sürelerinde dramatik iyileşmeler görüyorsun. WordPress Multisite tarafında ise 50-100 siteyi tek bir kontrol panelinden yönetmek, güncellemeleri toplu uygulamak ve kaynakları paylaştırmak büyük avantaj sağlıyor.
Gerçek dünya senaryosuna bakalım: Bir dijital ajans, müşterileri için onlarca WordPress sitesi yönetiyor. Her biri için ayrı sunucu veya ayrı WordPress kurulumu yerine, tek bir Multisite ağı üzerinden tüm siteleri idare ediyor. Bu senaryoda OpenLiteSpeed’in sunduğu önbellekleme mekanizması, her site için ayrı ayrı yapılandırma yapılmasına gerek kalmadan merkezi bir performans katmanı sunuyor.
Ön Gereksinimler ve Sistem Hazırlığı
Kuruluma geçmeden önce sistemin hazır olduğundan emin olmamız lazım. Ubuntu 22.04 LTS üzerinde çalışacağız ama CentOS/AlmaLinux için komutlar benzer, sadece paket yöneticisi farklı.
# Sistemi güncelleyelim
sudo apt update && sudo apt upgrade -y
# Gerekli temel paketleri kuralım
sudo apt install -y wget curl unzip git
# Swap alanı kontrolü (özellikle küçük sunucular için)
free -h
swapon --show
# Eğer swap yoksa ekleyelim
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Sunucunun en az 2 GB RAM’e sahip olmasını tavsiye ederim. WordPress Multisite, tek site kurulumuna göre daha fazla kaynak tüketiyor ve buna PHP-FPM süreçlerini de eklediğinde bellek yönetimi kritik hale geliyor.
OpenLiteSpeed Kurulumu
OpenLiteSpeed’i resmi depolardan kurmak en güvenli yol. Kaynak koddan derleme seçeneği de var ama üretim ortamı için depo üzerinden kurmak güncelleme yönetimini çok kolaylaştırıyor.
# OpenLiteSpeed deposunu ekleyelim
wget -O - https://repo.litespeed.sh | sudo bash
# OpenLiteSpeed'i kuralım
sudo apt install openlitespeed -y
# PHP 8.2 ve gerekli uzantıları kuralım
sudo apt install lsphp82 lsphp82-common lsphp82-mysql lsphp82-curl
lsphp82-json lsphp82-imagick lsphp82-intl lsphp82-opcache
lsphp82-redis lsphp82-zip lsphp82-xml lsphp82-mbstring -y
# OpenLiteSpeed servisini başlatalım
sudo systemctl start lsws
sudo systemctl enable lsws
# Durumu kontrol edelim
sudo systemctl status lsws
Kurulum tamamlandıktan sonra admin paneline erişmek için varsayılan port 7080. İlk girişte şifreyi değiştirmen zorunlu, bunu kesinlikle atlamayın.
# Admin şifresini değiştirelim
sudo /usr/local/lsws/admin/misc/admpass.sh
MariaDB ve Veritabanı Yapılandırması
WordPress Multisite için veritabanı yapılandırması önemli. Her alt site kendi tablo önekiyle aynı veritabanında çalışıyor, bu yüzden veritabanı performansı kritik.
# MariaDB kurulumu
sudo apt install mariadb-server mariadb-client -y
sudo systemctl start mariadb
sudo systemctl enable mariadb
# Güvenlik yapılandırması
sudo mysql_secure_installation
# WordPress için veritabanı ve kullanıcı oluşturalım
sudo mysql -u root -p << 'EOF'
CREATE DATABASE wordpress_multisite CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wp_multisite_user'@'localhost' IDENTIFIED BY 'GucluBirSifre123!';
GRANT ALL PRIVILEGES ON wordpress_multisite.* TO 'wp_multisite_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
EOF
MariaDB’nin innodb_buffer_pool_size ayarını toplam RAM’in %70’i olarak ayarlamak, özellikle çok sayıda alt site içeren Multisite kurulumlarında performansı belirgin şekilde artırıyor.
# MariaDB optimizasyonu
sudo nano /etc/mysql/mariadb.conf.d/99-wordpress-multisite.cnf
Dosyaya şu içeriği ekleyelim:
[mysqld]
innodb_buffer_pool_size = 512M
innodb_log_file_size = 128M
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
max_connections = 150
query_cache_type = 1
query_cache_size = 64M
tmp_table_size = 32M
max_heap_table_size = 32M
WordPress İndirme ve Kurulumu
# Web kök dizini oluşturalım
sudo mkdir -p /var/www/multisite.ornek.com/html
sudo chown -R nobody:nogroup /var/www/multisite.ornek.com/html
# WordPress'i indirelim
cd /tmp
wget https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz
sudo mv wordpress/* /var/www/multisite.ornek.com/html/
# Doğru izinleri ayarlayalım
sudo chown -R nobody:nogroup /var/www/multisite.ornek.com/html
sudo find /var/www/multisite.ornek.com/html -type d -exec chmod 755 {} ;
sudo find /var/www/multisite.ornek.com/html -type f -exec chmod 644 {} ;
# wp-config.php oluşturalım
cd /var/www/multisite.ornek.com/html
sudo cp wp-config-sample.php wp-config.php
sudo nano wp-config.php
wp-config.php içinde şu değerleri düzenleyelim:
define( 'DB_NAME', 'wordpress_multisite' );
define( 'DB_USER', 'wp_multisite_user' );
define( 'DB_PASSWORD', 'GucluBirSifre123!' );
define( 'DB_HOST', 'localhost' );
define( 'DB_CHARSET', 'utf8mb4' );
# Multisite için gerekli satırlar
define( 'WP_ALLOW_MULTISITE', true );
# Performans için ek ayarlar
define( 'WP_MEMORY_LIMIT', '256M' );
define( 'WP_MAX_MEMORY_LIMIT', '512M' );
define( 'DISABLE_WP_CRON', true );
OpenLiteSpeed Virtual Host Yapılandırması
Bu kısım işin en kritik bölümü. OpenLiteSpeed’in web arayüzünden yapılandırma yapabiliriz ama ben doğrudan konfig dosyaları üzerinden çalışmayı tercih ediyorum, çünkü bu yaklaşım daha tekrarlanabilir ve versiyon kontrolüne uygun.
# Virtual host konfigürasyon dizini oluşturalım
sudo mkdir -p /usr/local/lsws/conf/vhosts/multisite
# Virtual host konfigürasyon dosyasını oluşturalım
sudo nano /usr/local/lsws/conf/vhosts/multisite/vhconf.conf
Dosya içeriği:
docRoot /var/www/multisite.ornek.com/html/
vhDomain multisite.ornek.com
vhAliases *.multisite.ornek.com
adminEmails [email protected]
index {
useServer 0
indexFiles index.php, index.html
}
scripthandler {
add lsapi:lsphp82 php
}
extprocessor lsphp82 {
type lsapi
address uds://tmp/lshttpd/lsphp82.sock
maxConns 10
env PHP_LSAPI_CHILDREN=10
initTimeout 60
retryTimeout 0
persistConn 1
respBuffer 0
autoStart 2
path /usr/local/lsws/lsphp82/bin/lsphp
backlog 100
instances 1
priority 0
memSoftLimit 2047M
memHardLimit 2047M
procSoftLimit 400
procHardLimit 500
}
rewrite {
enable 1
autoLoadHtaccess 1
rules <<<END_rules
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
# Multisite için network kurulumu - subdomain modunda
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*.php)$ $2 [L]
RewriteRule . index.php [L]
END_rules
}
context / {
location /var/www/multisite.ornek.com/html/
allowBrowse 1
rewrite {
enable 1
}
}
OpenLiteSpeed Ana Konfigürasyona Virtual Host Ekleme
sudo nano /usr/local/lsws/conf/httpd_config.conf
virtualhost bloğunu ekleyelim:
virtualhost multisite {
vhRoot /usr/local/lsws/conf/vhosts/multisite/
configFile /usr/local/lsws/conf/vhosts/multisite/vhconf.conf
allowSymbolLink 1
enableScript 1
restrained 0
setUIDMode 0
}
listener HTTP {
address *:80
secure 0
map multisite multisite.ornek.com, *.multisite.ornek.com
}
WordPress Multisite Aktivasyonu
Web tarayıcıdan WordPress kurulumunu tamamladıktan sonra Multisite ağını aktif etmemiz gerekiyor. Bu adımı wp-cli üzerinden yapmak çok daha hızlı ve güvenilir.
# WP-CLI kurulumu
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
# Multisite ağını aktif edelim (subdomain modunda)
cd /var/www/multisite.ornek.com/html
sudo -u nobody wp core multisite-install
--url="https://multisite.ornek.com"
--title="Multisite Ağım"
--admin_user="admin"
--admin_password="GucluAdminSifresi!"
--admin_email="[email protected]"
--subdomains
# Kurulumun başarılı olduğunu doğrulayalım
sudo -u nobody wp site list
Kurulum tamamlandıktan sonra wp-config.php dosyasına eklenmesi gereken satırları WordPress otomatik olarak gösteriyor. Bu satırları mutlaka ekleyelim:
sudo nano /var/www/multisite.ornek.com/html/wp-config.php
Eklenmesi gereken satırlar:
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', true );
define( 'DOMAIN_CURRENT_SITE', 'multisite.ornek.com' );
define( 'PATH_CURRENT_SITE', '/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );
# Wildcard subdomain için
define( 'COOKIE_DOMAIN', '' );
LiteSpeed Cache Eklentisi Yapılandırması
OpenLiteSpeed’in gerçek gücü burada ortaya çıkıyor. LiteSpeed Cache eklentisi, sunucu seviyesinde önbellekleme yapabildiği için PHP’yi bypass ediyor ve statik dosya hızında içerik sunabiliyor.
# LiteSpeed Cache eklentisini yükleyelim
cd /var/www/multisite.ornek.com/html
sudo -u nobody wp plugin install litespeed-cache --activate --allow-root
# Network genelinde aktif edelim
sudo -u nobody wp plugin activate litespeed-cache --network
# Temel önbellek ayarlarını yapalım
sudo -u nobody wp litespeed-option set cache-browser true --allow-root
sudo -u nobody wp litespeed-option set cache-object true --allow-root
sudo -u nobody wp litespeed-option set object-kind 1 --allow-root
Multisite yapısında her alt sitenin önbelleği bağımsız olarak yönetiliyor. Network yöneticisi olarak global ayarları yapabilirsin, site yöneticileri ise kendi önbellek kurallarını ekleyebilir. Bu hiyerarşik yapı özellikle ajans senaryolarında çok işe yarıyor.
SSL Sertifikası Yapılandırması
Wildcard subdomain için SSL sertifikası almak Multisite’ın en kritik adımlarından biri. Let’s Encrypt ile Certbot kullanacağız.
# Certbot kurulumu
sudo apt install certbot -y
# Wildcard sertifika için DNS doğrulama kullanacağız
# (Örnek olarak Cloudflare DNS eklentisi)
sudo apt install python3-certbot-dns-cloudflare -y
# Cloudflare API bilgilerini girelim
sudo mkdir -p /root/.secrets
sudo nano /root/.secrets/cloudflare.ini
Dosya içeriği:
dns_cloudflare_api_token = CLOUDFLARE_API_TOKEN_BURAYA
sudo chmod 600 /root/.secrets/cloudflare.ini
# Wildcard sertifika alalım
sudo certbot certonly
--dns-cloudflare
--dns-cloudflare-credentials /root/.secrets/cloudflare.ini
-d multisite.ornek.com
-d *.multisite.ornek.com
--preferred-challenges dns-01
# OpenLiteSpeed SSL listener ekleyelim
sudo nano /usr/local/lsws/conf/httpd_config.conf
SSL listener bloğu:
listener HTTPS {
address *:443
secure 1
keyFile /etc/letsencrypt/live/multisite.ornek.com/privkey.pem
certFile /etc/letsencrypt/live/multisite.ornek.com/fullchain.pem
certChain 1
sslProtocol 24
ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256
enableECDHE 1
renegProtection 1
sslSessionCache 1
sslSessionTickets 0
map multisite multisite.ornek.com, *.multisite.ornek.com
}
PHP Optimizasyonu
Multisite yapısı için PHP’yi doğru ayarlamak, sorunsuz bir deneyim için şart.
# PHP konfigürasyon dosyasını düzenleyelim
sudo nano /usr/local/lsws/lsphp82/etc/php/8.2/litespeed/php.ini
Kritik ayarlar:
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
max_input_vars = 5000
opcache.enable = 1
opcache.memory_consumption = 256
opcache.max_accelerated_files = 20000
opcache.revalidate_freq = 60
opcache.validate_timestamps = 1
opcache.save_comments = 1
Wildcard DNS Yapılandırması
Bu adım çok atlanan ama çok önemli bir adım. Subdomain modunda Multisite için DNS tarafında wildcard kaydı olmadan yeni oluşturulan alt siteler erişilemez oluyor.
DNS sağlayıcında şu kayıtları oluşturman gerekiyor:
- A kaydı:
multisite.ornek.com-> Sunucu IP adresi - A kaydı:
*.multisite.ornek.com-> Sunucu IP adresi
Eğer Cloudflare kullanıyorsan wildcard için proxy özelliğini dikkatli yönet. Bazı durumlarda wildcard subdomain proxy’yi devre dışı bırakmak gerekebilir.
Performans Testi ve İzleme
Kurulum tamamlandıktan sonra performansı test etmek ve izlemek önemli.
# OpenLiteSpeed'i yeniden başlatalım
sudo systemctl restart lsws
# Log dosyalarını izleyelim
sudo tail -f /usr/local/lsws/logs/error.log
sudo tail -f /usr/local/lsws/logs/access.log
# PHP hata logları
sudo tail -f /usr/local/lsws/logs/stderr.log
# Yeni site oluşturup test edelim
cd /var/www/multisite.ornek.com/html
sudo -u nobody wp site create
--slug="test-site"
--title="Test Sitesi"
--email="[email protected]"
# Önbellek durumunu kontrol edelim
sudo -u nobody wp litespeed-purge all
# Aktif siteleri listeleyelim
sudo -u nobody wp site list --fields=blog_id,domain,path,archived,spam,deleted
Yaygın Sorunlar ve Çözümleri
Üretim ortamında sıkça karşılaştığım sorunlardan bahsedelim.
“Too many redirects” hatası: Çoğunlukla HTTPS yönlendirmesi ile OpenLiteSpeed SSL sonlandırması arasındaki çakışmadan kaynaklanıyor. wp-config.php dosyasına şunu ekle:
if ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && 'https' === $_SERVER['HTTP_X_FORWARDED_PROTO'] ) {
$_SERVER['HTTPS'] = 'on';
}
Alt site görselleri yüklenmiyor: Multisite’ta uploads dizini yapısı farklı. wp-content/uploads/sites/ dizin yapısının doğru oluşturulduğunu ve izinlerin nobody:nogroup olduğunu kontrol et.
Yavaş admin paneli: Object caching aktif değilse her istek veritabanına gidiyor. Redis kurarak object cache’i aktif etmek bu sorunu çözüyor.
# Redis kurulumu
sudo apt install redis-server -y
sudo systemctl enable redis-server
sudo systemctl start redis-server
# WP-CLI ile Redis object cache aktif etme
sudo -u nobody wp plugin install redis-cache --activate --network
sudo -u nobody wp redis enable
Otomatik Yedekleme
Multisite yapısında yedekleme stratejisi kritik. Hem dosyaları hem de veritabanını düzenli yedeklemek zorundasın.
# Yedekleme scripti oluşturalım
sudo nano /usr/local/bin/multisite-backup.sh
Script içeriği:
#!/bin/bash
BACKUP_DIR="/backup/multisite"
DATE=$(date +%Y%m%d_%H%M%S)
SITE_DIR="/var/www/multisite.ornek.com/html"
mkdir -p $BACKUP_DIR
# Veritabanı yedeği
mysqldump -u wp_multisite_user -p'GucluBirSifre123!'
wordpress_multisite | gzip > $BACKUP_DIR/db_$DATE.sql.gz
# Dosya yedeği (uploads hariç, büyük olabilir)
tar -czf $BACKUP_DIR/files_$DATE.tar.gz
--exclude="$SITE_DIR/wp-content/uploads"
$SITE_DIR
# 30 günden eski yedekleri sil
find $BACKUP_DIR -type f -mtime +30 -delete
echo "Yedekleme tamamlandı: $DATE"
sudo chmod +x /usr/local/bin/multisite-backup.sh
# Cron job ekleyelim
echo "0 2 * * * root /usr/local/bin/multisite-backup.sh >> /var/log/multisite-backup.log 2>&1" |
sudo tee /etc/cron.d/multisite-backup
Güvenlik Sertleştirme
WordPress Multisite, tek site kurulumuna göre daha geniş bir saldırı yüzeyi sunuyor. Birkaç temel güvenlik adımı almak şart.
- XML-RPC’yi devre dışı bırak: Brute force saldırılarının hedefi olan bu özelliği kullanmıyorsan kapat
- wp-login.php için rate limiting: OpenLiteSpeed’in built-in DDoS koruma özelliğini aktif et
- Dosya düzenlemeyi devre dışı bırak:
define('DISALLOW_FILE_EDIT', true)satırını wp-config.php’ye ekle - Kullanılmayan temaları sil: Her alt sitede aktif olmayan temalar güvenlik açığı oluşturabilir
- Yönetici kullanıcı adını değiştir: “admin” kullanıcı adını kullanma, saldırganların ilk denediği şey bu
# wp-config.php güvenlik ayarları
sudo nano /var/www/multisite.ornek.com/html/wp-config.php
Eklenecek satırlar:
define( 'DISALLOW_FILE_EDIT', true );
define( 'DISALLOW_FILE_MODS', false ); # Eklenti güncellemelerine izin ver
define( 'FORCE_SSL_ADMIN', true );
define( 'WP_DEBUG', false );
define( 'WP_DEBUG_LOG', false );
define( 'WP_DEBUG_DISPLAY', false );
Sonuç
OpenLiteSpeed ile WordPress Multisite kombinasyonu, doğru yapılandırıldığında son derece güçlü ve ölçeklenebilir bir platform sunuyor. Bu yazıda anlattığım adımları takip ederek hem performanslı hem de güvenli bir Multisite ağı kurabilirsin.
Benim deneyimimde en kritik nokta wildcard DNS yapılandırması ve SSL sertifikası ayarları. Bu iki konuya dikkat etmezsen saatler harcayabilirsin. LiteSpeed Cache eklentisinin sunucu seviyesinde entegrasyonu ise Apache veya Nginx ile kıyaslandığında belirgin bir fark yaratıyor; özellikle yoğun trafik alan sitelerde bu fark çok daha belirgin hale geliyor.
Kurulumun ardından birkaç hafta boyunca log dosyalarını takip etmeni ve performans metriklerini izlemeni öneririm. Her Multisite kurulumu kendine özgü davranış kalıpları geliştiriyor ve zamanla bu kalıplara göre yapılandırmanı ince ayar yapman gerekecek. Sorularınız için yorum bölümünü kullanabilirsiniz.