Jak podłączyć Nginx z PHP-FPM za pomocą gniazda UNIX lub TCP/IP
- 3254
- 730
- Tacjana Karpiński
Nginx Serwer WWW (jako odwrotny proxy) obsługuje aplikacje PHP za pośrednictwem Fastcgi protokół (jako serwer aplikacji backend). Nginx zatrudnia PHP-FPM (FastCGI Process Manager), alternatywa PHP Fastcgi implementacja, która działa w tle jako demon, słuchanie CGI upraszanie. Jest wyposażony w dodatkowe funkcje zaprojektowane do zasilania ciężkich stron internetowych lub aplikacji internetowych, ale może być używany do witryn dowolnej wielkości.
Nie tylko robi PHP-FPM Obsługuj konfigurację Fastcgi pule zasobów, ale poprawia także wiele Fastcgi wewnętrzne i zwiększa raportowanie błędów, zakończenie skryptu i wiele więcej. Posiada demonizację PHP, zarządzanie procesami, dynamiczną liczbę procesów, z których żądania mogą pojawić się, nagłówek błędów, przyspieszone wsparcie przesyłania i wiele innych.
Akceptować Fastcgi prośby z Nginx, PHP-FPM może albo słuchać na TCP/IP gniazdo lub gniazdo domeny unix. Niezależnie od tego, który adres, którego zdecydujesz się użyć, jest tym, co Nginx używa do połączenia (żądania proxy) do PHP-FPM, używając fastcgi_pass
dyrektywa.
Ten przewodnik wyjaśnia, jak skonfigurować Nginx do serwera aplikacji PHP za pomocą PHP-FPM. Opisuje, kiedy użyć TCP/IP gniazdo lub gniazdo domeny unix do łączenia Nginx Do PHP-FPM i dlaczego.
Ten przewodnik zakłada, że masz Nginx I PHP-FPM Zainstalowane w systemie Linux, w przeciwnym razie patrz:
- Jak zainstalować serwer LEMP na CentOS 8
- Jak zainstalować stos Lemp PhpMyAdmin w Ubuntu 20.04 Serwer
- Jak zainstalować Nginx, MySQL/Mariadb i PHP na RHEL 8
- Jak zainstalować LEMP na serwerze Debian 10
Czego powinienem użyć: gniazdo domeny Unix lub gniazdo TCP/IP?
UNIX domena (lub IPC) Gniazda są środkiem komunikacji między procesami (IPC), które umożliwiają wydajną wymianę danych między procesami działającymi w tym samym systemie operacyjnym, a TCP/IP (Lub Domena internetowa) Gniazda pozwalają procesom komunikować się przez sieć.
W przeciwieństwie do TCP/IP gniazdo, które identyfikuje serwer według adresu IP i portu (e.G 127.0.0.1: 9000), możesz powiązać serwer do gniazda domeny unix za pomocą nazwy pliku (e.G /run/php-fpm/www.skarpetka), który jest widoczny w systemie plików.
Gniazdo domeny UNIX jest specjalnym typem pliku - plik i katalogu mają zastosowanie do niego (podobnie jak w przypadku dowolnego innego typu pliku UNIX) i może być używany do ograniczenia, które procesy na hosta mogą odczytać i zapisać do pliku, (i w ten sposób komunikować się z serwerem zaplecza).
W ten sposób gniazdo domeny Unix jest bezpieczne, ponieważ tylko procesy na lokalnym hoście mogą z niego korzystać. A TCP/IP Gniazdo może być narażone na Internet stanowiące ryzyko bezpieczeństwa, chyba że wdrożone zostaną dodatkowe środki bezpieczeństwa, takie jak zapora ogniowa.
Co ważne, za pomocą UNIX Gniazdo domeny nie jest takie samo, jak przy użyciu TCP/IP Gniazdo dotyczące wydajności kilka testów i punktów porównawczych udowodniło, że gniazda domeny Unix są szybsze. Główną wadą gniazd domen UNIX jest to, że są one mniej skalowalne, obsługują one tylko komunikację międzyprocesową w tym samym systemie operacyjnym (OS).
Gdzie mogę skonfigurować adres słuchania PHP-FPM?
Możesz skonfigurować adres PHP-FPM Słucha w pliku konfiguracyjnym puli zasobów. Zwróć to do zauważenia PHP-FPM, Możesz uruchomić kilka pul procesów o różnych ustawieniach. Nazywana jest domyślna pula www
.
Lokalizacja pliku konfiguracji puli zasobów zależy od drogi Php I PHP-FPM są instalowane w systemie Linux (niezależnie od tego, czy jest to jednocześnie domyślna/pojedyncza wersja, czy wiele wersji).
Na przykład, na Centos 8, Z jedną wersją wszystkie pliki konfiguracyjne PHP znajdują się w /itp
katalog i domyślnie PHP-FPM basen (www)
Plik konfiguracyjny jest /etc/php-fpm.D/www.conf:
Aby wymienić wszystkie pliki konfiguracyjne PHP, użyj następującego polecenia LS.
# ls /etc /php*Wymień wszystkie pliki konfiguracyjne PHP
NA Ubuntu 20.04, Pliki konfiguracyjne PHP znajdują się w /etc/php //
katalog i domyślnie PHP-FPM basen (www)
Plik konfiguracyjny jest /etc/php // fpm/basen.D/www.conf
:
$ ls/etc/php/7.4/Wymień wszystkie pliki konfiguracyjne PHP na Ubuntu
Konfigurowanie PHP-FPM do słuchania w gnieździe domeny Unix
Konfigurować PHP-FPM Aby słuchać gniazda domeny unix, otwórz domyślną PHP-FPM Plik konfiguracyjny puli, za pomocą ulubionego edytora tekstu.
$ sudo vim/etc/php/7.4/fpm/basen.D/www.conf # ubuntu/debian lub # vim/etc/php-fpm.D/www.Conf #Centos/Rhel/Fedora
Następnie poszukaj dyrektywy słuchania i ustaw ją na nazwa ścieżki pliku gniazda domeny unix. Zauważ, że większość instalacji domyślnie używa gniazda domeny unix.
Słuchaj =/run/php/php7.4-fpm.Sock #ubuntu/debian lub słuchaj =/run/php-fpm/www.Sock #Centos/Rhel/Fedora
Jeśli używasz gniazda domeny Unix, musisz również ustawić odpowiednie uprawnienia odczytu/zapisu dla pliku, aby umożliwić połączenia z serwera WWW Nginx. Domyślnie Nginx działa jako użytkownik i grupa nginx NA Centos/Rhel/Fedora I www-data NA Ubuntu I Debian.
Więc znajdź Słuchać.właściciel
I Słuchać.Grupa
parametry i odpowiednio je ustawić. Ustaw także tryb na 0660 używając Słuchać.tryb
parametr.
------------- Na Debian i Ubuntu ------------- Słuchać.właściciel = www-data słuchaj.grupa = www-data słuchaj.Tryb = 0660 ------------- Na Centos/Rhel i Fedora ------------- Słuchać.właściciel = nginx słuchaj.grupa = nginx słuchaj.Tryb = 0660
Zauważ, że jeśli uprawnienia w pliku gniazda domeny unix nie są ustawione poprawnie, Nginx może zwrócić błąd złej bramy.
Konfiguracja PHP-FPMKonfigurowanie PHP-FPM do słuchania w gnieździe TCP/IP
Chociaż gniazdo domeny Unix jest szybsze niż gniazdo TCP/IP, pierwsza jest mniej skalowalna, ponieważ może obsługiwać komunikację międzyprocesową na tym samym systemie operacyjnym. Jeśli Nginx oraz serwer aplikacji backend (PHP-FPM) działają w różnych systemach, będziesz musiał skonfigurować PHP-FPM Aby słuchać gniazda TCP/IP dla połączeń.
w PHP-FPM Plik konfiguracyjny puli, ustaw Słuchać
adres w następujący sposób. Upewnij się, że wybrany port nie jest używany przez inny proces lub usługa w tym samym systemie.
Słuchaj = 127.0.0.1: 3000Konfiguracja PHP-FPM dla gniazda TCP
Konfigurowanie Nginx do pracy z serwerem aplikacji PHP-FPM
Po skonfigurowaniu adresu PHP-FPM słucha, musisz skonfigurować Nginx do prośby o to za pośrednictwem tego adresu, korzystając z fastcgi_pass
Parametr konfiguracyjny, w wirtualnym pliku konfiguracyjnym serwera.
Na przykład, jeśli plik konfiguracyjny dla Twojej witryny jest /etc/nginx/conf.d/przykład.com.conf, Otwórz go do edycji.
# vim/etc/nginx/conf.d/przykład.com.conf
Spójrz na Lokalizacja
blok do przetwarzania .php
pliki i ustaw fastcgi_pass
Parametr w następujący sposób, jeśli skonfigurowałeś PHP-FPM do słuchania w gnieździe domeny unix.
fastcgi_pass unix:/run/php/php7.4-fpm.Sock #Ubuntu/Debian lub Fastcgi_Pass Unix:/run/php-fpm/www.Sock #Centos/Rhel/FedoraPodłącz Nginx do PHP-FPM za pomocą gniazda UNIX
Lub użyj TCP/IP Adres, jeśli skonfigurowałeś PHP-FPM słuchać na TCP/IP gniazdo elektryczne. Jeśli serwer aplikacji backend (PHP-FPM) działa na osobnym serwerze (zamień 10.42.0.10 z adresem IP maszyny, na którym działa serwer FastCGI PHP-FPM).
fastcgi_pass 10.42.0.10: 3000;Podłącz Nginx do PHP-FPM za pomocą gniazda TCP
Ważny: NA Centos 8, PHP-FPM jest zdefiniowany jako serwer upstream w /etc/nginx/conf.D/PHP-FPM.conf Plik w bloku upstream, z nazwą PHP-FPM.
Możesz odpowiednio wprowadzić zmiany w zależności od adresu PHP-FPM jest skonfigurowany do słuchania, w pliku konfiguracji puli. Domyślna konfiguracja wskazuje na gniazdo domeny Unix.
Upstream PHP-FPM Server Unix:/run/php-fpm/www.skarpetka;Skonfiguruj serwer PHP Upstream w Nginx
oraz w pliku blokowym serwera witryny, po prostu ustaw fastcgi_pass
parametr jak pokazano.
fastcgi_pass php-fpm;Skonfiguruj Nginx na serwer PHP-FPM
Po wprowadzeniu zmian w PHP-FPM I Nginx Konfiguracje, sprawdź ich składnię konfiguracji pod kątem poprawności w następujący sposób.
------------- Na Debian i Ubuntu ------------- $ sudo php -fpm -t $ sudo nginx -t ------------- Na Centos/Rhel i Fedora ------------- # php -fpm -t # nginx -t
Podczas gdy wyjście polecenia pokazuje tylko główny plik konfiguracyjny, wszystkie pozostałe pliki konfiguracyjne są również uwzględnione i sprawdzane.
Sprawdź konfigurację Nginx i PHP-FPMNastępnie musisz ponownie uruchomić dwie usługi, aby zastosować zmiany za pomocą polecenia SystemCtl.
------------- Na Debian i Ubuntu ------------- $ sudo systemctl restart nginx $ sudo systemctl restart php7.4-fpm ------------- Na Centos/Rhel i Fedora ------------- # Systemctl restart nginx # Systemctl restart php-fpm
Jeśli otrzymasz jakieś błędy, możesz sprawdzić Nginx I PHP-FPM pliki dziennika za pomocą polecenia CAT.
------------- Na Debian i Ubuntu ------------- $ cat/var/log/nginx/błąd.Log $ cat/var/log/php7.4-fpm.dziennik ------------- Na Centos/Rhel i Fedora ------------- $ cat/var/log/nginx/błąd.log $ cat/var/log/php-fpm/www-error.dziennik
To wszystko, co dla ciebie mieliśmy. Poniższa sekcja komentarza można użyć do zadawania pytań. Aby uzyskać więcej informacji, zobacz dokumentację Nginx i dokumentację PHP-FPM.
- « LFCA - Przydatne wskazówki dotyczące zabezpieczania danych i Linux - Część 18
- Top HEX Editors for Linux »