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:
- NGINX PHP isteğini alır
- FastCGI üzerinden PHP-FPM’e iletir
- PHP-FPM uygun işçi süreci seçer
- Çı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
- 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:
- Her PHP süreci ortalama 30–50 MB RAM tüketir.
- 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 🚀