PHP-FPM
PHP, web geliştirmede yaygın olarak kullanılan popüler bir betik dilidir. PHP kodunu bir web sunucusu (Apache, Nginx vb.) ile çalıştırmanın çeşitli yolları vardır. Eski yöntemlerden biri Apache'nin mod_php
modülünü kullanmaktı, ancak bu yöntem genellikle daha az esnek ve performanslıdır.
Modern ve önerilen yaklaşım, PHP-FPM (FastCGI Process Manager) kullanmaktır. PHP-FPM, PHP için alternatif bir FastCGI daemon'ıdır ve web sunucusundan bağımsız olarak çalışır. Web sunucusu, gelen PHP isteklerini FastCGI protokolü üzerinden PHP-FPM'e iletir, PHP-FPM isteği işler ve sonucu web sunucusuna geri gönderir.
PHP-FPM'in Avantajları:
Performans: Genellikle
mod_php
'den daha iyi performans sunar.Esneklik: Farklı web siteleri veya uygulamalar için ayrı PHP-FPM havuzları (pools) tanımlanabilir. Her havuz farklı kullanıcı/grup kimliğiyle, farklı PHP ayarlarıyla (
php.ini
) ve farklı kaynak limitleriyle çalıştırılabilir. Bu, güvenlik ve izolasyonu artırır.Kaynak Yönetimi: İşlem yönetimi (process management -
pm
) ayarları (static
,dynamic
,ondemand
) ile kaynak kullanımı daha iyi kontrol edilebilir.Web Sunucusu Bağımsızlığı: Hem Apache hem de Nginx gibi farklı web sunucularıyla kullanılabilir.
Kurulum
PHP-FPM ve ilgili PHP paketleri genellikle dağıtımın paket yöneticisi ile kurulur. PHP sürümü (örn. 8.1, 8.2) dağıtıma göre değişir. Belirli bir sürümü kurmak için ek depolar (örn. REMI, Ondřej Surý PPA) gerekebilir.
RHEL Tabanlı (dnf): (Genellikle
remi-release
deposu etkinleştirildikten sonra)Debian Tabanlı (apt): (Genellikle
ondrej/php
PPA'sı eklendikten sonra veya dağıtımın kendi sürümü)
Servis Yönetimi (systemctl
)
systemctl
)PHP-FPM servisi systemd ile yönetilir. Servis adı genellikle PHP sürümünü içerir.
PHP-FPM Havuz (Pool) Yapılandırması
PHP-FPM, farklı ayarlar ve kullanıcılarla çalışabilen havuzlar (pools) kullanır. Varsayılan havuz genellikle www
olarak adlandırılır ve yapılandırması /etc/php/<sürüm>/fpm/pool.d/www.conf
(Debian/Ubuntu) veya /etc/php-fpm.d/www.conf
(RHEL/CentOS) gibi dosyalarda bulunur.
Her web sitesi veya uygulama için ayrı bir havuz oluşturmak iyi bir pratiktir.
Örnek Havuz Yapılandırması (/etc/php-fpm.d/example.com.conf
):
Yeni bir havuz dosyası oluşturduktan veya mevcut olanı değiştirdikten sonra PHP-FPM servisini yeniden başlatmanız (sudo systemctl restart php<sürüm>-fpm
) gerekir.
Web Sunucusu Yapılandırması
Web sunucusunun, PHP dosyalarına gelen istekleri ilgili PHP-FPM havuzunun dinlediği sokete (veya porta) FastCGI protokolü üzerinden iletmesi gerekir.
1. Apache ile PHP-FPM (mod_proxy_fcgi kullanarak)
Gerekli Apache modüllerini etkinleştirin:
Apache sanal ana bilgisayar yapılandırmasına (<VirtualHost>
bloğu içine) aşağıdaki gibi bir direktif ekleyin (Unix soketi kullanarak):
Yapılandırmayı kontrol edip Apache'yi yeniden yükleyin:
2. Nginx ile PHP-FPM
Nginx sanal ana bilgisayar yapılandırmasındaki (server
bloğu içine) location
bloğunu PHP isteklerini işleyecek şekilde düzenleyin (Unix soketi kullanarak):
Yapılandırmayı kontrol edip Nginx'i yeniden yükleyin:
PHP-FPM, modern PHP uygulamalarını web sunucularıyla entegre etmek için standart ve performanslı bir yöntemdir. Farklı havuzlar kullanarak uygulamalar arasında daha iyi izolasyon ve kaynak yönetimi sağlar.
Last updated