GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak připojit NGINX k PHP-FPM pomocí UNIX nebo TCP/IP Socket

NGINX webový server (jako reverzní proxy) obsluhuje aplikace PHP prostřednictvím FastCGI protokol (jako backendový aplikační server). NGINX využívá PHP-FPM (FastCGI Process Manager), alternativní PHP FastCGI implementace, která běží na pozadí jako démon a naslouchá CGI žádosti. Dodává se s dalšími funkcemi navrženými pro napájení vysoce zatížených webů nebo webových aplikací, ale lze jej použít pro weby jakékoli velikosti.

Nejen, že PHP-FPM podporuje konfiguraci FastCGI zdrojů, ale také zlepšuje mnoho z FastCGI interní a zvyšuje hlášení chyb, ukončování skriptů a mnoho dalšího. Obsahuje PHP démonizaci, správu procesů, dynamický počet procesů, ze kterých mohou pocházet požadavky, chybovou hlavičku, podporu zrychleného nahrávání a další.

Chcete-li přijmout FastCGI požadavky od NGINX , PHP-FPM může buď poslouchat na TCP/IP soket nebo soket domény UNIX. Bez ohledu na to, kterou adresu zvolíte, je to, co NGINX používá k připojení (požadavky proxy) k PHP-FPM , pomocí fastcgi_pass směrnice.

Tato příručka vysvětluje, jak nakonfigurovat NGINX na server PHP aplikací pomocí PHP-FPM . Popisuje, kdy použít TCP/IP soket nebo soket domény UNIX pro připojení NGINX na PHP-FPM a proč.

Tato příručka předpokládá, že máte NGINX a PHP-FPM nainstalován na vašem systému Linux, jinak viz:

  • Jak nainstalovat LEMP Server na CentOS 8
  • Jak nainstalovat LEMP stack PhpMyAdmin na server Ubuntu 20.04
  • Jak nainstalovat NGINX, MySQL/MariaDB a PHP na RHEL 8
  • Jak nainstalovat LEMP na server Debian 10

Co bych měl použít:UNIX Domain Socket nebo TCP/IP Socket?

UNIX doména (nebo IPC ) sokety jsou prostředky meziprocesové komunikace (IPC), které umožňují efektivní výměnu dat mezi procesy běžícími na stejném operačním systému při TCP/IP (nebo internetová doména ) sokety umožňují procesům komunikovat po síti.

Na rozdíl od TCP/IP soket, který identifikuje server podle IP adresy a portu (např. 127.0.0.1:9000 ), můžete server svázat se soketem domény UNIX pomocí názvu cesty k souboru (např. /run/php-fpm/www.sock ), který je viditelný v souborovém systému.

Doménový soket UNIX je speciální typ souboru – vztahují se na něj oprávnění k souborům a adresářům (jako je tomu u jakéhokoli jiného typu souboru UNIX) a lze jej použít k omezení toho, které procesy na hostiteli mohou soubor číst a zapisovat do něj, (a tedy komunikovat s backend serverem).

Tímto způsobem je soket domény UNIX bezpečný, protože jej mohou používat pouze procesy na místním hostiteli. TCP/IP socket může být vystaven internetu, což představuje bezpečnostní riziko, pokud nebudou implementována zvláštní bezpečnostní opatření, jako je firewall.

Důležité je použití UNIXu doménový soket není stejný jako použití TCP/IP Pokud jde o výkon, několik testů a benchmarků prokázalo, že sokety domén UNIX jsou rychlejší. Hlavní nevýhodou doménových soketů UNIX je, že jsou méně škálovatelné, podporují pouze meziprocesovou komunikaci v rámci stejného operačního systému (OS).

Kde mohu nakonfigurovat adresu pro poslech PHP-FPM?

Můžete nakonfigurovat adresu PHP-FPM naslouchá v konfiguračním souboru fondu zdrojů. Všimněte si, že s PHP-FPM , můžete spustit několik skupin procesů s různými nastaveními. Výchozí fond se nazývá www .

Umístění konfiguračního souboru fondu zdrojů závisí na způsobu PHP a PHP-FPM jsou nainstalovány v systému Linux (ať už jde o výchozí/jedinou verzi nebo více verzí současně).

Například na CentOS 8 , s jedinou verzí jsou všechny konfigurační soubory PHP umístěny v /etc adresář a výchozí PHP-FPM pool (www) konfigurační soubor je /etc/php-fpm.d/www.conf :

Chcete-li zobrazit všechny konfigurační soubory PHP, použijte následující příkaz ls.

# ls /etc/php*

Seznam všech konfiguračních souborů PHP

Na Ubuntu 20.04 , konfigurační soubory PHP jsou umístěny v /etc/php/<php-version>/ adresář a výchozí PHP-FPM pool (www) konfigurační soubor je /etc/php/<php-version>/fpm/pool.d/www.conf :

$ ls /etc/php/7.4/

Seznam všech konfiguračních souborů PHP na Ubuntu

Konfigurace PHP-FPM pro poslech na UNIX doménovém soketu

Konfigurace PHP-FPM chcete-li naslouchat na soketu domény UNIX, otevřete výchozí PHP-FPM konfiguračního souboru fondu pomocí vašeho oblíbeného textového editoru.

# vim /etc/php-fpm.d/www.conf			#Ubuntu/Debian
OR
$ sudo vim /etc/php/7.4/fpm/pool.d/www.conf	#CentOS/RHEL/Fedora

Poté vyhledejte direktivu listen a nastavte ji na cestu k souboru soketu domény UNIX následovně. Pamatujte, že většina instalací standardně používá doménový soket UNIX.

