Nginx Kurulumu ile WordPress Sitemizi Hızlandırıyoruz [5]

Yazar: | 29 Aralık 2017

Bu yazıda Apache web sunucumuza Nginx kurulumu yaparak WordPress sitemizi daha da hızlandıracağız.

Bölümler

Daha önceki yazılarda WordPress içerik yönetim sistemimiz için CentOS 7 sunucu üzerine Apache kurduk ve PHP cache üzerinde değişiklik yaptık, MPM+php-fpm kurduk ve son olarak PHP 5 sürümümüzü PHP 7 olarak değiştirdik. Bu aşamaya kadar sayfa yükleme ve saniye başı istek sayısında yaklaşık 3 kat hız elde ettik.


Nginx Kurulumu

Nginx, Rusya’da geliştirilmiş hafif ve yüksek hızlı bir web sunucusudur. Nginx, reverse proxy ve yük dengeleme için de kullanılabilir ancak en güçlü özellikleri reverse proxy önbellek ve FastCGI önbellektir.

nginx transparan logo png

Önce, Nginx repo oluşturmak için aşağıdaki yolu izliyoruz.

nano /etc/yum.repos.d/nginx.repo

En son sürümü yüklemek için aşağıdaki satırları ekliyor ve CTRL + X ile kaydediyoruz.

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1

Nginx’i yüklüyoruz ve sonrasında versiyonu kontrol edeceğiz.

yum install nginx -y

nginx kurulumu

nginx -V komutuyla son sürüm olup olmadığını kontrol ediyoruz. 29 Aralık 2017 itibarıyla, Nginx’in en son sürümü 1.13.8’dir.

[root@server ~]# nginx -V
nginx version: nginx/1.13.8
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC)
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled

Web sunucusunu Apache’den Nginx’e çeviriyoruz.

systemctl disable httpd
systemctl stop httpd
systemctl enable nginx
systemctl start nginx

Her şey düzgün çalışıyorsa, site veya IP adresinizi yazdığınızda Nginx karşılama ekranını göreceksiniz.

Nginx yeni kurulum


Nginx Kurulumu Sonrası Konfigürasyon Dosyası Ayarları

Şimdi Nginx’i WordPress’i çalıştıracak şekilde düzenleyeceğiz.

nano /etc/nginx/nginx.conf

Keepalive_timeout’u değiştirin ve gzip’i etkinleştirin. Server_names_hash_bucket_size satırını daha büyük yaparak, uzun site adreslerinin sorunlara neden olmayacağını garanti edebiliriz. Son hali aşağıdaki gibi olacak.

user  nginx;
worker_processes  1;
 
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
 
events {
worker_connections  1024;
}
 
http {
include       /etc/nginx/mime.types;
default_type  application/octet-stream;
 
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
 
access_log  /var/log/nginx/access.log  main;
 
sendfile        on;
#tcp_nopush     on;
 
keepalive_timeout  3; #65 yerine 3 olarak degistirildi.
 
gzip  on; #basindaki isaret kaldirilarak gzip etkinlestirildi.
server_names_hash_bucket_size 128; #bu satır eklenerek olasi DNS sorunları onlendi.
include /etc/nginx/conf.d/*.conf;
}

Ardından sanal host dosyamızı düzenleyerek WordPress’i çalışır hale getiriyoruz.

nano /etc/nginx/conf.d/default.conf

Burada yapacağımız değişiklikler yalnızca dosyanın başındaki satırlar. Aşağıda belirtilen noktayı kendinize göre düzenleyin. Dosyanın içeriğini tamamen silip bu satırları kullanarak daha sade bir konfigürasyon dosyası elde etmiş olursunuz.

server {
listen 80;
server_name herhangi.net; #site adresinizi yazin
root  /var/www/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~* /\. {
deny all;
}
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

Nginx’i yeniden başlatıyoruz.

systemctl restart nginx

Performans Testi

Nginx kurulumu tamamlandı. Şimdi ab komutu ile benchmark testi yapıyoruz.

ab -n 300 -c 30 http://herhangi.net/
Concurrency Level:      30

Time taken for tests:   14.514 seconds
Complete requests:      300
Failed requests:        0
Write errors:           0
Total transferred:      16045800 bytes
HTML transferred:       15977700 bytes
Requests per second:    20.67 [#/sec] (mean)
Time per request:       1451.431 [ms] (mean)
Time per request:       48.381 [ms] (mean, across all concurrent requests)
Transfer rate:          1079.61 [Kbytes/sec] received
Connection Times (ms)

min  mean[+/-sd] median   max
Connect:        0    0   0.3      0       1
Processing:   138 1426 173.9   1442    2078
aiting:       77 1370 163.2   1382    1876
Total:        138 1426 173.9   1442    2078

Nginx kurulumu sonrası sayfa yükleme süresinde artış mevcut ancak saniye başına isteklere yanıt bir önceki optimizasyonla kıyaslandığında 14.94’dan 20.67’ye ulaşarak %38.35 artış gösterdi. Varsayılan yapılandırmayla kıyasladığımızda ise toplam artış %293.71.


Serinin tüm bölümleri:

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir