NGINX'te Ayrı PHP-FPM Havuzları Nasıl Kurulur
Yayınlandı: 15 Şubat 2025 11:53:07 UTC
Bu makalede, birden fazla PHP-FPM havuzunu çalıştırmak ve NGINX'i FastCGI aracılığıyla bunlara bağlamak, böylece sanal sunucular arasında işlem ayrımı ve izolasyonu sağlamak için gereken yapılandırma adımlarını ele alacağım.
How to Set Up Separate PHP-FPM Pools in NGINX
Bu gönderideki bilgiler Ubuntu Server 14.04 x64 üzerinde çalışan NGINX 1.4.6 ve PHP-FPM 5.5.9'a dayanmaktadır. Diğer sürümler için geçerli olabilir veya olmayabilir. (Güncelleme: Ubuntu Server 24.04, PHP-FPM 8.3 ve NGINX 1.24.0 itibariyle bu gönderideki tüm talimatların hala çalıştığını doğrulayabilirim)
Her şeyi aynı havuzda çalıştırmak yerine birden fazla PHP-FPM alt işlem havuzu kurmanın birçok avantajı vardır. Güvenlik, ayırma/yalıtım ve kaynak yönetimi birkaç önemli avantaj olarak akla gelir.
Motivasyonunuz ne olursa olsun, bu yazı bunu başarmanıza yardımcı olacak :-)
Bölüm 1 – Yeni bir PHP-FPM havuzu kurun
Öncelikle, PHP-FPM'nin havuz yapılandırmalarını depoladığı dizini bulmanız gerekir. Ubuntu 14.04'te, varsayılan olarak bu /etc/php5/fpm/pool.d'dir. Muhtemelen orada www.conf adında varsayılan havuz yapılandırmasını tutan bir dosya vardır. Daha önce bu dosyaya bakmadıysanız, büyük ihtimalle onu incelemeli ve kurulumunuz için içindeki ayarları değiştirmelisiniz çünkü varsayılanlar oldukça güçsüz bir sunucu içindir, ancak şimdilik sıfırdan başlamak zorunda kalmamak için bir kopyasını oluşturun:
Elbette, "mypool" ifadesini havuzunuzun adının ne olmasını istiyorsanız onunla değiştirebilirsiniz.
Şimdi nano veya tercih ettiğiniz herhangi bir metin düzenleyicisini kullanarak yeni dosyayı açın ve amacınıza uyacak şekilde ayarlayın. Muhtemelen alt işlem numaralarını ve muhtemelen havuzun hangi kullanıcı ve grup altında çalıştığını ayarlamak isteyeceksiniz, ancak mutlaka değiştirmeniz gereken iki ayar havuzun adı ve dinlediği sokettir, aksi takdirde mevcut havuzla çakışır ve her şey çalışmayı durdurur.
Havuzun adı dosyanın en üstüne yakın bir yerde, köşeli parantez içindedir. Varsayılan olarak [www]' dir. Bunu istediğiniz şekilde değiştirin; yapılandırma dosyasını adlandırdığınız gibi adlandırmanızı öneririm, bu nedenle bu örnek için [mypool] olarak değiştirin. Değiştirmezseniz, PHP-FPM'nin yalnızca bu adı taşıyan ilk yapılandırma dosyasını yükleyeceği ve bunun da işleri bozacağı anlaşılıyor.
Daha sonra dinlediğiniz soketi veya adresi değiştirmeniz gerekir, bu listen yönergesi tarafından tanımlanır. Varsayılan olarak, PHP-FPM Unix soketlerini kullanır, bu nedenle listen yönergeniz muhtemelen şöyle görünecektir:
Bunu istediğiniz geçerli bir isimle değiştirebilirsiniz, ancak yine de yapılandırma dosya adına benzer bir şey kullanmanızı öneririm, örneğin şunu ayarlayabilirsiniz:
Tamamdır, dosyayı kaydedip metin düzenleyiciden çıkalım.
Bölüm 2 – NGINX sanal ana bilgisayar yapılandırmasını güncelleyin
Şimdi, değiştirmek istediğiniz FastCGI yapılandırmasıyla NGINX sanal ana bilgisayar dosyasını yeni bir havuza açmanız veya daha doğrusu yeni sokete bağlanmanız gerekiyor.
Ubuntu 14.04'te varsayılan olarak bunlar /etc/nginx/sites-available altında saklanır, ancak başka bir yerde de tanımlanabilir. Sanal ana bilgisayar yapılandırmalarınızın nerede bulunduğunu muhtemelen siz daha iyi bilirsiniz ;-)
İlgili yapılandırma dosyasını favori metin düzenleyicinizde açın ve PHP-FPM soketini tanımlayan fastcgi_pass yönergesini (bir konum bağlamında olması gerekir) arayın. Bu değeri, birinci adımda yaptığınız yeni PHP-FPM havuz yapılandırmasıyla eşleşecek şekilde değiştirmelisiniz, bu nedenle örneğimize devam ederseniz bunu şu şekilde değiştirirsiniz:
fastcgi_pass unix:/var/run/php5-fpm-mypool.sock;
Daha sonra bu dosyayı da kaydedip kapatın. Artık neredeyse bitti.
Bölüm 3 – PHP-FPM ve NGINX'i yeniden başlatın
Yaptığınız yapılandırma değişikliklerini uygulamak için hem PHP-FPM'i hem de NGINX'i yeniden başlatın. restart yerine reload yeterli olabilir , ancak hangi ayarların değiştirildiğine bağlı olarak biraz isabetli ve isabetsiz olduğunu düşünüyorum. Belirli durumda, eski PHP-FPM alt süreçlerinin hemen ölmesini istedim, bu nedenle PHP-FPM'yi yeniden başlatmak gerekiyordu, ancak NGINX için bir yeniden yükleme yeterli olabilir. Kendiniz deneyin.
sudo service nginx restart
Ve işte, bitirdiniz. Her şeyi doğru yaptıysanız, değiştirdiğiniz sanal ana bilgisayar artık yeni PHP-FPM havuzunu kullanıyor olmalı ve alt süreçleri başka sanal ana bilgisayarlarla paylaşmıyor olmalı.