listen = /run/php/php7.4-fpm.sock	#Ubuntu/Debian
OR
listen = /run/php-fpm/www.sock		#CentOS/RHEL/Fedora

Pokud používáte doménový soket UNIX, musíte také nastavit příslušná oprávnění pro čtení/zápis pro soubor, abyste umožnili připojení z webového serveru NGINX. Ve výchozím nastavení běží NGINX jako uživatel a skupina nginx na CentOS/RHEL/Fedora a www-data na Ubuntu a Debian .

Najděte tedy listen.owner a listen.group parametry a podle toho je nastavte. Nastavte také režim na 0660 pomocí listen.mode parametr.

------------- 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

Pamatujte, že pokud oprávnění pro soubor soketu domény UNIX nejsou správně nastavena, NGINX může vrátit chybu špatné brány.

Konfigurace PHP-FPM

Konfigurace PHP-FPM pro poslech na TCP/IP soketu

Ačkoli je soket domény UNIX rychlejší než soket TCP/IP, první je méně škálovatelný, protože může podporovat pouze meziprocesovou komunikaci na stejném operačním systému. Pokud NGINX a backendový aplikační server (PHP-FPM ) běží na různých systémech, budete muset nakonfigurovat PHP-FPM k naslouchání připojení na soketu TCP/IP.

V PHP-FPM konfiguračního souboru fondu, nastavte listen adresu následovně. Ujistěte se, že port, který jste vybrali, není používán jiným procesem nebo službou ve stejném systému.

listen = 127.0.0.1:3000

Konfigurace PHP-FPM pro TCP Socket

Konfigurace NGINX pro práci s aplikačním serverem PHP-FPM

Jakmile nakonfigurujete adresu PHP-FPM naslouchá, musíte nakonfigurovat NGINX k proxy serveru přes tuto adresu pomocí fastcgi_pass konfigurační parametr v konfiguračním souboru bloku virtuálního serveru.

Pokud je například konfigurační soubor pro váš web /etc/nginx/conf.d/example.com.conf , otevřete jej pro úpravy.

# vim /etc/nginx/conf.d/example.com.conf 

Hledejte location blok pro zpracování .php soubory a nastavte fastcgi_pass Pokud jste nakonfigurovali PHP-FPM pro naslouchání na soketu domény UNIX, postupujte takto.

fastcgi_pass unix:/run/php/php7.4-fpm.sock	#Ubuntu/Debian
OR
fastcgi_pass unix:/run/php-fpm/www.sock		#CentOS/RHEL/Fedora

Připojte Nginx k PHP-FPM pomocí Unix Socket

Nebo použijte TCP/IP adresu, pokud jste nakonfigurovali PHP-FPM k poslechu na TCP/IP zásuvka. Pokud backendový aplikační server (PHP-FPM ) běží na samostatném serveru (nahraďte 10.42.0.10 s IP adresou počítače, na kterém běží server PHP-FPM FastCGI).

fastcgi_pass  10.42.0.10:3000;

Připojte Nginx k PHP-FPM pomocí TCP Socket

Důležité :V systému CentOS 8 , PHP-FPM je definován jako upstream server v /etc/nginx/conf.d/php-fpm.conf soubor v rámci upstream bloku s názvem php-fpm .

Zde můžete provést příslušné změny v závislosti na adrese PHP-FPM je nakonfigurován pro naslouchání v konfiguračním souboru fondu. Výchozí konfigurace ukazuje na soket domény UNIX.

upstream php-fpm {
        server unix:/run/php-fpm/www.sock;
}

Nakonfigurujte PHP Upstream Server v Nginx

a v souboru bloku serveru vašeho webu jednoduše nastavte fastcgi_pass parametr, jak je znázorněno.

fastcgi_pass php-fpm;

Nakonfigurujte Nginx na PHP-FPM Upstream Server

Po provedení změn v PHP-FPM a NGINX konfigurace, zkontrolujte správnost jejich konfigurační syntaxe následovně.

------------- On Debian and Ubuntu -------------
$ sudo php-fpm -t
$ sudo nginx -t

------------- On CentOS/RHEL and Fedora  -------------
# php-fpm -t
# nginx -t

Zatímco výstup příkazu zobrazuje pouze hlavní konfigurační soubor, všechny ostatní konfigurační soubory jsou zahrnuty a zkontrolovány také.

Zkontrolujte konfiguraci Nginx a PHP-FPM

Dále musíte restartovat obě služby, aby se změny projevily, pomocí příkazu 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

Pokud se objeví nějaké chyby, můžete zkontrolovat NGINX a PHP-FPM log soubory pomocí příkazu 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

To je vše, co jsme pro vás měli. Sekci komentářů níže lze použít k pokládání otázek. Další informace najdete v dokumentaci NGINX a dokumentaci PHP-FPM.

Sharing is Caring…
Sdílet na FacebookuSdílet na TwitteruSdílet na LinkedinSdílet na Redditu
Ubuntu
  1. Jak nainstalovat WordPress pomocí Nginx na Ubuntu 18.04

  2. Jak přesměrovat adresy URL pomocí Nginx

  3. Unixový soket vs TCP/IP host:port

  1. Ssh – Jak se připojit k počítači přes jiný počítač pomocí Ssh?

  2. Jak povolit Nginx s PHP-FPM na Plesk

  3. Jak nakonfigurovat Nginx pro spouštění PHP pomocí PHP-FPM

  1. Jak se připojit k MySQL pomocí PHP

  2. Jak monitorovat Nginx pomocí Netdata na Ubuntu 16.04

  3. Jak nainstalovat Drupal 8 s Nginx, PHP-FPM a SSL na Ubuntu 15.10