Nginx PHP-FPM optimizasyonu, sunucu hizmetinizdeki web sitelerinin performansını artırmak ve kaynak kullanımını optimize etmek için yapılır. Bu işlemi yaparken Nginx ve PHP-FPM yapılandırma dosyalarında doğru ayarları yapmak gerekir.
1. PHP-FPM Konfigürasyonu
PHP-FPM’in optimizasyonu için /etc/php/7.4/fpm/pool.d/www.conf
dosyasını düzenlemeniz gerekir. İşlemler için aşağıdaki ayarlara dikkat edin:
pm.max_children: Bu ayar, PHP-FPM’nin aynı anda kaç çocuk işlemi (worker process) başlatabileceğini belirler. Sunucu belleğinize göre ayarlanmalıdır.
pm.max_children = 50
pm.start_servers: Bu ayar, başlangıçta kaç işlem başlatılacağını belirler. Çok düşük ayarlarsanız ilk talep yavaş olabilir, çok yüksek ayarlarsanız belleği fazla kullanabilir.
pm.start_servers = 5
pm.min_spare_servers ve pm.max_spare_servers: Minimum ve maksimum boşta bekleyen işlem sayısını belirler. Bunlar, trafiğe göre ayarlanmalıdır.
pm.min_spare_servers = 5
pm.max_spare_servers = 10
Bu ayarlarla PHP-FPM’nin talep kapasitesine göre yeterli kaynak ayırabilirsiniz.
2. Nginx Konfigürasyonu
Nginx’in PHP-FPM ile nasıl iletişim kuracağını ayarlamak için Nginx’in konfigürasyon dosyasını (/etc/nginx/sites-available/default
) düzenlemeniz gerekir. PHP işlemleri için aşağıdaki gibi bir yapılandırma yapılmalıdır:
server {
listen 80;
server_name yourdomain.com;
root /var/www/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
Burada fastcgi_pass
ayarının doğru olduğuna dikkat etmelisiniz. Nginx, PHP işlemlerini PHP-FPM’ye iletir ve soket üzerinden iletişim kurar.
3. Buffer ve Zaman Aşımı Ayarları
PHP-FPM taleplerinin performansını optimize etmek için Nginx’in buffer ve zaman aşımı ayarlarını düzenlemelisiniz. Bu ayarlar, Nginx’in veriyi nasıl tamponladığını ve uzun süren işlemler için zaman aşımını nasıl ayarlayacağını belirler.
client_body_buffer_size: POST talepleri için kullanılan tampon belleğin boyutunu belirler.
client_body_buffer_size 128k;
client_max_body_size: Yüklenebilecek maksimum dosya boyutunu belirler. Bu, büyük dosya yüklemeleri olan siteler için önemlidir.
client_max_body_size 16M;
fastcgi_buffers: PHP talepleri için kullanılacak tamponların sayısını ve boyutunu belirler. Aşağıdaki ayar, taleplerin hızlı bir şekilde işlenmesini sağlar.
fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k;
fastcgi_connect_timeout, fastcgi_send_timeout, ve fastcgi_read_timeout: Bu ayarlar, PHP işlemlerinin ne kadar süre sonra zaman aşımına uğrayacağını belirler. Trafiği yoğun olan siteler için bu ayarların optimize edilmesi gerekir.
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
4. PHP-FPM Loglama ve Performans İzleme
PHP-FPM’nin çalışma performansını izlemek için loglama ayarlarını açmanız önerilir. Bu sayede hangi işlemlerin uzun sürdüğünü ve performans sorunlarının nereden kaynaklandığını görebilirsiniz.
slowlog: Yavaş talepler için loglama yapılmasını sağlar. Bu ayarı aktif etmek için www.conf
dosyasındaki şu satırları düzenleyin:
slowlog = /var/log/php7.4-fpm.log.slow
request_slowlog_timeout = 5s
Bu ayar, 5 saniyeden uzun süren PHP taleplerini loglar.
5. Nginx Cache Optimizasyonu
Nginx, dinamik içerikleri önbelleğe alarak PHP-FPM üzerindeki yükü azaltabilir. Aşağıdaki ayarları ekleyerek Nginx cache mekanizmasını kullanabilirsiniz:
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=php_cache:10m max_size=1g inactive=60m use_temp_path=off;
Bu satır, Nginx’in dinamik içerikleri önbelleğe alacağı bir alan oluşturur. Ve sunucu üzerindeki önbelleğin boyutunu ve süresini ayarlamış olursunuz.
6. Cache Kontrolü ve Expiry Ayarları
PHP-FPM ile çalışan dinamik içeriklerin daha iyi performans göstermesi için içerik önbellekleme sürelerini ayarlayabilirsiniz. Örneğin, CSS ve JavaScript dosyalarının önbellekte uzun süre kalmasını sağlayarak sayfa yüklenme sürelerini azaltabilirsiniz.
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
access_log off;
}
Bu ayar, statik dosyaların tarayıcıda 30 gün boyunca önbellekte tutulmasını sağlar. Nginx PHP-FPM optimizasyonu, doğru ayarlarla web sunucunuzun performansını artırır ve daha verimli kaynak kullanımı sağlar. Nginx ve PHP-FPM yapılandırmaları, yüksek trafik altındaki sitelerde bile hızlı tepki süreleri sunar. Yukarıda belirtilen ayarları yaparak sitenizin hızını ve verimliliğini en üst düzeye çıkarabilirsiniz.