GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Menghubungkan NGINX ke PHP-FPM Menggunakan UNIX atau TCP/IP Socket

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
Ubuntu
  1. Cara Menginstal WordPress Menggunakan Nginx di Ubuntu 18.04

  2. Cara Mengarahkan Ulang URL Menggunakan Nginx

  3. Ssh – Bagaimana Menghubungkan Ke Pc Melalui Pc Lain Menggunakan Ssh?

  1. Cara Mengaktifkan Nginx Dengan PHP-FPM Di Plesk

  2. Cara Mengkonfigurasi Nginx untuk Mengeksekusi PHP Menggunakan PHP-FPM

  3. Soket Unix vs host TCP/IP:port

  1. Cara Menghubungkan ke MySQL Menggunakan PHP

  2. Cara Memantau Nginx menggunakan Netdata di Ubuntu 16.04

  3. Cara Menginstal Drupal 8 dengan Nginx, PHP-FPM dan SSL di Ubuntu 15.10