Cara Menghubungkan Nginx ke PHP-FPM Menggunakan Soket UNIX atau TCP/IP

Cara Menghubungkan Nginx ke PHP-FPM Menggunakan Soket UNIX atau TCP/IP

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 yang berat atau aplikasi web, tetapi dapat digunakan untuk situs dengan ukuran berapa 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 fitur demonisasi PHP, manajemen proses, sejumlah proses yang dinamis dari mana permintaan dapat datang, header kesalahan, dukungan unggahan yang dipercepat, dan banyak lagi.

Menerima Fastcgi permintaan dari Nginx, Php-fpm bisa mendengarkan di a TCP/IP soket soket atau unix. Alamat mana pun yang Anda pilih untuk digunakan adalah apa Nginx menggunakan untuk menghubungkan (permintaan proxy) ke Php-fpm, menggunakan fastcgi_pass pengarahan.

Panduan ini menjelaskan cara mengkonfigurasi Nginx ke server aplikasi PHP menggunakan Php-fpm. Itu menggambarkan kapan menggunakan a TCP/IP soket soket atau unix domain untuk terhubung 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 Server Lemp di Centos 8
  • Cara menginstal stack phpMyadmin di ubuntu 20.04 Server
  • Cara menginstal nginx, mysql/mariadb, dan php di rhel 8
  • Cara Menginstal Lemp di Debian 10 Server

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 sementara TCP/IP (atau Domain internet) Soket memungkinkan proses untuk berkomunikasi melalui jaringan.

Tidak seperti TCP/IP soket yang mengidentifikasi server dengan alamat IP dan port (e.G 127.0.0.1: 9000), Anda dapat mengikat server ke soket domain unix menggunakan file pathname (e.G /run/php-fpm/www.kaus kaki), yang terlihat dalam sistem file.

Soket domain UNIX adalah jenis file khusus - izin file dan direktori yang berlaku untuk itu (seperti halnya dengan jenis file unix lainnya) dan dapat digunakan untuk membatasi proses mana pada host dapat membaca dan menulis ke file, (dan dengan demikian berkomunikasi dengan server backend).

Dengan cara ini, soket domain unix aman karena hanya proses pada host lokal yang dapat menggunakannya. A TCP/IP Soket dapat terpapar ke internet yang menimbulkan risiko keamanan kecuali jika langkah -langkah keamanan ekstra seperti firewall diterapkan.

Yang penting, menggunakan a UNIX soket domain tidak sama dengan menggunakan a TCP/IP Soket mengenai kinerja, beberapa tes dan tolok ukur telah membuktikan soket domain Unix lebih cepat. Kelemahan utama soket domain UNIX adalah bahwa mereka kurang dapat diukur, mereka hanya mendukung komunikasi antar proses dalam sistem operasi yang sama (OS).

Di mana saya dapat mengkonfigurasi alamat mendengarkan php-fpm?

Anda dapat mengonfigurasi alamatnya Php-fpm Mendengarkan dalam file konfigurasi kumpulan sumber daya. Perhatikan itu dengan Php-fpm, Anda dapat menjalankan beberapa kumpulan proses dengan pengaturan yang berbeda. Kolam default dipanggil www.

Lokasi file konfigurasi kumpulan sumber daya tergantung pada jalan Php Dan Php-fpm diinstal pada sistem Linux (apakah itu versi default/tunggal atau beberapa versi secara bersamaan).

Misalnya, di Centos 8, Dengan satu versi, semua file konfigurasi PHP berada di /dll direktori dan default Php-fpm kolam (www) file konfigurasi adalah /etc/php-fpm.d/www.conf:

Untuk mencantumkan semua file konfigurasi PHP, gunakan perintah LS berikut.

# ls /etc /php* 
Sebutkan semua file konfigurasi PHP

Pada Ubuntu 20.04, File konfigurasi PHP terletak di /etc/php // direktori dan default Php-fpm kolam (www) file konfigurasi adalah /etc/php // fpm/pool.d/www.conf:

$ ls/etc/php/7.4/ 
Daftar semua file konfigurasi PHP di Ubuntu

Mengkonfigurasi PHP-FPM untuk mendengarkan di soket domain UNIX

Untuk mengonfigurasi Php-fpm Untuk mendengarkan di soket domain UNIX, buka default Anda Php-fpm File Konfigurasi Pool, Menggunakan Editor Teks Favorit Anda.

$ sudo vim/etc/php/7.4/fpm/pool.d/www.conf # ubuntu/debian atau # vim/etc/php-fpm.d/www.conf #centos/rhel/fedora 

Kemudian cari arahan mendengarkan dan mengaturnya ke nama pathname dari soket domain unix sebagai berikut. Perhatikan bahwa sebagian besar instalasi menggunakan soket domain unix secara default.

Listen =/run/php/php7.4-fpm.kaus kaki #ubuntu/debian atau dengar =/run/php-fpm/www.kaus kaki #centos/rhel/fedora 

Jika Anda menggunakan soket domain UNIX, Anda juga perlu mengatur izin baca/tulis yang sesuai untuk file, untuk mengizinkan koneksi dari server web nginx. Secara default, Nginx berjalan sebagai pengguna dan grup Nginx pada Centos/rhel/fedora Dan www-data pada Ubuntu Dan Debian.

