Cara Menyiapkan Pool PHP-FPM Terpisah di NGINX
Diterbitkan: 15 Februari 2025 pukul 11.52.31 UTC
Terakhir diperbarui: 12 Januari 2026 pukul 08.29.58 UTC
Pada artikel ini, saya akan membahas langkah-langkah konfigurasi yang diperlukan untuk menjalankan beberapa pool PHP-FPM dan menghubungkan NGINX ke pool tersebut melalui FastCGI, sehingga memungkinkan pemisahan dan isolasi proses antar virtual host.
How to Set Up Separate PHP-FPM Pools in NGINX
Informasi dalam posting ini didasarkan pada NGINX 1.4.6 dan PHP-FPM 5.5.9 yang berjalan di Ubuntu Server 14.04 x64. Informasi ini mungkin berlaku atau mungkin tidak berlaku untuk versi lain. (Update: Saya dapat mengkonfirmasi bahwa pada Ubuntu Server 24.04, PHP-FPM 8.3 dan NGINX 1.24.0, semua petunjuk dalam posting ini masih berfungsi)
Ada sejumlah keuntungan dalam menyiapkan beberapa kumpulan proses anak PHP-FPM daripada menjalankan semuanya dalam kumpulan yang sama. Keamanan, pemisahan/isolasi, dan manajemen sumber daya adalah beberapa keuntungan utama yang terlintas dalam pikiran.
Apa pun motivasi Anda, postingan ini akan membantu Anda melakukannya :-)
Bagian 1 – Menyiapkan pool PHP-FPM baru
Pertama, Anda perlu menemukan direktori tempat PHP-FPM menyimpan konfigurasi pool-nya. Pada Ubuntu 14.04, secara default direktori tersebut adalah /etc/php5/fpm/pool.d. Kemungkinan besar sudah ada file bernama www.conf di sana, yang berisi konfigurasi untuk pool default. Jika Anda belum pernah melihat file tersebut sebelumnya, sebaiknya Anda memeriksanya dan mengubah pengaturan di dalamnya sesuai dengan konfigurasi Anda karena pengaturan default tersebut ditujukan untuk server yang cukup terbatas, tetapi untuk saat ini cukup buat salinannya agar kita tidak perlu memulai dari awal:
Tentu saja, ganti “mypool” dengan nama apa pun yang Anda inginkan untuk kolam renang Anda.
Sekarang buka file baru menggunakan nano atau editor teks apa pun yang Anda sukai dan sesuaikan agar sesuai dengan tujuan Anda. Anda mungkin ingin mengubah nomor proses anak dan mungkin pengguna dan grup tempat pool berjalan, tetapi dua pengaturan yang mutlak harus Anda ubah adalah nama pool dan soket yang didengarkannya, jika tidak, akan terjadi konflik dengan pool yang sudah ada dan semuanya akan berhenti berfungsi.
Nama pool terletak di dekat bagian atas file, diapit oleh tanda kurung siku. Secara default, namanya adalah [www]. Ubah ini sesuai keinginan Anda; saya sarankan sama seperti nama file konfigurasi Anda, jadi untuk contoh ini ubah menjadi [mypool]. Jika Anda tidak mengubahnya, tampaknya PHP-FPM hanya akan memuat file konfigurasi pertama dengan nama tersebut, yang kemungkinan akan menyebabkan masalah.
Selanjutnya, Anda perlu mengubah soket atau alamat yang Anda dengarkan, yang ditentukan oleh perintah `listen`. Secara default, PHP-FPM menggunakan soket Unix, jadi perintah `listen` Anda mungkin akan terlihat seperti ini:
Anda dapat mengubahnya menjadi nama valid apa pun yang Anda inginkan, tetapi sekali lagi, saya sarankan untuk tetap menggunakan sesuatu yang mirip dengan nama file konfigurasi, jadi misalnya Anda dapat mengaturnya menjadi:
Baiklah, simpan file dan keluar dari editor teks.
Bagian 2 – Memperbarui konfigurasi virtual host NGINX
Sekarang Anda perlu membuka file virtual host NGINX dengan konfigurasi FastCGI yang ingin Anda ubah ke pool baru – atau lebih tepatnya, terhubung ke socket baru.
Secara default di Ubuntu 14.04, pengaturan ini disimpan di bawah /etc/nginx/sites-available, tetapi juga dapat didefinisikan di tempat lain. Anda mungkin paling tahu di mana konfigurasi virtual host Anda berada ;-)
Buka file konfigurasi yang relevan di editor teks favorit Anda dan cari arahan fastcgi_pass (yang harus berada dalam konteks lokasi) yang mendefinisikan soket PHP-FPM. Anda harus mengubah nilai ini agar sesuai dengan konfigurasi pool PHP-FPM baru yang Anda buat pada langkah pertama, jadi melanjutkan contoh kita, Anda akan mengubahnya menjadi:
Fastcgi_pass unix:/var/run/php5-fpm-mypool.sock;
Kemudian simpan dan tutup file tersebut juga. Anda hampir selesai sekarang.
Bagian 3 – Memulai Ulang PHP-FPM dan NGINX
Untuk menerapkan perubahan konfigurasi yang telah Anda buat, mulai ulang PHP-FPM dan NGINX. Mungkin cukup dengan memuat ulang (reload) daripada memulai ulang, tetapi saya menemukan bahwa hal itu agak tidak pasti, tergantung pada pengaturan mana yang diubah. Dalam kasus khusus ini, saya ingin proses anak PHP-FPM yang lama langsung mati, jadi memulai ulang PHP-FPM diperlukan, tetapi untuk NGINX, memuat ulang mungkin sudah cukup. Cobalah sendiri.
sudo service nginx restart
Dan voilà, selesai. Jika Anda melakukan semuanya dengan benar, virtual host yang Anda modifikasi sekarang seharusnya menggunakan pool PHP-FPM yang baru dan tidak berbagi proses anak dengan virtual host lain.
