PHP FastCGI Süreç Yöneticisi – PHP-FPM
PHP-FPM nedir?
PHP-FPM veya PHP FastCGI Process Manager, PHP betikleri için bir FastCGI uygulamasıdır. FastCGI, istekleri standart CGI’dan (Common Gateway Interface) daha verimli bir şekilde ele alarak web sunucularının performansını artırmak için kullanılan bir protokoldür. CGI her istek için yeni bir süreç yaratırken (yüksek kaynak tüketimine yol açar), FastCGI birden fazla isteği ele almaya hazır bir işçi süreçleri havuzu tutar, böylece ek yükü azaltır. PHP-FPM, FastCGI’nin üzerine bir süreç yönetimi katmanı ekleyerek, süreç havuzu oluşturma, işçilerin isteğe bağlı olarak ortaya çıkması, zarif kapatma ve yüksek trafikli ortamları kolaylıkla ele alma yeteneği gibi özelliklere izin verir. Artık NGINX ve Apachede dahil olmak üzere birçok modern web sunucusu için fiili standart PHP işleyicisidir
Neden PHP-FPM Kullanılmalı?
- Geliştirilmiş Performans: PHP-FPM daha az kaynakla daha fazla eşzamanlı isteği işleyebilir, sunucu yükünü azaltır ve yanıt sürelerini hızlandırır. Bu, özellikle yüksek trafikli web siteleri veya trafikte ani artışlar yaşayan uygulamalar için faydalıdır.
- Süreç Yönetimi: PHP-FPM, ince ayarlı süreç yönetimine olanak tanıyarak PHP’nin istekleri nasıl ele alacağı üzerinde kontrol sahibi olmanızı sağlar. Beklenen iş yüküne uyacak şekilde ayarlanabilen bir işçi havuzu kullanır ve sunucu kaynaklarının verimli kullanılmasını sağlar.
- Daha İyi Kaynak Kullanımı: PHP-FPM süreçleri bir havuzda topladığından, aynı çalışanları kullanarak birden fazla isteğe hizmet verebilir ve sürekli olarak süreç oluşturma ve sonlandırma ihtiyacını en aza indirir. Bu, bellek kullanımını ve CPU verimliliğini artırır.
- Zarif Bozulma: Doğru yapılandırıldığında PHP-FPM, sunucunun aşırı yüklenmesi durumunda etkin süreçlerin sayısını azaltarak tam bir çökmeyi önleyerek zarif bir şekilde bozulabilir.
- Gelişmiş Özellikler: PHP-FPM, hata ayıklama için slow-log, uyarlanabilir süreç oluşturma ve PHP uygulamalarınızın performansı ve sağlığı hakkında bilgi sağlayan durum raporlaması gibi gelişmiş özellikler içerir.
PHP-FPM’in Temel Özellikleri
- Süreç Havuzları: PHP-FPM, PHP işçi süreçlerinin birden fazla havuzunu tanımlamanıza olanak tanır. Her havuz farklı ayarlarla yapılandırılabilir, böylece aynı sunucu üzerinde farklı trafik gereksinimleri olan farklı PHP uygulamaları çalıştırabilirsiniz.
- Uyarlanabilir Süreç Doğurma: PHP-FPM, trafik seviyelerine bağlı olarak işçi süreçlerinin sayısını otomatik olarak ölçeklendirebilir. Minimum sayıda işçi ile başlar ve gerektiğinde düşük trafik dönemlerinde kaynakları boşa harcamadan havuz boyutunu artırabilir.
- Yavaş Günlük: PHP-FPM’deki yavaş günlük özelliği, önceden tanımlanmış bir yürütme süresini aşan istekleri kaydeder. Bu, geliştiricilerin PHP kodlarındaki performans darboğazlarını belirlemelerine ve çözmelerine yardımcı olur.
- Durum Sayfası: PHP-FPM, havuz durumu, aktif çalışanlar, boşta çalışanlar ve performansı izlemek için kullanılabilecek diğer ölçümler hakkında gerçek zamanlı bilgi veren yerleşik bir durum sayfası sağlar.
- Zarif Kapatma: PHP-FPM, kapatılmadan önce devam eden isteklerin tamamlanmasına izin vererek süreçleri zarif bir şekilde sonlandırabilir. Bu, çalışan komut dosyalarının aniden sonlandırılmasını önleyerek daha iyi bir kullanıcı deneyimi sağlar.
PHP-FPM Nasıl Çalışır?
PHP-FPM, PHP betiklerini sunmak için NGINX veya Apache gibi bir web sunucusuna entegre edilmiş bağımsız bir FastCGI sunucusu olarak çalışır. Bir istek geldiğinde, web sunucusu PHP isteğini PHP-FPM hizmetine iletir, bu da PHP kodunu çalıştırmak ve sonucu istemciye teslim edilmek üzere web sunucusuna geri göndermek için bir işçi süreçleri havuzunu yönetir. PHP-FPM’nin bir isteği nasıl işlediğine dair basitleştirilmiş bir akış aşağıda verilmiştir
- İstemci İsteği: Bir kullanıcı PHP kodu içeren bir web sayfası ister.
- Web Sunucusu İsteği Alır: Web sunucusu (NGINX veya Apache) isteği alır ve FastCGI protokolünü kullanarak PHP-FPM hizmetine iletir.
- PHP-FPM İşçisi İsteği İşler: PHP-FPM havuzundaki işçi süreçlerinden biri isteği işler, PHP betiğini çalıştırır ve çıktıyı döndürür.
- Yanıt Geri Gönderilir: Web sunucusu çıktıyı alır ve son işlenmiş HTML olarak istemciye geri gönderir.
PHP-FPM’nin Kurulumu ve Yapılandırılması
Adım 1: PHP-FPM Kurulumu
Çoğu Linux dağıtımı için PHP-FPM paket yöneticileri aracılığıyla kurulabilir. Yaygın sistemler için komutlar şunlardır: ###ATP_NOTR_1_CODE_TAG_NOTR_ATP## Kurulduktan sonra PHP-FPM hizmetini başlatabilirsiniz
sudo systemctl start php-fpm
Adım 2: PHP-FPM Havuzlarını Yapılandırma
PHP-FPM için ana yapılandırma dosyası, dağıtımınıza ve PHP sürümünüze bağlı olarak genellikle /etc/php/7.x/fpm/pool.d/ veya /etc/php-fpm.d/ içinde bulunur. Her havuz kendi dosyasında tanımlanır ve genellikle hizmet verdiği web sitesi veya uygulamanın adını alır. İşte bir havuz için örnek bir yapılandırma:
- pm = dinamik: Süreç yöneticisi, talebe bağlı olarak işçi süreçlerinin sayısını dinamik olarak ayarlayabilir.
- pm.max_children: İstekleri işlemek için ortaya çıkarılabilecek maksimum alt süreç sayısı.
- pm.start_servers: PHP-FPM başlatıldığında başlayan işçi süreçlerinin sayısı.
- pm.min_spare_servers ve pm.max_spare_servers: PHP-FPM’nin yüke bağlı olarak kaynakları ölçeklendirmesine izin veren en az ve en fazla boşta çalışan işçi sayısını tanımlar.
- pm.max_requests: Bir çalışanın sonlandırılmadan ve değiştirilmeden önce işleyebileceği en fazla istek sayısı. Bu, uzun süre çalışan komut dosyalarında bellek sızıntılarını önlemeye yardımcı olur.
Adım 3: Web Sunucusunu PHP-FPM Kullanacak Şekilde Yapılandırma
NGINX için:
NGINX yapılandırma dosyanızda (örneğin, /etc/nginx/sites-available/example.com) PHP-FPM’yi PHP işleyicisi olarak ayarlayın: ###ATP_NOTR_5_CODE_TAG_NOTR_ATP##
Apache’de PHP-FPM’i etkinleştirmek için mod_proxy_fcgi modülünün etkin olduğundan emin olun
sudo a2enmod proxy_fcgi setenvif
Ardından Apache sanal konak yapılandırmanızı güncelleyin
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/html
<FilesMatch .php$>
SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost/"
</FilesMatch>
</VirtualHost>
Adım 4: Yapılandırmanın Test Edilmesi
PHP-FPM ve web sunucunuzu yapılandırdıktan sonra, değişiklikleri uygulamak için hizmetleri yeniden başlatın: ###ATP_NOTR_8_CODE_TAG_NOTR_ATP## ##ATP_NOTR_9_CODE_TAG_NOTR_ATP## PHP-FPM’nin çalıştığını doğrulamak için web kök dizininizde bir phpinfo.php dosyası oluşturun: ###ATP_NOTR_10_CODE_TAG_NOTR_ATP## Dosyayı tarayıcınızda ziyaret edin (örn, http://example.com/phpinfo.php) PHP-FPM’nin işleyici olarak listelenip listelenmediğini görün
Sonuç: AlexHost ve PHP-FPM ile PHP’yi güçlendirin
PHP-FPM, PHP uygulamalarınızı yüksek performanslı makinelere dönüştürür ve AlexHost’un NVMe destekli VPS’si ağır yükler altında sorunsuz çalışmasını sağlar. PHP-FPM’i kurun, havuzları yapılandırın ve hızlı, güvenli web siteleri için NGINX veya Apache ile entegre edin. Durum sayfalarıyla izleyin, yavaş günlüklerle hata ayıklayın ve güvenlik için yapılandırmaları yedekleyin. AlexHost’un kök erişimi ve desteği ile PHP projeleriniz durdurulamaz – kodlamaya başlayın ve zahmetsizce ölçeklendirin!