Jadi, temukan mendengarkan.pemilik Dan mendengarkan.kelompok parameter dan mengaturnya sesuai. Juga, atur mode ke 0660 menggunakan mendengarkan.mode parameter.

------------- Di Debian dan Ubuntu ------------- mendengarkan.pemilik = www-data dengarkan.grup = www-data dengarkan.Mode = 0660 ------------- Di Centos/Rhel dan Fedora ------------- mendengarkan.pemilik = nginx dengarkan.grup = nginx dengarkan.Mode = 0660 

Perhatikan bahwa jika izin pada file soket domain UNIX tidak diatur dengan benar, nginx dapat mengembalikan kesalahan gateway yang buruk.

Konfigurasi PHP-FPM

Mengkonfigurasi PHP-FPM untuk mendengarkan di soket TCP/IP

Meskipun soket domain UNIX lebih cepat dari soket TCP/IP, 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 mengkonfigurasi Php-fpm untuk mendengarkan soket TCP/IP untuk koneksi.

Dalam Php-fpm file konfigurasi kumpulan, atur mendengarkan alamat sebagai berikut. Pastikan bahwa port yang Anda pilih tidak digunakan oleh proses atau layanan lain pada sistem yang sama.

Dengarkan = 127.0.0.1: 3000 
Konfigurasi php-fpm untuk soket tcp

Mengkonfigurasi Nginx agar bekerja dengan server aplikasi PHP-FPM

Setelah Anda mengkonfigurasi alamat Php-fpm Mendengarkan, Anda perlu mengkonfigurasi Nginx untuk permintaan proxy melalui alamat itu, menggunakan fastcgi_pass parameter konfigurasi, dalam file konfigurasi blok server virtual.

Misalnya, jika file konfigurasi untuk situs web Anda /etc/nginx/conf.D/Contoh.com.conf, Buka untuk mengedit.

# vim/etc/nginx/conf.D/Contoh.com.conf 

Cari Lokasi blok untuk diproses .php file dan atur fastcgi_pass Parameter sebagai berikut, jika Anda mengonfigurasi php-fpm untuk mendengarkan di soket domain unix.

fastcgi_pass unix:/run/php/php7.4-fpm.kaus kaki #ubuntu/debian atau fastcgi_pass unix:/run/php-fpm/www.kaus kaki #centos/rhel/fedora 
Hubungkan Nginx ke PHP-FPM Menggunakan Soket UNIX

Atau gunakan a TCP/IP alamat jika Anda mengonfigurasi Php-fpm untuk mendengarkan di a TCP/IP stopkontak. Jika server aplikasi backend (Php-fpm) berjalan di server terpisah (ganti 10.42.0.10 dengan alamat IP mesin di mana server php-fpm fastcgi berjalan).

fastcgi_pass 10.42.0.10: 3000; 
Hubungkan Nginx ke PHP-FPM menggunakan soket TCP

Penting: Pada Centos 8, Php-fpm didefinisikan sebagai server hulu di /etc/nginx/conf.D/PHP-FPM.conf file, di dalam blok hulu, dengan namanya php-fpm.

Anda dapat membuat perubahan di sini sesuai dengan alamatnya Php-fpm dikonfigurasi untuk mendengarkan, di file konfigurasi pool. Konfigurasi default menunjuk ke soket domain unix.

hulu php-fpm server unix:/run/php-fpm/www.kaus kaki;  
Konfigurasikan server hulu php di nginx

Dan di file blok server situs Anda, cukup atur fastcgi_pass parameter seperti yang ditunjukkan.

fastcgi_pass php-fpm; 
Konfigurasikan Nginx ke server hulu PHP-FPM

Setelah membuat perubahan pada Php-fpm Dan Nginx Konfigurasi, periksa sintaks konfigurasinya untuk kebenaran sebagai berikut.

------------- Di Debian dan Ubuntu ------------- $ sudo php -fpm -t $ sudo nginx -t ------------- Di Centos/Rhel dan Fedora ------------- # php -fpm -t # nginx -t 

Sementara output perintah hanya menunjukkan file konfigurasi utama, semua file konfigurasi lainnya disertakan dan diperiksa juga.

Periksa konfigurasi NGINX dan PHP-FPM

Selanjutnya, Anda perlu memulai ulang dua layanan untuk menerapkan perubahan, menggunakan perintah SystemCTL.

------------- Di Debian dan Ubuntu ------------- $ sudo systemctl restart nginx $ sudo systemctl restart php7.4-fpm ------------- Di Centos/Rhel dan Fedora ------------- # Systemctl restart nginx # systemctl restart php-fpm 

Jika Anda mendapatkan kesalahan, Anda dapat memeriksa Nginx Dan Php-fpm file log menggunakan perintah CAT.

------------- Di Debian dan Ubuntu ------------- $ cat/var/log/nginx/error.log $ cat/var/log/php7.4-fpm.catatan ------------- Di Centos/Rhel dan Fedora ------------- $ cat/var/log/nginx/error.log $ cat/var/log/php-fpm/www-error.catatan 

Hanya itu yang kami miliki untuk Anda. Bagian komentar di bawah ini dapat digunakan untuk mengajukan pertanyaan. Untuk informasi lebih lanjut, lihat dokumentasi NGINX dan dokumentasi PHP-FPM.