Cara Menghubungkan Nginx ke PHP-FPM Menggunakan Soket UNIX atau TCP/IP
- 1482
- 47
- Miss Angelo Toy
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-FPMMengkonfigurasi 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: 3000Konfigurasi 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/fedoraHubungkan 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-FPMSelanjutnya, 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.