Cara Sediakan Kolam PHP-FPM Berasingan dalam NGINX
Diterbitkan: 19 Mac 2025 pada 9:26:58 PTG UTC
Kemas kini terakhir: 12 Januari 2026 pada 8:30:29 PG UTC
Dalam artikel ini, saya membincangkan langkah konfigurasi yang diperlukan untuk menjalankan berbilang kumpulan PHP-FPM dan menyambung NGINX kepada mereka melalui FastCGI, membenarkan pemisahan dan pengasingan proses antara hos maya.
How to Set Up Separate PHP-FPM Pools in NGINX
Maklumat dalam catatan ini adalah berdasarkan NGINX 1.4.6 dan PHP-FPM 5.5.9 yang berjalan pada Ubuntu Server 14.04 x64. Ia mungkin sah atau tidak untuk versi lain. (Kemas kini: Saya boleh mengesahkan bahawa setakat Ubuntu Server 24.04, PHP-FPM 8.3 dan NGINX 1.24.0, semua arahan dalam catatan ini masih berfungsi)
Terdapat beberapa kelebihan untuk menyediakan berbilang kumpulan proses anak PHP-FPM daripada menjalankan semuanya dalam kumpulan yang sama. Keselamatan, pemisahan/pengasingan dan pengurusan sumber terlintas di fikiran sebagai beberapa kelebihan utama.
Tidak kira apa motivasi anda, catatan ini akan membantu anda melakukannya :-)
Bahagian 1 – Sediakan kolam PHP-FPM baharu
Pertama, anda perlu mencari direktori tempat PHP-FPM menyimpan konfigurasi kolamnya. Pada Ubuntu 14.04, ini adalah /etc/php5/fpm/pool.d secara lalai. Mungkin sudah ada fail di sana yang dipanggil www.conf, yang menyimpan konfigurasi untuk kolam lalai. Jika anda belum pernah melihat fail itu sebelum ini, kemungkinan besar anda harus menyemaknya dan mengubah suai tetapan di dalamnya untuk persediaan anda kerana tetapan lalai adalah untuk pelayan yang agak lemah, tetapi buat sahaja salinannya supaya kita tidak perlu bermula dari awal:
Sudah tentu, gantikan "mypool" dengan apa sahaja yang anda mahu namakan kolam anda.
Sekarang buka fail baharu menggunakan nano atau mana-mana editor teks yang anda suka dan laraskannya agar sesuai dengan tujuan anda. Anda mungkin mahu mengubah suai nombor proses anak dan mungkin pengguna dan kumpulan yang menjalankan kolam renang, tetapi dua tetapan yang mesti anda ubah ialah nama kolam renang dan soket yang didengarinya, jika tidak, ia akan bercanggah dengan kolam renang sedia ada dan semuanya akan berhenti berfungsi.
Nama kolam renang berada berhampiran bahagian atas fail, dilekatkan dalam kurungan segi empat sama. Secara lalainya ialah [www]. Tukar ini kepada apa sahaja yang anda mahu; saya cadangkan sama seperti anda menamakan fail konfigurasi, jadi demi contoh ini tukarkannya kepada [mypool]. Jika anda tidak mengubahnya, nampaknya PHP-FPM hanya akan memuatkan fail konfigurasi pertama dengan nama itu, yang berkemungkinan akan merosakkan sesuatu.
Anda kemudian perlu menukar soket atau alamat yang anda dengari, yang ditakrifkan oleh arahan listen. Secara lalai, PHP-FPM menggunakan soket Unix jadi arahan listen anda mungkin akan kelihatan seperti ini:
Anda boleh mengubahnya kepada nama sah yang anda mahukan, tetapi sekali lagi, saya cadangkan kekal dengan sesuatu yang serupa dengan nama fail konfigurasi, jadi anda boleh menetapkannya kepada:
Baiklah kemudian, simpan fail tersebut dan keluar dari editor teks.
Bahagian 2 – Kemas kini konfigurasi hos maya NGINX
Sekarang anda perlu membuka fail hos maya NGINX dengan konfigurasi FastCGI yang anda ingin ubah ke kolam baharu – atau sebaliknya, sambungkan ke soket baharu.
Secara lalai pada Ubuntu 14.04, ini disimpan di bawah /etc/nginx/sites-available, tetapi juga boleh ditakrifkan di tempat lain. Anda mungkin paling tahu di mana konfigurasi hos maya anda berada ;-)
Buka fail konfigurasi yang berkaitan dalam editor teks kegemaran anda dan cari arahan fastcgi_pass (yang mesti berada dalam konteks lokasi) yang mentakrifkan soket PHP-FPM. Anda mesti menukar nilai ini supaya ia sepadan dengan konfigurasi kumpulan PHP-FPM baharu yang anda buat di bawah langkah satu, jadi meneruskan contoh kita, anda akan menukarnya kepada:
Fastcgi_pass unix:/var/run/php5-fpm-mypool.sock;
Kemudian simpan dan tutup fail itu juga. Anda hampir selesai sekarang.
Bahagian 3 – Mulakan Semula PHP-FPM dan NGINX
Untuk menggunakan perubahan konfigurasi yang telah anda buat, mulakan semula PHP-FPM dan NGINX. Ia mungkin mencukupi untuk memuatkan semula dan bukannya memulakan semula, tetapi saya dapati ia agak sukar, bergantung pada tetapan yang diubah. Dalam kes tertentu, saya mahu proses anak PHP-FPM lama mati serta-merta, jadi memulakan semula PHP-FPM diperlukan, tetapi untuk NGINX muat semula mungkin mencukupi. Cubalah sendiri.
sudo service nginx restart
Dan voila, anda sudah selesai. Jika anda melakukan semuanya dengan betul, hos maya yang anda ubah suai kini sepatutnya menggunakan kolam PHP-FPM baharu dan tidak berkongsi proses anak dengan mana-mana hos maya yang lain.
