Ketika membahas Web Server Nginx, ada satu komponen yang cukup sering muncul bersamanya, yaitu PHP-FPM.
Bagi orang yang baru belajar server, istilah ini mungkin terdengar cukup rumit.
Apalagi jika sebelumnya kita hanya mengenal website sederhana yang terdiri dari file HTML, CSS, JavaScript, dan gambar.
Lalu muncul pertanyaan:
Kalau Nginx sudah menjadi web server, mengapa masih membutuhkan PHP-FPM?
Pertanyaan tersebut justru menjadi pintu masuk yang bagus untuk memahami bagaimana sebuah website dinamis bekerja.
Karena website berbasis PHP tidak hanya membutuhkan web server.
Ada proses lain yang harus dilakukan agar kode PHP dapat dijalankan dan menghasilkan halaman yang kemudian dikirim kepada browser.
Di sinilah PHP-FPM memiliki peran.
Apa Itu PHP-FPM?
PHP-FPM merupakan singkatan dari PHP FastCGI Process Manager.
Sederhananya, PHP-FPM adalah komponen yang bertugas mengelola proses PHP agar aplikasi berbasis PHP dapat dijalankan dalam lingkungan server.
Jika Nginx menerima permintaan dari browser untuk sebuah file PHP, Nginx dapat meneruskan permintaan tersebut kepada PHP-FPM.
PHP-FPM kemudian memproses kode PHP dan menghasilkan response.
Gambaran sederhananya:
Browser
⬇️
Nginx
⬇️
PHP-FPM
⬇️
Kode PHP diproses
⬇️
Response
⬇️
Browser
Jadi, Nginx dan PHP-FPM memiliki tugas yang berbeda, tetapi dapat bekerja bersama.
Mengapa Nginx Membutuhkan PHP-FPM?
Ini bagian yang sering membingungkan murid ketika pertama kali belajar Nginx.
Nginx berfungsi sebagai web server.
Namun, Nginx tidak bertugas menjalankan kode PHP secara langsung.
Ketika browser meminta:
index.html
Nginx dapat memberikan file tersebut sebagai konten statis.
Tetapi ketika browser meminta:
index.php
dan file tersebut berisi kode PHP yang harus diproses, diperlukan komponen yang mampu menjalankan PHP.
Dalam skenario yang umum:
Nginx menerima request → PHP-FPM memproses PHP → hasilnya dikembalikan melalui Nginx.
Konsep sederhana ini sangat penting dipahami sebelum murid masuk ke konfigurasi yang lebih kompleks.
Website Statis dan Website Dinamis
Untuk memahami kebutuhan PHP-FPM, kita perlu membedakan dua jenis website secara sederhana.
Website Statis
Contohnya:
index.html
style.css
script.js
Isi halaman dapat disajikan langsung oleh web server.
Website Dinamis
Misalnya website menggunakan:
index.php
Kode PHP dapat memproses data, menjalankan logika aplikasi, berkomunikasi dengan database, dan menghasilkan halaman sesuai kondisi tertentu.
Karena terdapat proses di sisi server, dibutuhkan lingkungan yang dapat menjalankan PHP.
Di sinilah PHP-FPM dapat digunakan.
Contoh Sederhana Website PHP
Bayangkan sebuah file:
<?php
echo "Selamat datang di RAJASANEWS";
?>
Ketika file tersebut diminta oleh browser, pengguna tidak seharusnya menerima kode PHP mentahnya.
Yang diharapkan adalah hasil pemrosesannya.
Misalnya browser menerima:
Selamat datang di RAJASANEWS
Proses perubahan dari kode PHP menjadi output itulah yang melibatkan PHP.
Dalam kombinasi Nginx + PHP-FPM, Nginx menangani request web, sementara PHP-FPM menjalankan kode PHP tersebut.
Apa Hubungan PHP-FPM dengan FastCGI?
Murid yang mempelajari PHP-FPM akan menemukan istilah FastCGI.
Tidak perlu langsung menganggapnya sebagai sesuatu yang sangat rumit.
Secara sederhana, FastCGI merupakan mekanisme komunikasi yang memungkinkan web server berkomunikasi dengan aplikasi atau proses yang menangani request tertentu.
Dalam konfigurasi Nginx:
Nginx
→ FastCGI
→ PHP-FPM
Dengan mekanisme tersebut, Nginx dapat meneruskan request PHP kepada PHP-FPM.
Setelah PHP selesai diproses, hasilnya dikembalikan dan Nginx meneruskannya kepada client.
Nginx dan PHP-FPM Sebenarnya Bekerja sebagai Tim
Bayangkan sebuah restoran.
Nginx bisa kita ibaratkan sebagai petugas yang menerima pesanan.
PHP-FPM adalah bagian dapur yang mengolah pesanan tersebut.
Setelah selesai, hasilnya dikembalikan untuk disajikan kepada pelanggan.
Perumpamaan ini tentu hanya ilustrasi.
Tetapi cukup membantu memahami bahwa dua komponen tersebut mempunyai tugas berbeda.
Jika Nginx bermasalah, request bisa tidak sampai ke aplikasi.
Jika PHP-FPM bermasalah, request PHP juga tidak dapat diproses sebagaimana mestinya.
PHP-FPM dan Database
Website berbasis PHP sering kali tidak hanya menjalankan kode.
Aplikasi juga dapat membutuhkan database.
Contohnya aplikasi sekolah:
portal.tkj.local
Pengguna melakukan login.
Aplikasi PHP kemudian membutuhkan data dari database.
Alurnya secara sederhana dapat menjadi:
Browser
⬇️
Nginx
⬇️
PHP-FPM
⬇️
Aplikasi PHP
⬇️
Database
⬇️
Response
Dari sini murid dapat melihat bahwa sebuah aplikasi web modern sebenarnya merupakan gabungan beberapa komponen.
Mengapa Pembagian Tugas Ini Penting?
Pembagian fungsi membuat administrator dapat mengelola setiap komponen dengan lebih jelas.
Misalnya:
Nginx
→ menangani koneksi web.
PHP-FPM
→ menangani pemrosesan PHP.
Database
→ menyimpan data aplikasi.
Jika terjadi masalah, administrator dapat mempersempit pemeriksaan.
Misalnya website HTML dapat dibuka, tetapi halaman PHP mengalami error.
Maka pemeriksaan dapat diarahkan ke konfigurasi PHP-FPM dan komunikasi Nginx dengan PHP-FPM.
Pola troubleshooting seperti ini jauh lebih efektif daripada langsung mengubah semua konfigurasi.
Bagaimana Mengetahui PHP-FPM Bermasalah?
Misalnya Nginx berjalan normal.
Website HTML dapat dibuka.
Tetapi ketika membuka halaman PHP, muncul error.
Salah satu kemungkinan yang perlu diperiksa adalah PHP-FPM.
Administrator dapat memeriksa beberapa hal:
- Apakah service PHP-FPM berjalan?
- Apakah versi PHP sesuai?
- Apakah socket atau alamat FastCGI sesuai?
- Apakah konfigurasi Nginx benar?
- Apakah permission sudah sesuai?
- Apakah terdapat error pada log?
Dari sini murid belajar bahwa troubleshooting membutuhkan bukti, bukan tebakan.
Socket dan PHP-FPM
Ketika mulai melakukan konfigurasi Nginx + PHP-FPM, murid mungkin akan menemukan istilah socket.
PHP-FPM dapat berkomunikasi melalui Unix socket maupun mekanisme jaringan tertentu, tergantung konfigurasi.
Contoh yang sering ditemukan pada Linux adalah lokasi socket PHP-FPM seperti:
/run/php/php-fpm.sock
Nama dan lokasi sebenarnya dapat berbeda tergantung distribusi Linux dan versi PHP yang digunakan.
Hal yang penting bukan menghafal path tersebut.
Murid harus memahami:
Nginx harus mengetahui ke mana request PHP diteruskan.
Jika tujuan komunikasi tersebut salah, PHP tidak dapat diproses dengan benar.
Jangan Sembarangan Menyalin Konfigurasi
Ini menjadi salah satu kebiasaan yang perlu dihindari saat belajar server.
Di internet terdapat banyak contoh konfigurasi Nginx dan PHP-FPM.
Menggunakannya sebagai referensi tentu boleh.
Tetapi jangan hanya:
Copy → Paste → Restart.
Jika berhasil, mungkin terlihat menyenangkan.
Namun ketika muncul error, murid tidak tahu bagian mana yang sebenarnya bekerja.
Lebih baik setiap konfigurasi dipahami secara bertahap.
Misalnya:
Mengapa menggunakan FastCGI?
Mengapa request
.phpditeruskan ke PHP-FPM?
Mengapa socket tertentu digunakan?
Apa fungsi parameter tersebut?
Pertanyaan seperti inilah yang membangun kemampuan administrasi server.
PHP-FPM Bisa Berbeda Menurut Versi PHP
Ini juga penting.
Administrator server perlu mengetahui versi PHP yang digunakan oleh aplikasi.
Misalnya:
PHP 8.x
maka service PHP-FPM yang digunakan harus sesuai dengan lingkungan tersebut.
Jangan berasumsi bahwa semua server menggunakan nama service dan konfigurasi yang sama.
Perbedaan distribusi Linux, versi PHP, dan cara instalasi dapat memengaruhi lokasi file konfigurasi maupun nama service.
Karena itu, administrator harus terbiasa memeriksa sistem yang sedang digunakan, bukan sekadar mengandalkan tutorial lama.
Nginx + PHP-FPM dalam Praktikum ASJ
Topik ini sangat cocok dijadikan kelanjutan dari praktikum Web Server Nginx.
Misalnya sebelumnya murid sudah berhasil membuat:
portal.tkj.local
dengan halaman HTML.
Tahap berikutnya guru memberikan tantangan:
“Buat website PHP sederhana yang berjalan pada Nginx menggunakan PHP-FPM.”
Murid dapat melakukan:
- Menyiapkan Linux Server.
- Menginstal Nginx.
- Menginstal PHP.
- Mengaktifkan PHP-FPM.
- Membuat file PHP.
- Mengonfigurasi server block.
- Menghubungkan Nginx dengan PHP-FPM.
- Menguji website.
- Membaca log jika terjadi error.
- Membuat dokumentasi.
Dengan demikian, materi sebelumnya tidak terputus.
Dari Website Sederhana Menuju Aplikasi Web
Setelah murid memahami Nginx + PHP-FPM, mereka dapat melanjutkan ke aplikasi yang lebih kompleks.
Misalnya:
Website Profil
⬇️
PHP
⬇️
Database
⬇️
Login
⬇️
Dashboard
⬇️
CRUD Data
Pada tahap tersebut, murid mulai memahami bahwa web server hanyalah salah satu bagian dari keseluruhan sistem.
Ada server.
Ada web server.
Ada runtime.
Ada database.
Ada aplikasi.
Semua harus bekerja bersama.
PHP-FPM dan Keamanan Server
Ketika menjalankan aplikasi PHP, administrator juga perlu memperhatikan keamanan.
Beberapa hal yang perlu dipertimbangkan antara lain:
- Versi PHP yang masih didukung.
- Update keamanan.
- Permission file.
- Konfigurasi Nginx.
- Hak akses aplikasi.
- Database credential.
- HTTPS.
- Validasi aplikasi.
Menginstal PHP-FPM bukan berarti server otomatis aman.
Keamanan tetap membutuhkan pengelolaan secara keseluruhan.
Jangan Menampilkan File PHP sebagai Teks
Ada satu masalah yang cukup serius jika konfigurasi web server tidak benar.
File PHP seharusnya diproses oleh PHP runtime sesuai konfigurasi.
Jika konfigurasi salah dan file PHP justru diberikan sebagai file biasa kepada client, kode sumber PHP berpotensi terlihat.
Hal tersebut tentu tidak diinginkan.
Karena itu, konfigurasi Nginx dan PHP-FPM perlu diuji dengan benar sebelum layanan digunakan.
Ini merupakan salah satu contoh mengapa pengujian konfigurasi sangat penting.
Troubleshooting Nginx + PHP-FPM
Ketika aplikasi PHP tidak berjalan, jangan langsung menghapus semua konfigurasi.
Gunakan pendekatan bertahap.
Website HTML berhasil?
Jika ya, Nginx kemungkinan sudah dapat melayani konten statis.
PHP tidak berjalan?
Periksa PHP-FPM.
PHP-FPM aktif?
Periksa service.
Nginx dapat berkomunikasi dengan PHP-FPM?
Periksa konfigurasi FastCGI dan socket.
Masih error?
Periksa log Nginx dan PHP-FPM.
Dengan cara tersebut, masalah dapat dipersempit.
Inilah pola troubleshooting yang sebaiknya dibiasakan sejak sekolah.
Mengapa Materi Ini Penting untuk Murid TKJ?
Sekilas PHP-FPM mungkin terlihat hanya sebagai materi teknis.
Tetapi sebenarnya ada banyak kompetensi yang dipelajari.
Murid belajar:
- Linux Server.
- Web Server Nginx.
- PHP.
- Service management.
- Konfigurasi server.
- Komunikasi antarservice.
- Permission.
- Log.
- Troubleshooting.
- Dokumentasi.
Artinya, satu proyek kecil dapat mencakup banyak kemampuan.
PHP-FPM Bukan Pengganti Nginx
Ini juga perlu diluruskan.
Nginx dan PHP-FPM bukan dua software yang saling menggantikan.
Keduanya dapat bekerja bersama.
Sederhananya:
Nginx = menangani request web
PHP-FPM = menangani pemrosesan PHP
Sedangkan:
Database = menyimpan data aplikasi
Pembagian fungsi tersebut membantu kita memahami arsitektur sebuah aplikasi web.
Dari Nginx Menuju Dunia Server yang Lebih Kompleks
Jika murid sudah memahami:
Nginx
dan:
PHP-FPM
maka mereka memiliki dasar untuk mempelajari konsep yang lebih luas.
Misalnya:
- Database Server.
- Reverse Proxy.
- HTTPS.
- Caching.
- Load Balancing.
- Container.
- Deployment.
- Monitoring.
- Backup dan Recovery.
Jadi, satu materi sebenarnya dapat menjadi pintu menuju banyak kompetensi lain.
Kesimpulan
PHP-FPM merupakan komponen penting dalam banyak konfigurasi server yang menggunakan Nginx untuk menjalankan aplikasi berbasis PHP.
Nginx menerima request dari client, kemudian request PHP dapat diteruskan kepada PHP-FPM untuk diproses. Setelah selesai, hasilnya dikembalikan melalui Nginx kepada browser.
Memahami hubungan tersebut membantu murid TKJ melihat bahwa sebuah aplikasi web bukan hanya terdiri dari satu software.
Ada beberapa komponen yang harus bekerja bersama:
Nginx → PHP-FPM → Aplikasi → Database
Dan ketika salah satu bagian bermasalah, administrator harus mampu mencari penyebabnya secara sistematis.
Pada akhirnya, belajar PHP-FPM bukan sekadar belajar menjalankan PHP.
Murid sedang belajar bagaimana beberapa layanan server saling berkomunikasi untuk menghasilkan sebuah aplikasi web yang dapat digunakan.
Kemampuan seperti inilah yang akan semakin penting ketika mereka mulai mengembangkan aplikasi, melakukan deployment, menjalani PKL, maupun memasuki dunia kerja.
