Ana içeriğe geç

NGINX PHP-FPM Yapılandırması: Güvenli ve Yüksek Performanslı PHP

NGINX, PHP dosyalarını doğrudan çalıştıramaz.
PHP-FPM, bu boşluğu doldurarak PHP işlemlerini hızlı ve güvenli şekilde yönetir.

Bu rehberde PHP-FPM’in çalışma mantığını ve NGINX ile doğru entegrasyonunu öğreneceksiniz.


Bu Rehberde Ne Öğreneceksiniz?

  • PHP-FPM nasıl çalışır
  • PHP-FPM kurulumu
  • Özel FPM pool oluşturma
  • NGINX ile FastCGI bağlantısı
  • 502 hatası ve performans ipuçları

Teknik Özet

Bu rehber, Ubuntu tabanlı sistemlerde NGINX + PHP-FPM entegrasyonunu anlatır.
Amaç, PHP uygulamalarını yüksek performans ve izolasyonla çalıştırmaktır.

Kapsam:

  • PHP-FPM kurulumu
  • Pool (havuz) yapılandırması
  • NGINX FastCGI ayarları
  • Test ve optimizasyon

PHP-FPM Nasıl Çalışır?

PHP-FPM, PHP’yi arka plan süreci (daemon) olarak çalıştırır.

Akış şu şekildedir:

  1. NGINX PHP isteğini alır
  2. FastCGI üzerinden PHP-FPM’e iletir
  3. PHP-FPM uygun işçi süreci seçer
  4. Çıktı NGINX’e geri döner

Süreç Türleri

  • Master Process: Worker süreçlerini yönetir
  • Worker Process: PHP kodunu çalıştırır

Bu yapı bellek sızıntılarını azaltır ve performansı korur.


Ön Gereksinimler

  • Ubuntu sunucu (örnek: tr1-node01)
  • NGINX kurulu
  • PHP yüklü
  • SSH erişimi

1. PHP-FPM Kurulumu

apt install php-fpm -y
  • Bu komut PHP-FPM servisini kurar.


systemctl status php-fpm
  • Bu komut servisin çalıştığını doğrular.

2. Özel PHP-FPM Pool Oluşturma

  1. Her uygulama için ayrı pool önerilir.
  • Bu yöntem güvenliği ve kaynak kontrolünü artırır.

Kullanıcı Oluşturma


groupadd wordpress_user
useradd -g wordpress_user wordpress_user
  • Bu komut uygulamaya özel kullanıcı oluşturur.

Pool Yapılandırması


nano /etc/php/*/fpm/pool.d/wordpress_pool.conf

[wordpress_site]
user = wordpress_user
group = wordpress_user

listen = /var/run/php-fpm-wordpress.sock
listen.owner = www-data
listen.group = www-data

pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 20
pm.max_requests = 500
  • Bu ayarlar dinamik ve dengeli bir havuz oluşturur.

💡 İpucu:

  1. Her PHP süreci ortalama 30–50 MB RAM tüketir.
  2. pm.max_children değerini buna göre ayarlayın.

systemctl restart php-fpm
  • Bu komut yeni ayarları uygular.

3. NGINX PHP-FPM Yapılandırması


server {
listen 80;
server_name rabisu.cloud;
root /var/www/wordpress;

index index.php index.html;

location / {
try_files $uri $uri/ /index.php?$args;
}

location ~ \.php$ {
include fastcgi.conf;
fastcgi_pass unix:/var/run/php-fpm-wordpress.sock;
}
}
  • Bu yapılandırma PHP isteklerini doğru pool’a yönlendirir.


nginx -t
systemctl restart nginx
  • Bu komut yapılandırmayı doğrular.

4. Yapılandırmayı Test Etme


echo "<?php phpinfo(); ?>" > /var/www/wordpress/info.php

  • Bu dosya PHP-FPM kullanıcı bilgisini gösterir.

Tarayıcıdan açın:


http://rabisu.cloud/info.php
  • USER değeri wordpress_user ise yapılandırma doğrudur.

Sıkça Sorulan Sorular (SSS)

1. 502 Bad Gateway hatası neden olur? PHP-FPM çalışmıyor veya socket yolu hatalıdır.

2. Socket mi TCP port mu kullanmalıyım? Aynı sunucuda socket daha hızlıdır.

3. Performansı nasıl artırırım? pm.max_children değerini RAM’e göre ayarlayın.

4. Birden fazla PHP sürümü çalıştırabilir miyim? Evet, her sürüm için ayrı pool oluşturabilirsiniz.


Sonuç

PHP-FPM ile NGINX kullanmak:

Daha az kaynak tüketir

Uygulamaları izole eder

Yüksek trafikte stabilite sağlar

Bu yapılandırmayı Rabisu Bulut altyapısındaki sunucularınızda güvenle uygulayabilirsiniz 🚀