WordPress’i W3 Total Cache ile Lighttpd Sunucusunda Kurulumu ve Optimizasyonu
Giriş
İnternet dünyasında hızlı yüklenen web siteleri, hem kullanıcı deneyimi hem de arama motoru optimizasyonu (SEO) açısından kritik bir öneme sahiptir. Özellikle WordPress gibi dinamik içerik yönetim sistemleri, her sayfa isteğinde veritabanı sorguları ve PHP işlemleri gerçekleştirdiği için performans darboğazları yaşayabilir. Bu makalede, hafif, yüksek performanslı ve düşük kaynak tüketen bir web sunucusu olan Lighttpd ile WordPress’i kurmayı ve W3 Total Cache eklentisi aracılığıyla nasıl maksimum performansa ulaştıracağımızı adım adım inceleyeceğiz. Lighttpd’nin verimliliği ile W3 Total Cache’in kapsamlı önbellekleme yeteneklerini birleştirerek, ziyaretçilerinize ışık hızında bir deneyim sunmayı hedefliyoruz.
Neden Lighttpd ve W3 Total Cache?
WordPress sitenizin performansını artırmak için birçok farklı sunucu ve önbellekleme çözümü bulunmaktadır. Ancak Lighttpd ve W3 Total Cache kombinasyonu, belirli senaryolarda benzersiz avantajlar sunar.
Lighttpd’nin Avantajları
Lighttpd, özellikle düşük bellek tüketimi ve yüksek performans gerektiren ortamlar için tasarlanmış açık kaynaklı bir web sunucusudur. Apache ve Nginx gibi popüler alternatiflere kıyasla bazı önemli avantajları vardır:
* Düşük Kaynak Tüketimi: Lighttpd, diğer sunuculara göre daha az CPU ve RAM kullanır. Bu özellik, kısıtlı kaynaklara sahip sanal sunucular (VPS) veya konteyner ortamları için idealdir.
* Yüksek Performans: Asenkron I/O modeli sayesinde, yüksek eşzamanlı bağlantıları düşük gecikme süresiyle işleyebilir. Statik dosyaları sunmada oldukça hızlıdır.
* Esneklik: Modüler yapısı sayesinde, yalnızca ihtiyacınız olan özellikleri etkinleştirerek sunucu yükünü daha da azaltabilirsiniz.
* Kolay Yapılandırma: Yapılandırma dosyaları nispeten basittir ve anlaşılırdır.
* FastCGI Desteği: PHP gibi dinamik dilleri çalıştırmak için FastCGI (PHP-FPM) ile sorunsuz bir şekilde entegre olur.
W3 Total Cache’in Faydaları
W3 Total Cache (W3TC), WordPress için en kapsamlı ve güçlü önbellekleme eklentilerinden biridir. Sitenizin performansını çeşitli katmanlarda artırarak, yüklenme sürelerini önemli ölçüde azaltır:
* Sayfa Önbellekleme: Dinamik olarak oluşturulan HTML sayfalarını statik hale getirerek, her istekte PHP ve veritabanı işlemlerini atlar.
* Nesne Önbellekleme: Veritabanı sorgularının sonuçlarını ve diğer PHP nesnelerini önbelleğe alarak, tekrarlayan işlemleri hızlandırır. Memcached veya Redis gibi çözümlerle entegre olabilir.
* Veritabanı Önbellekleme: Sık kullanılan veritabanı sorgularını önbelleğe alarak veritabanı sunucusunun yükünü azaltır.
* Tarayıcı Önbellekleme: Statik dosyaların (CSS, JS, resimler) ziyaretçinin tarayıcısında depolanmasını sağlayarak, sonraki ziyaretlerde daha hızlı yüklenmeyi sağlar.
* Minify (Küçültme): HTML, CSS ve JavaScript dosyalarındaki gereksiz boşlukları ve karakterleri kaldırarak dosya boyutlarını küçültür.
* CDN Entegrasyonu: İçerik Dağıtım Ağı (CDN) ile entegre olarak, statik dosyalarınızı coğrafi olarak yakın sunuculardan dağıtarak yüklenme sürelerini global olarak iyileştirir.
* Uygulama Performansı (OPcode Cache): PHP OPcode önbellekleyicileri (OPcache) ile entegre olarak, PHP kodlarının derlenmiş hallerini önbelleğe alarak her istekte tekrar derlenmesini engeller.
Bu iki teknolojinin birleşimi, özellikle yüksek trafikli WordPress siteleri için maliyet etkin ve performans odaklı bir çözüm sunar.
Ön Gereksinimler
Kuruluma başlamadan önce, belirli bir sunucu ortamına ve yazılımlara ihtiyacımız var.
Sunucu Ortamı
* İşletim Sistemi: Tercihen Ubuntu, Debian, CentOS gibi bir Linux dağıtımı. Bu makalede Ubuntu/Debian tabanlı sistemler için komutlar kullanılacaktır.
* Root veya Sudo Yetkileri: Sunucuya yazılım kurmak ve yapılandırma dosyalarını düzenlemek için yönetici yetkilerine sahip olmanız gerekmektedir.
Gerekli Yazılımlar
* Lighttpd: Web sunucusu.
* PHP-FPM: PHP kodlarını çalıştırmak için FastCGI Process Manager.
* MySQL veya MariaDB: WordPress’in veritabanı için.
* wget veya curl: Dosya indirmek için.
* unzip: Sıkıştırılmış dosyaları açmak için.
Lighttpd Kurulumu
Lighttpd, PHP-FPM ve bir veritabanı sunucusunun kurulumu ile başlayacağız.
Lighttpd Paketlerinin Kurulumu
İlk olarak sunucunuzu güncelleyelim ve Lighttpd’yi kuralım:
sudo apt update
sudo apt upgrade -y
sudo apt install lighttpd -y
Kurulumdan sonra Lighttpd servisinin çalışıp çalışmadığını kontrol edebilirsiniz:
sudo systemctl status lighttpd
Tarayıcınızda sunucunuzun IP adresini veya alan adını ziyaret ettiğinizde Lighttpd’nin varsayılan hoş geldiniz sayfasını görmelisiniz.
PHP-FPM Kurulumu ve Yapılandırması
WordPress PHP tabanlı bir uygulama olduğu için PHP-FPM’e ihtiyacımız var. Genellikle en son stabil PHP sürümünü kullanmak iyi bir fikirdir. Örneğin, PHP 8.x için:
sudo apt install php8.x-fpm php8.x-mysql php8.x-curl php8.x-gd php8.x-mbstring php8.x-xml php8.x-zip php8.x-opcache -y
(Burada php8.x yerine kullandığınız PHP sürümünü, örneğin php8.2 yazmalısınız.)
PHP-FPM servisinin çalıştığından emin olun:
sudo systemctl status php8.x-fpm
Şimdi Lighttpd’yi PHP-FPM ile entegre etmemiz gerekiyor. Lighttpd’nin FastCGI modülünü etkinleştirelim:
sudo lighty-enable-mod fastcgi
sudo lighty-enable-mod fastcgi-php
sudo systemctl restart lighttpd
Lighttpd’nin fastcgi.conf dosyasını düzenleyerek PHP-FPM soket yolunu doğru şekilde ayarlamamız gerekebilir. Genellikle bu dosya /etc/lighttpd/conf-enabled/15-fastcgi-php.conf konumundadır.
sudo nano /etc/lighttpd/conf-enabled/15-fastcgi-php.conf
İçeriği aşağıdaki gibi olmalıdır (PHP sürümünüze göre php-fpm.sock yolu değişebilir):
## /etc/lighttpd/conf-enabled/15-fastcgi-php.conf
-- coding: utf-8 --
# this is the default PHP-FastCGI setup for lighttpd
# if you want to use a different PHP FastCGI server
just copy this file to fastcgi.conf and change the
socket and bin-path
# For PHP 8.x
fastcgi.server += ( ".php" =>
((
"socket" => "/var/run/php/php8.x-fpm.sock", # PHP sürümünüze göre güncelleyin
"broken-scriptfilenames" => "enable"
))
)
Değişiklikleri kaydettikten sonra Lighttpd’yi yeniden başlatın:
sudo systemctl restart lighttpd
MySQL/MariaDB Kurulumu
WordPress bir veritabanına ihtiyaç duyar. MySQL veya MariaDB kullanabiliriz. MariaDB, MySQL’in topluluk tarafından geliştirilen bir fork’udur ve tamamen uyumludur.
sudo apt install mariadb-server -y
Kurulumdan sonra MariaDB’yi güvenli hale getirmek için:
sudo mysql_secure_installation
Bu komut size root şifresi belirleme, anonim kullanıcıları kaldırma, root’un uzaktan girişini engelleme ve test veritabanını kaldırma gibi seçenekler sunacaktır. Tüm sorulara Y (Yes) ile yanıt vermeniz önerilir.
Lighttpd WordPress Yapılandırması
Şimdi WordPress için Lighttpd’yi yapılandıracağız.
Sanal Host Oluşturma
WordPress siteniz için bir sanal host dosyası oluşturalım. Varsayılan belge kökü /var/www/html yerine kendi dizinimizi kullanalım. Örneğin, /var/www/wordpress.
sudo mkdir -p /var/www/wordpress
sudo chown -R www-data:www-data /var/www/wordpress
sudo chmod -R 755 /var/www/wordpress
Şimdi WordPress için bir Lighttpd yapılandırma dosyası oluşturalım. Örneğin, wordpress.conf adında:
sudo nano /etc/lighttpd/conf-available/20-wordpress.conf
Aşağıdaki içeriği dosyaya yapıştırın. example.com yerine kendi alan adınızı veya IP adresinizi yazın.
## /etc/lighttpd/conf-available/20-wordpress.conf
WordPress Virtual Host Configuration
$HTTP["host"] =~ "(^|\.)example\.com$" { # Alan adınızı güncelleyin
server.document-root = "/var/www/wordpress" # WordPress kurulum dizininiz
server.errorlog = "/var/log/lighttpd/wordpress-error.log"
accesslog.filename = "/var/log/lighttpd/wordpress-access.log"
# PHP-FPM ile entegrasyon (daha önce fastcgi-php.conf ile yapıldı)
# Bu bölümü zaten 15-fastcgi-php.conf'ta tanımladığımız için tekrar yazmıyoruz.
# Ancak eğer sadece bu sanal host için PHP-FPM kullanacaksanız buraya ekleyebilirsiniz.
# Rewrite kuralları (WordPress permalinkleri için)
url.rewrite-if-not-file = (
"^/(wp-admin|wp-content|wp-includes|wp-json|xmlrpc\.php)(.*)$" => "$0",
"^/(.\.php)(.)$" => "$0",
"^/(.*)$" => "/index.php/$1"
)
# Statik dosyalar için tarayıcı önbellekleme kuralları (W3TC Browser Cache için temel)
expire.url = (
"/wp-content/(cache|uploads|themes|plugins)/" => "access plus 1 year",
"/wp-includes/(js|css|images)/" => "access plus 1 year",
".ico" => "access plus 1 year",
".pdf" => "access plus 1 month",
".flv" => "access plus 1 month",
".jpg" => "access plus 1 month",
".jpeg" => "access plus 1 month",
".png" => "access plus 1 month",
".gif" => "access plus 1 month",
".swf" => "access plus 1 month",
".css" => "access plus 1 month",
".js" => "access plus 1 month"
)
# Güvenlik için bazı dizinlere erişimi engelleme
$HTTP["url"] =~ "^/(wp-config\.php|wp-trackback\.php|license\.txt|readme\.html|readme\.txt|install\.php)" {
url.access-deny = ("")
}
$HTTP["url"] =~ "/wp-content/uploads/.*\.php$" {
url.access-deny = ("")
}
}
Bu dosyayı etkinleştirelim ve Lighttpd’yi yeniden başlatalım:
sudo lighty-enable-mod wordpress # veya 20-wordpress.conf
sudo systemctl restart lighttpd
Lighttpd Modüllerini Etkinleştirme
Yukarıdaki yapılandırma dosyasında url.rewrite-if-not-file kullandık, bu da mod_rewrite modülünün etkin olmasını gerektirir. Ayrıca, W3 Total Cache’in bazı gelişmiş önbellekleme özelliklerini kullanmak için mod_magnet modülünü de etkinleştirmemiz gerekebilir (özellikle sayfa önbellekleme için).
sudo lighty-enable-mod rewrite
sudo lighty-enable-mod magnet # W3TC gelişmiş sayfa önbellekleme için
sudo systemctl restart lighttpd
Rewrite Kuralları
Yukarıdaki yapılandırmada WordPress’in kalıcı bağlantıları (permalinks) için gerekli rewrite kurallarını ekledik:
url.rewrite-if-not-file = (
"^/(wp-admin|wp-content|wp-includes|wp-json|xmlrpc\.php)(.*)$" => "$0",
"^/(.\.php)(.)$" => "$0",
"^/(.*)$" => "/index.php/$1"
)
Bu kurallar, mevcut bir dosya veya dizin değilse tüm istekleri index.php‘ye yönlendirerek WordPress’in URL yapısını doğru şekilde işlemesini sağlar.
WordPress Kurulumu
Lighttpd ve PHP-FPM hazır olduğuna göre, WordPress’i kurabiliriz.
Veritabanı Oluşturma
MariaDB’ye giriş yapın ve WordPress için bir veritabanı ile kullanıcı oluşturun:
sudo mysql -u root -p
Şifrenizi girdikten sonra MySQL/MariaDB komut isteminde aşağıdaki komutları çalıştırın (güçlü bir şifre seçtiğinizden emin olun):
CREATE DATABASE wordpress_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wordpress_user'@'localhost' IDENTIFIED BY 'GUCLU_SIFRE';
GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wordpress_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
WordPress Dosyalarını İndirme ve Yükleme
WordPress’in en son sürümünü indirelim ve daha önce oluşturduğumuz dizine çıkaralım:
cd /tmp
wget https://wordpress.org/latest.tar.gz
tar -xvzf latest.tar.gz
sudo rsync -av wordpress/ /var/www/wordpress/
sudo chown -R www-data:www-data /var/www/wordpress
sudo find /var/www/wordpress -type d -exec chmod 755 {} \;
sudo find /var/www/wordpress -type f -exec chmod 644 {} \;
WordPress Kurulum Sihirbazı
Şimdi tarayıcınızdan alan adınızı veya IP adresinizi ziyaret ederek WordPress kurulum sihirbazını başlatabilirsiniz.
* Dil seçimi yapın.
* Veritabanı adı (wordpress_db), kullanıcı adı (wordpress_user), şifre (GUCLU_SIFRE) ve veritabanı sunucusu (localhost) bilgilerini girin.
* Kurulumu tamamlayın ve siteniz için başlık, yönetici kullanıcı adı ve şifre belirleyin.
W3 Total Cache Kurulumu ve Temel Yapılandırması
WordPress kurulumu tamamlandıktan sonra W3 Total Cache eklentisini kurmaya başlayabiliriz.
Eklentiyi Kurma
WordPress yönetici paneline giriş yapın (/wp-admin).
* Sol menüden Eklentiler > Yeni Ekle‘ye gidin.
* Arama kutusuna “W3 Total Cache” yazın.
* Eklentiyi bulun ve Şimdi Kur düğmesine tıklayın.
* Kurulum tamamlandıktan sonra Etkinleştir düğmesine tıklayın.
Etkinleştirdikten sonra sol menüde “Performance” adında yeni bir menü öğesi göreceksiniz.
Genel Ayarlar
Performance > General Settings bölümüne gidin. Burada çeşitli önbellekleme türlerini etkinleştirebilirsiniz. Lighttpd ile uyumlu en iyi ayarları seçmeye dikkat edin.
* Page Cache (Sayfa Önbellekleme): Enable olarak işaretleyin. Cache Method olarak genellikle Disk: Enhanced seçeneği önerilir. Lighttpd için Disk: Enhanced kullanırken W3TC’nin .htaccess kuralları çalışmayacaktır. Bu nedenle mod_magnet veya Lighttpd’nin rewrite kurallarını kullanacağız. Disk: Enhanced seçeneği, önbellek dosyalarını doğrudan dosya sistemine yazar ve W3TC’nin Lighttpd için özel olarak sağladığı w3tc-wp-loader-lighttpd.php dosyasını mod_magnet ile kullanacağız.
* Object Cache (Nesne Önbellekleme): Enable olarak işaretleyin. Cache Method olarak Memcached veya Redis kullanmak en iyisidir, ancak sunucunuzda kurulu olmaları gerekir. Eğer yoksa Disk seçeneğini kullanabilirsiniz.
* Database Cache (Veritabanı Önbellekleme): Enable olarak işaretleyin. Cache Method olarak Disk veya Memcached/Redis kullanabilirsiniz.
* Browser Cache (Tarayıcı Önbellekleme): Enable olarak işaretleyin. Bu, Lighttpd yapılandırmamızdaki expire.url kurallarıyla birlikte çalışacaktır.
* CDN: Eğer bir CDN kullanıyorsanız Enable olarak işaretleyin ve CDN sağlayıcınızın ayarlarına göre yapılandırın.
* Minify: Enable olarak işaretleyin. Minify Mode olarak Auto seçeneğini kullanabilirsiniz. Minify Method olarak Disk seçeneğini tercih edin.
Ayarları yaptıktan sonra Save all settings düğmesine tıklayın.
W3 Total Cache ve Lighttpd İçin İleri Düzey Yapılandırma
W3 Total Cache’in Lighttpd ile tam uyumlu çalışması için bazı özel yapılandırmalar gereklidir, özellikle sayfa önbellekleme bölümünde.
Sayfa Önbellekleme
W3 Total Cache, Apache için .htaccess dosyaları veya Nginx için özel kurallar oluşturur. Lighttpd .htaccess dosyalarını desteklemez ve rewrite kuralları biraz farklı çalışır. Lighttpd’de sayfa önbelleklemesini en verimli şekilde kullanmak için mod_magnet ve W3TC’nin Lighttpd için özel olarak tasarlanmış w3tc-wp-loader-lighttpd.php dosyasını kullanacağız.
1. w3tc-wp-loader-lighttpd.php dosyasının hazırlanması:
W3 Total Cache’i etkinleştirdiğinizde, wp-content dizininde w3tc-wp-loader.php adında bir dosya oluşturulur. Lighttpd için bu dosyanın Lighttpd’ye özel versiyonunu kullanmamız gerekiyor. W3TC eklentisinin dosyaları arasında bu dosya bulunur.
wp-content/plugins/w3-total-cache/w3tc-wp-loader-lighttpd.php dosyasını wp-content dizininin köküne kopyalayın ve adını w3tc-wp-loader.php olarak değiştirin (veya mevcut olanı üzerine yazın, ancak dikkatli olun, asıl w3tc-wp-loader.php dosyası Apache/Nginx için kullanılır).
sudo cp /var/www/wordpress/wp-content/plugins/w3-total-cache/w3tc-wp-loader-lighttpd.php /var/www/wordpress/wp-content/w3tc-wp-loader.php
sudo chown www-data:www-data /var/www/wordpress/wp-content/w3tc-wp-loader.php
2. Lighttpd mod_magnet Kuralı Örneği:
mod_magnet modülü, Lua betikleri kullanarak Lighttpd’nin istek işleme akışına müdahale etmenizi sağlar. Bu, W3TC’nin Lighttpd ile tam sayfa önbellekleme yapabilmesi için idealdir.
Öncelikle, mod_magnet‘i etkinleştirdiğinizden emin olun:
sudo lighty-enable-mod magnet
sudo systemctl restart lighttpd
Şimdi bir Lua betiği oluşturalım. Örneğin, /var/www/wordpress/w3tc-magnet.lua adında:
sudo nano /var/www/wordpress/w3tc-magnet.lua
İçeriği aşağıdaki gibi olmalıdır:
-- /var/www/wordpress/w3tc-magnet.lua
-- W3 Total Cache mod_magnet script for Lighttpd
local wp_root = "/var/www/wordpress/" -- WordPress kurulum dizininiz
local w3tc_loader = wp_root .. "wp-content/w3tc-wp-loader.php"
-- Check if the request is for a PHP file or a directory that should be handled by WordPress
local path = lighty.request["uri.path"]
if string.match(path, "%.php$") then
-- It's a PHP file, let PHP-FPM handle it
return
end
-- Check if the request is for a static file that actually exists
local file_exists = lighty.stat(wp_root .. path)
if file_exists and (file_exists["is_reg"] or file_exists["is_dir"]) then
-- It's an existing file or directory, let Lighttpd handle it
return
end
-- If not a PHP file and not an existing static file,
-- then it's likely a WordPress permalink, let W3TC's loader handle it.
lighty.env["SCRIPT_FILENAME"] = w3tc_loader
lighty.env["SCRIPT_NAME"] = "/wp-content/w3tc-wp-loader.php"
lighty.env["DOCUMENT_ROOT"] = wp_root
lighttpd.set_uri_path(path)
lighttpd.set_uri_query(lighty.request["uri.query"])
lighttpd.trigger_fastcgi(lighty.request["uri.path"])
Bu Lua betiği, gelen istekleri kontrol eder:
* Eğer bir PHP dosyası ise, normal PHP-FPM akışına bırakır.
* Eğer mevcut bir statik dosya veya dizin ise, Lighttpd’nin bunu doğrudan sunmasına izin verir.
* Aksi takdirde (yani WordPress kalıcı bağlantıları için bir istekse), isteği W3TC’nin Lighttpd yükleyicisi olan w3tc-wp-loader.php dosyasına yönlendirir. Bu yükleyici, önbelleğe alınmış HTML sayfasını kontrol eder ve varsa sunar, yoksa WordPress’i başlatır ve önbelleğe alır.
Şimdi bu Lua betiğini Lighttpd yapılandırmanıza ekleyin. 20-wordpress.conf dosyanızı düzenleyin:
sudo nano /etc/lighttpd/conf-available/20-wordpress.conf
$HTTP["host"] =~ "(^|\.)example\.com$" bloğunun içine, url.rewrite-if-not-file kurallarının altına veya üstüne (sıralama önemli olabilir, deneme yanılma gerekebilir, genellikle rewrite kurallarından önce) aşağıdaki satırı ekleyin:
magnet.attract-physical-path-to = ( "/var/www/wordpress/w3tc-magnet.lua" )
Bu satır, her istekte w3tc-magnet.lua betiğinin çalışmasını sağlar.
Son hali aşağıdaki gibi olabilir (sadece ilgili kısmı gösteriyorum):
$HTTP["host"] =~ "(^|\.)example\.com$" {
server.document-root = "/var/www/wordpress"
# ... diğer ayarlar ...
# W3 Total Cache için mod_magnet kuralı (rewrite kurallarından önce veya sonra deneyin)
magnet.attract-physical-path-to = ( "/var/www/wordpress/w3tc-magnet.lua" )
# WordPress permalinkleri için rewrite kuralları
# magnet kuralı ile çakışabilir, test etmek gerekir.
# Eğer magnet kuralı yeterli ise bu bölümü kaldırabilirsiniz.
url.rewrite-if-not-file = (
"^/(wp-admin|wp-content|wp-includes|wp-json|xmlrpc\.php)(.*)$" => "$0",
"^/(.\.php)(.)$" => "$0",
"^/(.*)$" => "/index.php/$1"
)
# ... diğer ayarlar ...
}
Önemli Not: mod_magnet kuralı ile url.rewrite-if-not-file kuralları çakışabilir. mod_magnet doğru şekilde yapılandırıldığında, WordPress’in kalıcı bağlantılarını ve W3TC’nin sayfa önbelleklemesini daha verimli bir şekilde ele alabilir. Genellikle mod_magnet kuralını kullanarak url.rewrite-if-not-file kurallarını tamamen kaldırabilirsiniz, çünkü mod_magnet betiği bu yönlendirme mantığını zaten içerir. Ancak, test etmeniz ve sitenizin beklendiği gibi çalıştığından emin olmanız önemlidir.
Değişiklikleri kaydedin ve Lighttpd’yi yeniden başlatın:
sudo systemctl restart lighttpd
W3 Total Cache Ayarları (Page Cache):
Performance > Page Cache bölümüne gidin.
* Cache method olarak Disk: Enhanced seçili olduğundan emin olun.
* General bölümünde Cache front page, Cache feeds, Cache SSL (https) requests gibi seçenekleri ihtiyacınıza göre etkinleştirin.
* Cache Preload seçeneğini etkinleştirerek sitenizin sayfalarını otomatik olarak önbelleğe almasını sağlayabilirsiniz.
Nesne Önbellekleme
Performance > Object Cache bölümüne gidin.
* Eğer Memcached veya Redis kurduysanız, Object Cache Method olarak ilgili seçeneği seçin ve sunucu detaylarını girin (genellikle 127.0.0.1:11211 for Memcached, 127.0.0.1:6379 for Redis).
* Eğer kurmadıysanız, Disk seçeneğini kullanabilirsiniz. Memcached/Redis, veritabanı ve nesne önbellekleme için çok daha hızlıdır.
Memcached Kurulumu (Örnek):
sudo apt install memcached php8.x-memcached -y
sudo systemctl restart memcached
sudo systemctl restart php8.x-fpm
Redis Kurulumu (Örnek):
sudo apt install redis-server php8.x-redis -y
sudo systemctl restart redis-server
sudo systemctl restart php8.x-fpm
Veritabanı Önbellekleme
Performance > Database Cache bölümüne gidin.
* Database Cache Method olarak Disk veya kurduysanız Memcached/Redis seçeneğini seçin.
* Veritabanı önbelleklemesi, özellikle çok sayıda veritabanı sorgusu yapan siteler için faydalıdır.
Tarayıcı Önbellekleme
Performance > Browser Cache bölümüne gidin.
* Bu bölümde, statik dosyaların (CSS, JS, resimler) ziyaretçinin tarayıcısında ne kadar süreyle önbelleğe alınacağını ayarlayabilirsiniz.
* General altındaki tüm kutucukları işaretlemeniz önerilir.
* Lighttpd yapılandırmamızdaki expire.url kuralları, bu ayarlarla birlikte çalışarak tarayıcı önbelleklemesini optimize edecektir.
CDN Entegrasyonu
Eğer Cloudflare, MaxCDN, KeyCDN gibi bir CDN kullanıyorsanız, Performance > CDN bölümüne gidin.
* CDN Type olarak kullandığınız CDN sağlayıcısını seçin.
* API anahtarlarınızı veya diğer gerekli bilgileri girerek entegrasyonu tamamlayın.
* CDN, statik dosyalarınızı dünya genelindeki sunuculardan dağıtarak yüklenme sürelerini global olarak hızlandırır.
Minify (Küçültme)
Performance > Minify bölümüne gidin.
* HTML, CSS ve JavaScript dosyalarınızdaki gereksiz boşlukları, yorumları ve karakterleri kaldırarak dosya boyutlarını küçültür.
* Minify Mode olarak Auto seçeneğini kullanın.
* HTML minify, JS minify ve CSS minify seçeneklerini etkinleştirin.
* Minify Method olarak Disk seçeneğini kullanın.
* Minify ayarlarını yaparken sitenizin görünümünün bozulmadığından emin olmak için dikkatli olun. Bazen bazı JavaScript dosyaları minification sonrası sorun çıkarabilir.
Uygulama Performansı (OPcode Caching)
PHP 5.5 ve üzeri sürümlerle birlikte OPcache, PHP’nin derlenmiş kodunu önbelleğe alarak performansı önemli ölçüde artırır. Yukarıda PHP-FPM kurulumunda php8.x-opcache paketini zaten kurmuştuk.
* Performance > General Settings bölümünde OPcode Cache altında OPcache seçeneğinin etkin olduğunu göreceksiniz. Bu, W3TC’nin OPcache ile entegre olduğunu gösterir.
* OPcache ayarlarını doğrudan PHP yapılandırma dosyasında (/etc/php/8.x/fpm/php.ini) düzenleyebilirsiniz. Önerilen bazı OPcache ayarları:
; /etc/php/8.x/fpm/php.ini
opcache.enable=1
opcache.memory_consumption=128 ; MB
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.revalidate_freq=60 ; Saniye
opcache.fast_shutdown=1
opcache.enable_cli=1
Değişiklikleri yaptıktan sonra PHP-FPM’i yeniden başlatın:
sudo systemctl restart php8.x-fpm
Sorun Giderme ve İpuçları
Kurulum ve yapılandırma sürecinde bazı sorunlarla karşılaşabilirsiniz. İşte yaygın sorunlar ve çözümleri:
İzin Sorunları
WordPress’in ve W3 Total Cache’in önbellek dizinlerine yazma izinleri olması gerekir.
* Önbellek dizinleri (/var/www/wordpress/wp-content/cache, /var/www/wordpress/wp-content/w3tc) ve diğer ilgili dizinlerin www-data kullanıcısına ait olduğundan ve yazma izinleri olduğundan emin olun.
sudo chown -R www-data:www-data /var/www/wordpress
sudo find /var/www/wordpress -type d -exec chmod 755 {} \;
sudo find /var/www/wordpress -type f -exec chmod 644 {} \;
Bazı durumlarda, wp-content içindeki bazı dizinler için 775 veya 777 gibi daha geniş izinler gerekebilir, ancak güvenlik nedeniyle 755 veya 644 tercih edilir.
Rewrite Kuralları Sorunları
* WordPress kalıcı bağlantıları çalışmıyorsa veya W3TC sayfa önbelleklemesi düzgün çalışmıyorsa, Lighttpd yapılandırmanızdaki url.rewrite-if-not-file veya mod_magnet kurallarını kontrol edin.
* mod_magnet ve url.rewrite-if-not-file aynı anda etkinse çakışma yaşanabilir. Genellikle mod_magnet daha esnek olduğu için tercih edilir ve url.rewrite-if-not-file kurallarını kaldırabilirsiniz.
* Lighttpd hata günlüklerini (/var/log/lighttpd/error.log veya sanal hostunuza özel log dosyası) kontrol edin.
Önbellek Temizleme
* W3 Total Cache’de bir değişiklik yaptığınızda veya sitenizde güncellemeler olduğunda önbelleği temizlemeniz önemlidir.
* Performance > Dashboard bölümünde Empty all caches düğmesini kullanabilirsiniz.
* Tek tek önbellek türlerini temizlemek için ilgili önbellek ayarları sayfalarına giderek Empty cache düğmelerini kullanabilirsiniz.
Performans Testleri
* Ayarları yaptıktan sonra sitenizin performansını test etmek için GTmetrix, Google PageSpeed Insights veya WebPageTest gibi araçları kullanın.
* Bu araçlar sitenizin yüklenme süresi, sayfa boyutu ve performans puanları hakkında değerli bilgiler sağlayacaktır.
* Değişikliklerin etkisini görmek için her yapılandırma adımından sonra test yapmanız önerilir.
Sonuç
Bu makalede, Lighttpd sunucusunda WordPress’i W3 Total Cache eklentisi ile nasıl kuracağınızı ve optimize edeceğinizi detaylı bir şekilde inceledik. Lighttpd’nin hafif ve hızlı yapısı ile W3 Total Cache’in kapsamlı önbellekleme yeteneklerini birleştirerek, WordPress sitenizin performansını önemli ölçüde artırabilir ve ziyaretçilerinize daha iyi bir deneyim sunabilirsiniz. Özellikle mod_magnet kullanarak Lighttpd’ye özel sayfa önbellekleme entegrasyonu, bu kombinasyonun en önemli adımlarından biridir. Unutmayın ki her sunucu ve WordPress kurulumu benzersizdir, bu nedenle önerilen ayarları kendi ortamınıza göre test etmeniz ve ayarlamanız önemlidir. Düzenli bakım, önbellek temizleme ve performans izleme ile sitenizi her zaman zirvede tutabilirsiniz.