NGINX Webサーバー(リバースプロキシとして)は、 FastCGIを介してPHPアプリケーションを提供します プロトコル(バックエンドアプリケーションサーバーとして)。 NGINX PHP-FPMを採用 (FastCGI Process Manager)、代替の PHP FastCGI CGI をリッスンし、デーモンとしてバックグラウンドで実行される実装 リクエスト。負荷の高いWebサイトやWebアプリケーションに電力を供給するために設計された追加機能が付属していますが、あらゆるサイズのサイトに使用できます。
PHP-FPMだけではありません FastCGIの構成をサポートする リソースプールがありますが、 FastCGIの多くも改善されます 内部で、エラー報告、スクリプトの終了などが増加します。 PHPデーモン化、プロセス管理、リクエストの送信元となる動的なプロセス数、エラーヘッダー、高速アップロードサポートなどを備えています。
FastCGIを受け入れるには NGINXからのリクエスト 、 PHP-FPM TCP / IPでリッスンできます ソケットまたはUNIXドメインソケット。どちらのアドレスを使用する場合でも、 NGINX PHP-FPM への接続(プロキシリクエスト)に使用します 、fastcgi_pass
を使用 ディレクティブ。
このガイドでは、 NGINXを構成する方法について説明します PHP-FPMを使用してPHPアプリケーションをサーバー化する 。 TCP / IPをいつ使用するかについて説明します NGINXに接続するためのソケットまたはUNIXドメインソケット PHP-FPM とその理由。
このガイドは、 NGINXを使用していることを前提としています およびPHP-FPM Linuxシステムにインストールされている場合、それ以外の場合は、以下を参照してください:
- CentOS8にLEMPサーバーをインストールする方法
- Ubuntu20.04サーバーにLEMPスタックPhpMyAdminをインストールする方法
- RHEL 8にNGINX、MySQL / MariaDB、PHPをインストールする方法
- Debian10サーバーにLEMPをインストールする方法
何を使用する必要がありますか:UNIXドメインソケットまたはTCP / IPソケット?
UNIX ドメイン(または IPC )ソケットは、プロセス間通信(IPC)の手段であり、 TCP / IP で、同じオペレーティングシステムで実行されているプロセス間で効率的なデータ交換を可能にします。 (またはインターネットドメイン )ソケットにより、プロセスはネットワークを介して通信できます。
TCP / IPとは異なり IPアドレスとポートでサーバーを識別するソケット(例: 127.0.0.1:9000 )、ファイルパス名(例: /run/php-fpm/www.sock )を使用してサーバーをUNIXドメインソケットにバインドできます )、これはファイルシステムに表示されます。
UNIXドメインソケットは特殊なタイプのファイルです。ファイルとディレクトリのアクセス許可が適用され(他のタイプのUNIXファイルの場合と同様)、ホスト上のどのプロセスがファイルの読み取りと書き込みを実行できるかを制限するために使用できます。 (したがって、バックエンドサーバーと通信します。)
このように、UNIXドメインソケットはローカルホスト上のプロセスのみが使用できるため、安全です。 TCP / IP ファイアウォールなどの追加のセキュリティ対策が実装されていない限り、ソケットはインターネットにさらされてセキュリティリスクを引き起こす可能性があります。
重要なのは、 UNIXを使用することです。 ドメインソケットは、 TCP / IPを使用する場合と同じではありません パフォーマンスに関するソケット、いくつかのテストとベンチマークにより、UNIXドメインソケットの方が高速であることが証明されています。 UNIXドメインソケットの主な欠点は、スケーラブル性が低く、同じオペレーティングシステム(OS)内のプロセス間通信のみをサポートすることです。
PHP-FPMリッスンアドレスはどこで設定できますか?
アドレスを構成できますPHP-FPM リソースプール構成ファイルでリッスンします。 PHP-FPMでは注意してください 、異なる設定でプロセスの複数のプールを実行できます。デフォルトのプールはwww
と呼ばれます 。
リソースプール構成ファイルの場所は、 PHPの方法によって異なります。 およびPHP-FPM Linuxシステムにインストールされている(デフォルト/単一バージョンまたは複数バージョンの同時)
たとえば、 CentOS 8 、単一バージョンでは、すべてのPHP構成ファイルは/etc
にあります。 ディレクトリとデフォルトのPHP-FPM プール(www)
構成ファイルは/etc/php-fpm.d/www.conf :
すべてのPHP構成ファイルを一覧表示するには、次のlsコマンドを使用します。
# ls /etc/php*
すべてのPHP構成ファイルを一覧表示する
Ubuntu 20.04 、PHP構成ファイルは/etc/php/<php-version>/
にあります ディレクトリとデフォルトのPHP-FPM プール(www)
構成ファイルは/etc/php/<php-version>/fpm/pool.d/www.conf
です。 :
$ ls /etc/php/7.4/
Ubuntu上のすべてのPHP構成ファイルを一覧表示する
UNIXドメインソケットでリッスンするようにPHP-FPMを構成する
PHP-FPMを構成するには UNIXドメインソケットでリッスンするには、デフォルトの PHP-FPMを開きます お気に入りのテキストエディタを使用したプール構成ファイル。
# vim /etc/php-fpm.d/www.conf #Ubuntu/Debian OR $ sudo vim /etc/php/7.4/fpm/pool.d/www.conf #CentOS/RHEL/Fedora
次に、listenディレクティブを探し、次のようにUNIXドメインソケットのファイルパス名に設定します。ほとんどのインストールでは、デフォルトでUNIXドメインソケットが使用されることに注意してください。
listen = /run/php/php7.4-fpm.sock #Ubuntu/Debian OR listen = /run/php-fpm/www.sock #CentOS/RHEL/Fedora
UNIXドメインソケットを使用する場合は、NGINX Webサーバーからの接続を許可するために、ファイルに適切な読み取り/書き込み権限も設定する必要があります。デフォルトでは、NGINXはユーザーおよびグループ nginxとして実行されます CentOS / RHEL / Fedora およびwww-data Ubuntu およびDebian 。
したがって、listen.owner
を見つけます およびlisten.group
パラメータを設定し、それに応じて設定します。また、モードを 0660に設定します listen.mode
を使用する パラメータ。
------------- 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
UNIXドメインソケットファイルの権限が正しく設定されていない場合、NGINXは不正なゲートウェイエラーを返す可能性があることに注意してください。
PHP-FPM構成
TCP/IPソケットでリッスンするようにPHP-FPMを構成する
UNIXドメインソケットはTCP/IPソケットよりも高速ですが、前者は同じOSでのプロセス間通信しかサポートできないため、スケーラブルではありません。 NGINXの場合 およびバックエンドアプリケーションサーバー( PHP-FPM )異なるシステムで実行されている場合は、 PHP-FPMを構成する必要があります TCP/IPソケットで接続をリッスンします。
PHP-FPM プール構成ファイル、listen
を設定します 次のようにアドレスします。選択したポートが同じシステム上の別のプロセスまたはサービスによって使用されていないことを確認してください。
listen = 127.0.0.1:3000
TCPソケットのPHP-FPM構成
PHP-FPMアプリケーションサーバーと連携するようにNGINXを構成する
アドレスを設定したらPHP-FPM リッスンします。NGINXを構成する必要があります fastcgi_pass
を使用して、そのアドレスを介してリクエストをプロキシします 仮想サーバーブロック構成ファイル内の構成パラメーター。
たとえば、Webサイトの構成ファイルが /etc/nginx/conf.d/example.com.confの場合 、編集用に開きます。
# vim /etc/nginx/conf.d/example.com.conf
location
を探します .php
を処理するためのブロック ファイルを作成し、fastcgi_pass
を設定します UNIXドメインソケットでリッスンするようにPHP-FPMを構成した場合は、次のようにパラメータを設定します。
fastcgi_pass unix:/run/php/php7.4-fpm.sock #Ubuntu/Debian OR fastcgi_pass unix:/run/php-fpm/www.sock #CentOS/RHEL/Fedora
Unixソケットを使用してNginxをPHP-FPMに接続する
または、 TCP / IPを使用します PHP-FPMを構成した場合のアドレス TCP / IPでリッスンする ソケット。バックエンドアプリケーションサーバーの場合( PHP-FPM )は別のサーバーで実行されています( 10.42.0.10を置き換えます PHP-FPMFastCGIサーバーが実行されているマシンのIPアドレスを使用します。
fastcgi_pass 10.42.0.10:3000;
TCPSocketを使用してNginxをPHP-FPMに接続する
<強い色:赤;">重要 : CentOS 8 、 PHP-FPM /etc/nginx/conf.d/php-fpm.confでアップストリームサーバーとして定義されています php-fpmという名前のアップストリームブロック内のファイル 。
ここで、アドレス PHP-FPMに応じて変更を加えることができます。 プール構成ファイルで、リッスンするように構成されています。デフォルトの構成はUNIXドメインソケットを指しています。
upstream php-fpm { server unix:/run/php-fpm/www.sock; }
NginxでPHPアップストリームサーバーを構成する
サイトのサーバーブロックファイルで、fastcgi_pass
を設定するだけです。 示されているパラメータ。
fastcgi_pass php-fpm;
NginxをPHP-FPMアップストリームサーバーに構成する
PHP-FPMに変更を加えた後 およびNGINX 構成については、次のように構成構文が正しいかどうかを確認してください。
------------- On Debian and Ubuntu ------------- $ sudo php-fpm -t $ sudo nginx -t ------------- On CentOS/RHEL and Fedora ------------- # php-fpm -t # nginx -t
コマンド出力にはメインの構成ファイルのみが表示されますが、他のすべての構成ファイルも含まれ、チェックされます。
NginxとPHP-FPMの構成を確認する
次に、systemctlコマンドを使用して、2つのサービスを再起動し、変更を適用する必要があります。
------------- 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
エラーが発生した場合は、 NGINXを確認できます およびPHP-FPM 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
それが私たちがあなたのために持っていたすべてです。以下のコメントセクションは、質問をするために使用できます。詳細については、NGINXのドキュメントとPHP-FPMのドキュメントを参照してください。
共有は思いやりがあります…Facebookで共有するTwitterで共有するLinkedinで共有するRedditで共有する