WordPress Multisite’ı Nginx ve Ubuntu 14.04 Üzerinde Kurulum Rehberi
Bu kapsamlı rehber, WordPress Multisite özelliğini Ubuntu 14.04 işletim sistemine sahip bir sunucu üzerinde Nginx web sunucusu ile nasıl kuracağınızı adım adım anlatmaktadır. WordPress Multisite, tek bir WordPress kurulumuyla birden fazla web sitesini yönetmenize olanak tanırken, Nginx yüksek performans ve kaynak verimliliği sunar. Ubuntu 14.04, kararlı ve güvenilir bir platform olarak bu yapılandırma için sağlam bir temel sağlar. Her ne kadar Ubuntu’nun daha yeni sürümleri mevcut olsa da, bu rehber spesifik olarak 14.04 sürümünü hedeflemektedir.
Multisite kurulumu, özellikle Nginx gibi Apache’den farklı bir yapıya sahip bir web sunucusuyla birleştirildiğinde bazı özel adımlar gerektirir. Bu rehberde, gerekli ön gereksinimlerin karşılanmasından, WordPress’in kurulmasına, Multisite özelliğinin etkinleştirilmesine ve Nginx’in bu yapıya uygun şekilde yapılandırılmasına kadar tüm süreci detaylı bir şekilde ele alacağız.
WordPress Multisite Nedir ve Neden Kullanılır?
WordPress Multisite, WordPress’in çekirdek bir özelliğidir ve tek bir WordPress kurulumu üzerinden birden fazla web sitesini yönetmeye olanak tanır. Bu siteler, aynı veritabanını ve WordPress çekirdek dosyalarını paylaşır, ancak her birinin kendine ait içerikleri, kullanıcıları ve (isteğe bağlı olarak) temaları/eklentileri olabilir.
Multisite’ın başlıca avantajları şunlardır:
* Merkezi Yönetim: Tüm siteler için tek bir yönetici paneli bulunur. Temalar ve eklentiler ağ genelinde etkinleştirilebilir veya bireysel sitelere özel olarak ayarlanabilir.
* Kaynak Verimliliği: Tek bir WordPress kurulumu, tek bir veritabanı ve tek bir dosya sistemi kullanıldığından, sunucu kaynakları daha verimli kullanılır.
* Kolay Güncelleme: WordPress çekirdeği, temalar ve eklentiler için tek bir güncelleme işlemi, tüm ağdaki siteleri günceller.
* Ölçeklenebilirlik: Yeni siteler oluşturmak hızlı ve kolaydır. Bir blog ağı, şirket içi departman siteleri veya müşteri siteleri için idealdir.
* Yönetim Kolaylığı: Kullanıcı yönetimi, yedeklemeler ve güvenlik önlemleri ağ genelinde uygulanabilir.
Multisite, genellikle iki farklı modda çalışır: Alt Alan Adı (Subdomain) ve Alt Dizin (Subdirectory).
* Alt Alan Adı (Subdomain): Her site kendi alt alan adına sahiptir (örneğin, site1.example.com, site2.example.com). Bu, genellikle daha büyük ağlar ve farklı markalar için tercih edilir. DNS tarafında wildcard (joker karakter) kaydı gerektirir.
* Alt Dizin (Subdirectory): Her site ana sitenin bir alt dizini olarak yer alır (örneğin, example.com/site1, example.com/site2). Bu, daha küçük ağlar veya bloglar için uygundur ve ek DNS yapılandırması gerektirmez.
Bu rehberde her iki yapılandırma için de Nginx tarafındaki farklılıkları açıklayacağız.
Nginx ve Ubuntu 14.04 Seçimi
Nginx (Engine-X): Nginx, yüksek performanslı, açık kaynaklı bir web sunucusu ve ters proxy sunucusudur. Apache HTTP Sunucusu’na kıyasla daha az bellek tüketimi ve daha iyi eşzamanlı bağlantı işleme yeteneği ile bilinir. Özellikle yüksek trafikli web siteleri için tercih edilir. Nginx, statik içerik sunmada oldukça hızlıdır ve PHP gibi dinamik içerikleri işlemek için PHP-FPM (FastCGI Process Manager) ile birlikte çalışır.
Neden Nginx?
* Performans: Özellikle statik içerik sunumunda ve yüksek eşzamanlı bağlantı yükleri altında üstün performans.
* Kaynak Verimliliği: Apache’ye kıyasla daha az bellek ve CPU kullanır.
* Ölçeklenebilirlik: Yüksek trafikli siteler ve uygulamalar için idealdir.
* Yapılandırma Esnekliği: Ters proxy, yük dengeleme ve önbellekleme gibi gelişmiş özellikler sunar.
Ubuntu 14.04 (Trusty Tahr): Ubuntu 14.04, 2014 yılında yayınlanmış bir LTS (Uzun Süreli Destek) sürümüdür. Her ne kadar güncel bir sürüm olmasa da, belirli projeler veya eski sistemlerle uyumluluk gerektiren durumlar için hala kullanılabilir veya tercih edilebilir. Bu rehber, özellikle bu sürümün gereksinimlerini ve paketlerini dikkate alarak hazırlanmıştır.
Önemli Not: Ubuntu 14.04’ün resmi desteği sona ermiştir. Güvenlik güncellemeleri almadığı için üretim ortamlarında kullanılması önerilmez. Ancak, bu rehber talep üzerine spesifik olarak bu sürüm için yazılmıştır. Yeni projeler için daha güncel Ubuntu LTS sürümleri (örneğin 18.04, 20.04, 22.04) kullanılması şiddetle tavsiye edilir.
Ön Gereksinimler
Kuruluma başlamadan önce aşağıdaki ön gereksinimlerin karşılandığından emin olun:
* Ubuntu 14.04 Sunucusu: İnternete bağlı, temiz bir Ubuntu 14.04 sunucusu (VPS veya fiziksel).
* Kök (root) veya Sudo Yetkileri: Sunucuda komutları çalıştırmak için kök erişimi veya sudo yetkisine sahip bir kullanıcı.
* Alan Adı (Domain Name): WordPress Multisite kurulumu için bir alan adına ihtiyacınız olacak (örneğin, ornekalanadi.com).
DNS Yapılandırması: Alan adınızın A kaydının sunucunuzun IP adresini işaret ettiğinden emin olun. Alt alan adı tabanlı bir Multisite kuracaksanız, .ornekalanadi.com için de sunucunuzun IP adresini işaret eden bir A kaydı veya CNAME kaydı oluşturmanız gerekecektir.
* SSH Erişimi: Sunucuya SSH üzerinden bağlanabilmeniz gerekmektedir.
Sunucuya SSH ile bağlanın:
ssh kullanici_adi@sunucu_ip_adresi
Ardından, paket listelerinizi güncelleyerek başlayın:
sudo apt-get update
sudo apt-get upgrade -y
Gerekli Paketlerin Kurulumu
WordPress’i Nginx üzerinde çalıştırmak için Nginx, MySQL (veritabanı) ve PHP-FPM (PHP işlemcisi) paketlerine ihtiyacımız var.
Nginx Kurulumu:
sudo apt-get install nginx -y
Kurulum tamamlandıktan sonra Nginx’in çalıştığını doğrulayın:
sudo service nginx status
Çıktıda nginx is running gibi bir ifade görmelisiniz. Web tarayıcınızdan sunucunuzun IP adresine giderek Nginx’in varsayılan hoş geldiniz sayfasını görmeniz gerekir.
MySQL Kurulumu:
WordPress verilerini depolamak için bir veritabanına ihtiyacımız var. MySQL’i kuralım:
sudo apt-get install mysql-server mysql-client -y
Kurulum sırasında MySQL root kullanıcısı için bir şifre belirlemeniz istenecektir. Güçlü bir şifre seçtiğinizden emin olun.
Kurulumdan sonra MySQL kurulumunu güvenli hale getirmek için aşağıdaki komutu çalıştırın:
sudo mysql_secure_installation
Bu komut, root şifresini ayarlamanıza, anonim kullanıcıları kaldırmanıza, uzaktan root girişini devre dışı bırakmanıza ve test veritabanını kaldırmanıza yardımcı olacaktır. Genellikle tüm sorulara Y (Yes) ile yanıt vermek iyi bir uygulamadır.
PHP-FPM ve Gerekli PHP Uzantıları Kurulumu:
WordPress PHP ile yazılmıştır, bu yüzden PHP’ye ihtiyacımız var. Nginx ile PHP’yi kullanmak için PHP-FPM (FastCGI Process Manager) kullanırız. Ubuntu 14.04’te varsayılan PHP sürümü PHP 5.x olacaktır.
sudo apt-get install php5-fpm php5-mysql php5-cli php5-gd php5-curl php5-intl php5-mcrypt php5-json -y
Bu komut, PHP-FPM’i ve WordPress’in ihtiyaç duyduğu yaygın PHP uzantılarını kuracaktır. php5-mysql veritabanı bağlantısı, php5-gd resim işleme, php5-curl harici bağlantılar için gereklidir.
PHP-FPM’in çalıştığını doğrulayın:
sudo service php5-fpm status
php5-fpm is running çıktısını görmelisiniz.
PHP-FPM Ayarları (İsteğe Bağlı ama Önemli):
Performans ve güvenlik için bazı PHP-FPM ayarlarını düzenlemek faydalı olabilir.
PHP-FPM yapılandırma dosyasını açın:
sudo nano /etc/php5/fpm/php.ini
Aşağıdaki satırları bulun ve değerlerini güncelleyin (eğer farklıysa):
* cgi.fix_pathinfo=0: Bu ayar güvenlik açısından önemlidir. Eğer 1 olarak ayarlanmışsa, Nginx’in bulunmayan dosyaları PHP yorumlayıcısına göndermesine neden olabilir. 0 olarak ayarlandığından emin olun.
* upload_max_filesize = 64M: Yükleyebileceğiniz maksimum dosya boyutunu belirler. İhtiyacınıza göre ayarlayın.
* post_max_size = 64M: HTTP POST isteğiyle gönderilebilecek maksimum veri boyutunu belirler.
* memory_limit = 256M: Bir PHP betiğinin kullanabileceği maksimum bellek miktarını belirler.
Değişiklikleri kaydettikten sonra PHP-FPM servisini yeniden başlatın:
sudo service php5-fpm restart
MySQL Veritabanı ve Kullanıcısı Oluşturma
WordPress için özel bir veritabanı ve kullanıcı oluşturmak iyi bir güvenlik pratiğidir.
MySQL konsoluna root kullanıcısı olarak giriş yapın:
mysql -u root -p
Şifrenizi girin. Ardından aşağıdaki SQL komutlarını çalıştırın:
CREATE DATABASE wordpress_multisite;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'guclu_sifreniz';
GRANT ALL PRIVILEGES ON wordpress_multisite.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
* wordpress_multisite: Veritabanı adını istediğiniz gibi değiştirebilirsiniz.
* wpuser: Veritabanı kullanıcısını istediğiniz gibi değiştirebilirsiniz.
* guclu_sifreniz: Mutlaka güçlü ve benzersiz bir şifre ile değiştirin!
WordPress Kurulumu
Şimdi WordPress dosyalarını sunucumuza indirelim ve yapılandıralım.
Web sitenizin dosyalarını barındıracağınız bir dizin oluşturun. Genellikle /var/www/ altına alan adınızla aynı isme sahip bir dizin oluşturmak iyi bir uygulamadır.
sudo mkdir -p /var/www/ornekalanadi.com
cd /var/www/ornekalanadi.com
WordPress’in en son sürümünü indirin ve açın:
sudo wget https://wordpress.org/latest.tar.gz
sudo tar -xzvf latest.tar.gz
Bu komut wordpress adında bir dizin oluşturacaktır. İçeriğini doğrudan ornekalanadi.com dizinine taşıyalım:
sudo mv wordpress/* .
sudo rm -rf wordpress latest.tar.gz
Şimdi dizin izinlerini ayarlayalım. Nginx ve PHP-FPM’in dosyalara yazma iznine sahip olması gerekir. www-data genellikle Nginx ve PHP-FPM’in çalıştığı kullanıcı ve gruptur.
sudo chown -R www-data:www-data /var/www/ornekalanadi.com
sudo find /var/www/ornekalanadi.com -type d -exec chmod 755 {} \;
sudo find /var/www/ornekalanadi.com -type f -exec chmod 644 {} \;
Bu komutlar, dizinler için 755 ve dosyalar için 644 izinlerini ayarlar ve tüm dosyaların sahipliğini www-data kullanıcısı ve grubuna verir.
wp-config.php Dosyasını Yapılandırma:
WordPress’in temel yapılandırma dosyası wp-config.php‘yi oluşturalım.
sudo mv wp-config-sample.php wp-config.php
sudo nano wp-config.php
Aşağıdaki satırları bulun ve daha önce oluşturduğunuz veritabanı bilgileriyle güncelleyin:
define('DB_NAME', 'wordpress_multisite');
define('DB_USER', 'wpuser');
define('DB_PASSWORD', 'guclu_sifreniz');
Ayrıca, WordPress güvenlik anahtarlarını (AUTH_KEY, SECURE_AUTH_KEY vb.) güncelleyin. Bunları https://api.wordpress.org/secret-key/1.1/salt/ adresinden alabilir ve wp-config.php dosyanızdaki ilgili satırlarla değiştirebilirsiniz. Bu, sitenizin güvenliği için çok önemlidir.
Tarayıcıdan İlk WordPress Kurulumu:
wp-config.php dosyasını kaydettikten sonra, Nginx yapılandırmasını yapmadan tarayıcıdan ilk WordPress kurulumunu tamamlayamayız. Bu adımı Nginx yapılandırmasından sonra yapacağız.
Nginx Konfigürasyonu
Nginx, WordPress Multisite’ı doğru şekilde yönlendirmek için özel bir yapılandırma gerektirir.
Temel Nginx Sanal Host Ayarları:
WordPress siteniz için yeni bir Nginx sanal host (server block) dosyası oluşturalım.
sudo nano /etc/nginx/sites-available/ornekalanadi.com
Dosyanın içine aşağıdaki içeriği ekleyin. Bu yapılandırma hem HTTP hem de HTTPS (Let’s Encrypt ile sonra eklenecek) için bir başlangıç noktasıdır. Şimdilik sadece HTTP kısmına odaklanacağız.
server {
listen 80;
server_name ornekalanadi.com www.ornekalanadi.com; # Alan adınızı buraya ekleyin
root /var/www/ornekalanadi.com; # WordPress dosyalarınızın yolu
index index.php index.html index.htm;
# Gzip sıkıştırmasını etkinleştir (isteğe bağlı ama önerilir)
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
# Statik dosyalar için önbellekleme (isteğe bağlı ama önerilir)
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
# WordPress permalinkleri ve Multisite için önemli olan try_files kuralı
location / {
try_files $uri $uri/ /index.php?$args;
}
# PHP dosyalarını PHP-FPM'e ilet
location ~ \.php$ {
# Eğer Nginx'in snippets dizini varsa, bunu kullanabiliriz:
# include snippets/fastcgi-php.conf;
# Aksi takdirde, manuel olarak yapılandırın:
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock; # PHP-FPM socket yolu
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_read_timeout 300; # Uzun süreli işlemler için zaman aşımını artırabilirsiniz
}
# .htaccess dosyalarına erişimi engelle
location ~ /\.ht {
deny all;
}
# Gizli dosyaları engelle
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
# WordPress'in bazı özel dizinlerine erişim kısıtlamaları (isteğe bağlı)
location ~* /(?:wp-config\.php|wp-cli\.yml|readme\.html|license\.txt)$ {
deny all;
}
}
Nginx Multisite Konfigürasyonu (Önemli Değişiklikler):
WordPress Multisite’ı subdomain (alt alan adı) veya subdirectory (alt dizin) olarak kuracağınıza bağlı olarak Nginx yapılandırmasında bazı küçük ama önemli farklılıklar olacaktır. Ancak, yukarıdaki location / { try_files $uri $uri/ /index.php?$args; } kuralı genellikle her iki Multisite tipi için de yeterlidir, çünkü Nginx’in bulunamayan tüm istekleri index.php‘ye yönlendirmesini sağlar ve WordPress kendi yönlendirme kurallarını (rewrite rules) işler.
Alt Alan Adı (Subdomain) Multisite için Ek Ayar:
Eğer alt alan adı tabanlı bir Multisite kuracaksanız, Nginx server_name direktifine joker karakter (wildcard) alt alan adını eklemeniz gerekir:
server_name ornekalanadi.com www.ornekalanadi.com *.ornekalanadi.com;
Bu, Nginx’in site1.ornekalanadi.com, site2.ornekalanadi.com gibi tüm alt alan adları için istekleri bu server bloğuna yönlendirmesini sağlar.
DNS tarafında da *.ornekalanadi.com için bir A kaydı oluşturmayı unutmayın!
Alt Dizin (Subdirectory) Multisite için Ek Ayar:
Alt dizin tabanlı Multisite için server_name direktifinde joker karaktere gerek yoktur. Temel server_name ornekalanadi.com www.ornekalanadi.com; yeterlidir. try_files kuralı bu senaryoyu da başarılı bir şekilde yönetecektir. WordPress’in ağ kurulumu sırasında vereceği .htaccess kurallarını Nginx’e çevirmenize gerek kalmayacaktır, çünkü try_files kuralı bu işlevi üstlenir.
Nginx Konfigürasyonunu Etkinleştirme:
Oluşturduğunuz sanal host dosyasını sites-enabled dizinine bir sembolik bağlantı (symlink) oluşturarak etkinleştirin:
sudo ln -s /etc/nginx/sites-available/ornekalanadi.com /etc/nginx/sites-enabled/
Varsayılan Nginx yapılandırma dosyasını devre dışı bırakmak isteyebilirsiniz:
sudo rm /etc/nginx/sites-enabled/default
Nginx yapılandırmasının sözdizimini kontrol edin:
sudo nginx -t
Eğer syntax is ok ve test is successful mesajlarını görürseniz, Nginx’i yeniden başlatın:
sudo service nginx restart
Tarayıcıdan WordPress Kurulumunu Tamamlama:
Şimdi web tarayıcınızdan alan adınıza (örneğin, http://ornekalanadi.com) gidin. WordPress’in kurulum ekranı sizi karşılamalıdır.
* “Başlayalım!” butonuna tıklayın.
* Veritabanı bilgileri zaten wp-config.php‘ye eklenmiş olduğu için doğrudan site başlığını, kullanıcı adını, şifreyi ve e-posta adresini girmeniz istenecektir.
* Bu adımları tamamladıktan sonra WordPress yönetici paneline giriş yapabilirsiniz.
WordPress Multisite’ı Etkinleştirme
WordPress’in tek site kurulumunu tamamladıktan sonra, Multisite özelliğini etkinleştirmemiz gerekiyor.
1. Tüm Eklentileri Devre Dışı Bırakın: Yönetici paneline giriş yapın ve “Eklentiler” sayfasına gidin. Tüm etkin eklentileri devre dışı bırakın. Multisite etkinleştirilirken herhangi bir çakışmayı önlemek için bu gereklidir.
2. wp-config.php Dosyasını Düzenleyin: SSH ile sunucunuza bağlanın ve wp-config.php dosyasını düzenleyin:
sudo nano /var/www/ornekalanadi.com/wp-config.php
Dosyanın içinde / That's all, stop editing! Happy blogging. / satırının hemen öncesine aşağıdaki satırı ekleyin:
define('WP_ALLOW_MULTISITE', true);
Dosyayı kaydedin ve kapatın.
3. Ağ Kurulumu Sayfasına Gidin: WordPress yönetici paneline geri dönün ve sayfayı yenileyin. Sol menüde “Araçlar” altında “Ağ Kurulumu” (Network Setup) adında yeni bir menü öğesi göreceksiniz. Bu sayfaya tıklayın.
4. Ağ Kurulum Ayarlarını Yapın:
* Adres Tipi Seçimi: “Alt alan adları” (Sub-domains) veya “Alt dizinler” (Sub-directories) seçeneklerinden birini seçin.
* Alt alan adları: Eğer site1.ornekalanadi.com gibi adresler kullanmak istiyorsanız.
* Alt dizinler: Eğer ornekalanadi.com/site1 gibi adresler kullanmak istiyorsanız.
ÖNEMLİ: Eğer mevcut bir WordPress kurulumunuz 1 aydan daha eskiyse, alt dizin seçeneği kullanılamaz. Yeni bir kurulumda her ikisini de seçebilirsiniz. Eğer alt alan adlarını seçerseniz, daha önce bahsettiğimiz gibi DNS’te wildcard A kaydı (*.ornekalanadi.com) olduğundan emin olun.
* Ağ Başlığı: Ağınız için bir başlık girin.
* Ağ Yönetici E-postası: Yönetici e-posta adresinizi girin.
“Kur” (Install) butonuna tıklayın.
5. Verilen Kodları wp-config.php ve Nginx’e Ekleyin:
WordPress size iki kod bloğu gösterecektir. Biri wp-config.php dosyasına, diğeri ise .htaccess dosyasına eklemeniz gereken kodlardır.
wp-config.php için olan kodu kopyalayın. Bu kod, define('WP_ALLOW_MULTISITE', true); satırının hemen altına eklenmelidir.
Örnek wp-config.php kod bloğu (kendi değerlerinizle farklılık gösterebilir):
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true); // veya false eğer alt dizin seçtiyseniz
define('DOMAIN_CURRENT_SITE', 'ornekalanadi.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
Bu kodları wp-config.php dosyanıza ekleyin ve kaydedin.
Nginx için .htaccess Yerine Kurallar:
WordPress’in verdiği .htaccess kod bloğu Apache içindir. Nginx için bu kurallar zaten Nginx yapılandırma dosyamızdaki location / { try_files $uri $uri/ /index.php?$args; } satırı tarafından karşılanmaktadır. Bu satır, WordPress’in permalink ve Multisite yönlendirme mekanizmalarını doğru şekilde işlemesini sağlar. Bu nedenle, Nginx yapılandırma dosyanızda ek bir değişiklik yapmanıza gerek yoktur, mevcut yapılandırma yeterli olmalıdır.
Özetle:
* wp-config.php dosyanızı düzenleyin ve WordPress’in verdiği Multisite kodlarını ekleyin.
* Nginx yapılandırmanızda server_name direktifini (alt alan adı Multisite için wildcard ekleyerek) güncellediyseniz ve try_files kuralı doğruysa, başka bir değişiklik yapmanıza gerek yoktur.
* Nginx’i yeniden başlatın: sudo service nginx restart
6. Giriş Yapın ve Test Edin:
wp-config.php ve Nginx ayarlarını yaptıktan sonra, WordPress size “Giriş Yap” bağlantısı verecektir. Buradan tekrar giriş yapın. Artık yönetici panelinizde “Sitelerim” (My Sites) menüsünü ve “Ağ Yöneticisi” (Network Admin) seçeneklerini görmelisiniz.
Ağ Yöneticisi paneline gidin: “Sitelerim” -> “Ağ Yöneticisi” -> “Panel”. Buradan yeni siteler ekleyebilir, kullanıcıları yönetebilir, temaları ve eklentileri ağ genelinde etkinleştirebilirsiniz.
Yeni bir site ekleyerek Multisite kurulumunuzu test edin:
* Ağ Yöneticisi panelinden “Siteler” -> “Yeni Ekle” seçeneğine gidin.
* Yeni sitenizin adresini, başlığını ve yönetici e-postasını girin.
* Siteyi ekledikten sonra, tarayıcınızdan yeni sitenizin adresine (örneğin, site1.ornekalanadi.com veya ornekalanadi.com/site1) giderek sitenin doğru çalıştığını doğrulayın.
Güvenlik ve Performans İpuçları
Multisite kurulumunuzu daha güvenli ve performanslı hale getirmek için bazı ek adımlar atabilirsiniz.
1. SSL/TLS (HTTPS) Kullanımı:
Web siteniz için HTTPS kullanmak hem güvenlik hem de SEO açısından kritik öneme sahiptir. Let’s Encrypt, ücretsiz SSL sertifikaları sağlar.
sudo apt-get install letsencrypt -y
Nginx için bir sertifika almak için:
sudo letsencrypt certonly --webroot -w /var/www/ornekalanadi.com -d ornekalanadi.com -d www.ornekalanadi.com
Alt alan adı Multisite için joker karakter sertifikası almak biraz daha karmaşıktır ve DNS doğrulama gerektirir.
Sertifikaları aldıktan sonra Nginx yapılandırma dosyanızı ( /etc/nginx/sites-available/ornekalanadi.com ) HTTPS için güncelleyin. Örnek:
server {
listen 80;
listen [::]:80;
server_name ornekalanadi.com www.ornekalanadi.com *.ornekalanadi.com; # Alt alan adı Multisite için
return 301 https://$host$request_uri; # Tüm HTTP isteklerini HTTPS'ye yönlendir
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name ornekalanadi.com www.ornekalanadi.com *.ornekalanadi.com; # Alt alan adı Multisite için
ssl_certificate /etc/letsencrypt/live/ornekalanadi.com/fullchain.pem;
ssl_key /etc/letsencrypt/live/ornekalanadi.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/ornekalanadi.com/chain.pem;
# Diğer SSL ayarları (güvenlik için önerilir)
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256';
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s; # Google DNS
resolver_timeout 5s;
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
# ... Diğer Nginx yapılandırma satırları (root, index, location, php-fpm vb.)
root /var/www/ornekalanadi.com;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# ...
}
Değişiklikleri kaydettikten sonra Nginx’i yeniden başlatın.
2. Güvenlik Duvarı (UFW):
Sunucunuzu yetkisiz erişimlerden korumak için bir güvenlik duvarı kurun ve yapılandırın. Ubuntu’da UFW (Uncomplicated Firewall) kullanmak kolaydır.
sudo ufw allow ssh # SSH erişimine izin ver
sudo ufw allow http # HTTP (80) erişimine izin ver
sudo ufw allow https # HTTPS (443) erişimine izin ver
sudo ufw enable # Güvenlik duvarını etkinleştir
sudo ufw status # Durumu kontrol et
3. WordPress Güvenlik Eklentileri:
Ağ genelinde etkinleştirebileceğiniz Wordfence, Sucuri gibi güvenlik eklentileri kullanarak WordPress Multisite’ınızın güvenliğini artırın.
4. Nginx FastCGI Önbelleği:
Nginx, PHP-FPM ile birlikte FastCGI önbelleği kullanarak dinamik içeriği önbelleğe alabilir ve performansı önemli ölçüde artırabilir. Bu, biraz daha karmaşık bir yapılandırma gerektirir ve /etc/nginx/nginx.conf veya ayrı bir yapılandırma dosyasında ayarlanabilir.
Örnek (nginx.conf’a ekleyin):
# Nginx ana yapılandırma dosyasına (genellikle /etc/nginx/nginx.conf) ekleyin
fastcgi_cache_path /var/run/nginx-cache levels=1:2 keys_zone=WORDPRESS:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
Ardından site yapılandırmanızda (server block) kullanın:
location ~ \.php$ {
# ... mevcut fastcgi ayarları ...
fastcgi_cache WORDPRESS;
fastcgi_cache_valid 200 60m; # Başarılı yanıtları 60 dakika önbelleğe al
fastcgi_cache_bypass $no_cache;
fastcgi_no_cache $no_cache;
add_header X-FastCGI-Cache $upstream_cache_status;
}
Bu, özellikle yüksek trafikli Multisite kurulumları için performansı artırmada çok etkilidir.
5. PHP-FPM Ayarları Optimizasyonu:
PHP-FPM havuz ayarlarını (/etc/php5/fpm/pool.d/www.conf) sunucunuzun kaynaklarına göre optimize edin.
* pm = ondemand veya pm = dynamic: Dinamik veya isteğe bağlı işlem yöneticisi.
* pm.max_children: Oluşturulabilecek maksimum çocuk işlem sayısı.
* pm.start_servers: Başlangıçta oluşturulacak çocuk işlem sayısı.
* pm.min_spare_servers, pm.max_spare_servers: Boşta bekleyen minimum ve maksimum çocuk işlem sayısı.
Bu değerleri sunucunuzun RAM miktarına ve beklenen trafik yüküne göre ayarlamanız gerekir. Aşırı yüksek değerler bellek tükenmesine neden olabilir.
6. Veritabanı Optimizasyonu:
MySQL veritabanını düzenli olarak optimize edin. WordPress için WP-Optimize gibi eklentiler veya MySQL’in kendi araçları (mysqlcheck) kullanılabilir.
Sorun Giderme
Kurulum sırasında veya sonrasında sorunlarla karşılaşmanız durumunda aşağıdaki adımları izleyebilirsiniz:
* Nginx Hata Günlükleri: Nginx hata günlüklerini kontrol edin:
sudo tail -f /var/log/nginx/error.log
Bu günlükler, Nginx’in istekleri işleme veya yapılandırma hataları hakkında bilgi verir.
* PHP-FPM Hata Günlükleri: PHP-FPM’in kendi hata günlükleri olabilir. Varsayılan olarak /var/log/php5-fpm.log veya benzer bir yolda bulunabilir.
* WordPress Hata Ayıklama: wp-config.php dosyanızda WP_DEBUG modunu etkinleştirerek WordPress’in hata mesajlarını göstermesini sağlayabilirsiniz:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true); // Hataları bir dosyaya kaydet
define('WP_DEBUG_DISPLAY', false); // Hataları ekranda gösterme (güvenlik için)
Hata günlükleri genellikle /wp-content/debug.log dosyasında bulunur.
* İzin Sorunları: Dosya ve dizin izinlerinin (chown, chmod) doğru ayarlandığından emin olun. www-data kullanıcısının WordPress dizinine ve dosyalarına okuma/yazma erişimi olmalıdır.
* DNS Sorunları: Özellikle alt alan adı Multisite kurulumlarında, DNS ayarlarınızın (A kaydı, wildcard A kaydı) doğru olduğundan emin olun.
* Tarayıcı Önbelleği: Ayarları değiştirdikten sonra tarayıcı önbelleğini temizleyin veya gizli pencere (incognito mode) kullanarak test edin.
Sonuç
Bu rehber, WordPress Multisite’ı Ubuntu 14.04 üzerinde Nginx ile kurmak için gerekli tüm adımları ayrıntılı bir şekilde ele almıştır. Gerekli paketlerin kurulumundan, veritabanı ve WordPress yapılandırmasına, Nginx’in Multisite için optimize edilmesine ve son olarak sistemin güvenliğini ve performansını artırmaya yönelik ipuçlarına kadar geniş bir yelpazeyi kapsadık.
WordPress Multisite, birden fazla web sitesini tek bir kurulumdan yönetmek için güçlü ve esnek bir çözümdür. Nginx’in performansı ve Ubuntu’nun kararlılığı ile birleştiğinde, bu yapılandırma yüksek trafikli ve kaynak verimli web çözümleri için sağlam bir temel sunar. Her ne kadar Ubuntu 14.04’ün desteği sona ermiş olsa da, bu rehber spesifik gereksinimleri olan kullanıcılar için detaylı bir yol haritası sunmaktadır.
Kurulum sürecinde her adımın dikkatlice takip edilmesi ve özellikle Nginx yapılandırmasının doğru yapılması büyük önem taşır. Herhangi bir sorunla karşılaştığınızda, sunucu günlüklerini ve WordPress hata ayıklama modunu kullanarak sorun giderme adımlarını izlemek, çözüm bulmanıza yardımcı olacaktır. Bu kurulumla, kendi web ağınızı başarıyla oluşturabilir ve yönetebilirsiniz.