NGINX server web (sebagai proxy terbalik) melayani aplikasi PHP melalui FastCGI protokol (sebagai server aplikasi backend). NGINX mempekerjakan PHP-FPM (FastCGI Process Manager), sebuah alternatif PHP FastCGI implementasi yang berjalan di latar belakang sebagai daemon, mendengarkan CGI permintaan. Muncul dengan fitur tambahan yang dirancang untuk memberi daya pada situs web atau aplikasi web yang sarat muatan, tetapi dapat digunakan untuk situs dengan ukuran apa pun.
Tidak hanya PHP-FPM mendukung konfigurasi FastCGI kumpulan sumber daya, tetapi juga meningkatkan banyak FastCGI internal dan meningkatkan pelaporan kesalahan, penghentian skrip, dan banyak lagi. Ini menampilkan daemonisasi PHP, manajemen proses, jumlah dinamis proses dari mana permintaan dapat berasal, header kesalahan, dukungan unggahan yang dipercepat, dan banyak lagi.
Untuk menerima FastCGI permintaan dari NGINX , PHP-FPM dapat mendengarkan di TCP/IP socket atau soket domain UNIX. Alamat mana pun yang Anda pilih untuk digunakan adalah NGINX gunakan untuk menghubungkan (permintaan proxy) ke PHP-FPM , menggunakan fastcgi_pass
arahan.
Panduan ini menjelaskan cara mengonfigurasi NGINX ke server aplikasi PHP menggunakan PHP-FPM . Ini menjelaskan kapan harus menggunakan TCP/IP socket atau soket domain UNIX untuk menghubungkan NGINX ke PHP-FPM dan mengapa.
Panduan ini mengasumsikan bahwa Anda memiliki NGINX dan PHP-FPM diinstal pada sistem Linux Anda, jika tidak, lihat:
- Cara Menginstal LEMP Server di CentOS 8
- Cara Memasang LEMP stack PhpMyAdmin di Server Ubuntu 20.04
- Cara Menginstal NGINX, MySQL/MariaDB, dan PHP di RHEL 8
- Cara Menginstal LEMP di Server Debian 10
Apa yang Harus Saya Gunakan:Soket Domain UNIX atau Soket TCP/IP?
UNIX domain (atau IPC ) soket adalah sarana komunikasi antar-proses (IPC) yang memungkinkan pertukaran data yang efisien antara proses yang berjalan pada sistem operasi yang sama saat TCP/IP (atau Domain Internet ) socket memungkinkan proses untuk berkomunikasi melalui jaringan.
Tidak seperti TCP/IP socket yang mengidentifikasi server dengan alamat IP dan port (mis. 127.0.0.1:9000 ), Anda dapat mengikat server ke soket domain UNIX menggunakan nama path file (mis. /run/php-fpm/www.sock ), yang terlihat di sistem file.
Soket domain UNIX adalah jenis file khusus – izin file dan direktori berlaku untuknya (seperti halnya dengan jenis file UNIX lainnya) dan dapat digunakan untuk membatasi proses mana pada host yang dapat membaca dan menulis ke file, (dan dengan demikian berkomunikasi dengan server backend).
Dengan cara ini, soket domain UNIX aman karena hanya proses di host lokal yang dapat menggunakannya. TCP/IP socket dapat terpapar ke internet yang menimbulkan risiko keamanan kecuali tindakan keamanan ekstra seperti firewall diterapkan.
Yang penting, menggunakan UNIX soket domain tidak sama dengan menggunakan TCP/IP socket tentang kinerja, beberapa tes dan benchmark telah membuktikan soket domain UNIX lebih cepat. Kelemahan utama soket domain UNIX adalah kurang terukur, hanya mendukung komunikasi antar-proses dalam sistem operasi (OS) yang sama.
Di Mana Saya Dapat Mengonfigurasi Alamat Listen PHP-FPM?
Anda dapat mengonfigurasi alamat PHP-FPM mendengarkan dalam file konfigurasi kumpulan sumber daya. Perhatikan bahwa dengan PHP-FPM , Anda dapat menjalankan beberapa kumpulan proses dengan pengaturan yang berbeda. Kumpulan default disebut www
.
Lokasi file konfigurasi kumpulan sumber daya bergantung pada cara PHP dan PHP-FPM diinstal pada sistem Linux (baik versi default/tunggal atau beberapa versi secara bersamaan).
Misalnya, pada CentOS 8 , dengan satu versi, semua file konfigurasi PHP berada di /etc
direktori dan default PHP-FPM kumpulan (www)
file konfigurasi adalah /etc/php-fpm.d/www.conf :
Untuk membuat daftar semua file konfigurasi PHP, gunakan perintah ls berikut.
# ls /etc/php*
Daftar Semua File Konfigurasi PHP
Di Ubuntu 20.04 , file konfigurasi PHP terletak di /etc/php/<php-version>/
direktori dan default PHP-FPM kumpulan (www)
file konfigurasi adalah /etc/php/<php-version>/fpm/pool.d/www.conf
:
$ ls /etc/php/7.4/
Daftar Semua File Konfigurasi PHP di Ubuntu
Mengonfigurasi PHP-FPM untuk Mendengarkan di Soket Domain UNIX
Untuk mengonfigurasi PHP-FPM untuk mendengarkan pada soket domain UNIX, buka PHP-FPM default Anda file konfigurasi pool, menggunakan editor teks favorit Anda.
# vim /etc/php-fpm.d/www.conf #Ubuntu/Debian OR $ sudo vim /etc/php/7.4/fpm/pool.d/www.conf #CentOS/RHEL/Fedora
Kemudian cari direktif listen dan atur ke nama path file dari soket domain UNIX sebagai berikut. Perhatikan bahwa sebagian besar penginstalan menggunakan soket domain UNIX secara default.
listen = /run/php/php7.4-fpm.sock #Ubuntu/Debian OR listen = /run/php-fpm/www.sock #CentOS/RHEL/Fedora
Jika Anda menggunakan soket domain UNIX, Anda juga perlu mengatur izin baca/tulis yang sesuai untuk file tersebut, untuk mengizinkan koneksi dari server web NGINX. Secara default, NGINX berjalan sebagai pengguna dan grup nginx di CentOS/RHEL/Fedora dan www-data di Ubuntu dan Debian .
Jadi, temukan listen.owner
dan listen.group
parameter dan mengaturnya sesuai. Juga, setel mode ke 0660 menggunakan listen.mode
parameter.
------------- On Debian and Ubuntu ------------- listen.owner = www-data listen.group = www-data listen.mode = 0660 ------------- On CentOS/RHEL and Fedora ------------- listen.owner = nginx listen.group = nginx listen.mode = 0660
Perhatikan bahwa jika izin pada file soket domain UNIX tidak disetel dengan benar, NGINX dapat mengembalikan kesalahan gateway yang buruk.
Konfigurasi PHP-FPM
Mengonfigurasi PHP-FPM untuk Mendengarkan pada Soket TCP/IP
Meskipun soket domain UNIX lebih cepat daripada soket TCP/IP, soket yang pertama kurang terukur, karena hanya dapat mendukung komunikasi antar-proses pada OS yang sama. Jika NGINX dan server aplikasi backend (PHP-FPM ) berjalan pada sistem yang berbeda, Anda harus mengonfigurasi PHP-FPM untuk mendengarkan pada soket TCP/IP untuk koneksi.
Di PHP-FPM file konfigurasi pool, atur listen
alamat sebagai berikut. Pastikan port yang Anda pilih tidak digunakan oleh proses atau layanan lain di sistem yang sama.
listen = 127.0.0.1:3000
Konfigurasi PHP-FPM untuk TCP Socket
Mengonfigurasi NGINX untuk Bekerja dengan Server Aplikasi PHP-FPM
Setelah Anda mengonfigurasi alamat PHP-FPM mendengarkan, Anda perlu mengonfigurasi NGINX untuk meminta proxy melalui alamat itu, menggunakan fastcgi_pass
parameter konfigurasi, dalam file konfigurasi blok server virtual.
Misalnya, jika file konfigurasi untuk situs web Anda adalah /etc/nginx/conf.d/example.com.conf , buka untuk mengedit.
# vim /etc/nginx/conf.d/example.com.conf
Cari location
blok untuk memproses .php
file dan atur fastcgi_pass
parameter sebagai berikut, jika Anda mengonfigurasi PHP-FPM untuk mendengarkan pada soket domain UNIX.
fastcgi_pass unix:/run/php/php7.4-fpm.sock #Ubuntu/Debian OR fastcgi_pass unix:/run/php-fpm/www.sock #CentOS/RHEL/Fedora
Hubungkan Nginx ke PHP-FPM Menggunakan Unix Socket
Atau gunakan TCP/IP alamat jika Anda mengonfigurasi PHP-FPM untuk mendengarkan di TCP/IP stopkontak. Jika server aplikasi backend (PHP-FPM ) berjalan di server terpisah (ganti 10.42.0.10 dengan alamat IP mesin yang menjalankan server FastCGI PHP-FPM).
fastcgi_pass 10.42.0.10:3000;
Hubungkan Nginx ke PHP-FPM Menggunakan TCP Socket
Penting :Di CentOS 8 , PHP-FPM didefinisikan sebagai server upstream di /etc/nginx/conf.d/php-fpm.conf file, dalam blok upstream, dengan nama php-fpm .
Anda dapat membuat perubahan di sini tergantung pada alamat PHP-FPM dikonfigurasi untuk mendengarkan, dalam file konfigurasi kumpulan. Konfigurasi default menunjuk ke soket domain UNIX.
upstream php-fpm { server unix:/run/php-fpm/www.sock; }
Konfigurasi Server Upstream PHP di Nginx
dan di file blok server situs Anda, cukup atur fastcgi_pass
parameter seperti yang ditunjukkan.
fastcgi_pass php-fpm;
Konfigurasi Nginx ke Server Upstream PHP-FPM
Setelah melakukan perubahan pada PHP-FPM dan NGINX konfigurasi, periksa sintaks konfigurasinya untuk kebenaran sebagai berikut.
------------- On Debian and Ubuntu ------------- $ sudo php-fpm -t $ sudo nginx -t ------------- On CentOS/RHEL and Fedora ------------- # php-fpm -t # nginx -t
Sementara output perintah hanya menampilkan file konfigurasi utama, semua file konfigurasi lainnya disertakan dan diperiksa juga.
Periksa Konfigurasi Nginx dan PHP-FPM
Selanjutnya, Anda perlu memulai ulang kedua layanan untuk menerapkan perubahan, menggunakan perintah systemctl.
------------- On Debian and Ubuntu ------------- $ sudo systemctl restart nginx $ sudo systemctl restart php7.4-fpm ------------- On CentOS/RHEL and Fedora ------------- # systemctl restart nginx # systemctl restart php-fpm
Jika Anda mendapatkan kesalahan, Anda dapat memeriksa NGINX dan PHP-FPM log file menggunakan perintah cat.
------------- On Debian and Ubuntu ------------- $ cat /var/log/nginx/error.log $ cat /var/log/php7.4-fpm.log ------------- On CentOS/RHEL and Fedora ------------- $ cat /var/log/nginx/error.log $ cat /var/log/php-fpm/www-error.log
Itu saja yang kami punya untuk Anda. Kolom komentar di bawah dapat digunakan untuk mengajukan pertanyaan. Untuk informasi lebih lanjut, lihat dokumentasi NGINX dan dokumentasi PHP-FPM.
Berbagi itu Peduli…Berbagi di FacebookBerbagi di TwitterBerbagi di LinkedinBerbagi di Reddit