71978


Nginx と php-fpm の関係性を理解できていません。  
何となく、Nginx の上に php-fpm が載っているようなイメージを抱いているのですが、  
例えば、Nginx を再起動しても、php-fpm を再起動したことにはならないのですか？

質問背景  
原因は不明ですが、朝確認してみたら「作成しているWebサイトの表示だけ」がとても遅くなっていることがあります。  
何か遅いプロセスか何かが走っているのかと思い、取り敢えず、Nginx と MySQL を再起動しています。  
これまでは php-fpm を再起動 していなかったのですが、ふと Nginx を再起動しても、php-fpm を再起動
したことにはならないのかと思い、質問しました。  
環境は、CentOS7です。


CC BY-SA 4.0
2020-11-15T23:37:53.720
71971
2020-11-16T07:01:06.530
7886
question
php nginx
Nginx を再起動しても、php-fpm を再起動したことにはなりませんか？


質問の冒頭：

> Nginx と php-fpm の関係性を理解できていません。  
>  何となく、Nginx の上に php-fpm が載っているようなイメージを抱いているのですが、  
>  例えば、Nginx を再起動しても、php-fpm を再起動したことにはならないのですか？

それについては、この記事の図が分かりやすいのでは？  
[NginxでPHPを動かす](https://www.spiceworks.co.jp/blog/?p=12317)

> ・PHP-FPMというのは、PHP-FastCGI Process Managerの略で、cgiです。  
>  ・PHP-FPM(=FastCGIのインターフェース) → このプログラムを使って、PHPを動作をさせます  
>  ▼ cgi方式  
>  nginxがphp-fpmにphpの処理を依頼し、php-fpmがphpを処理します。  
>  (紹介先記事にこんな感じの図があるので参照してください。)
[code]

>     +---------+    +---------+    +---------+
>     |  NGINX  | -> | PHP-FPM | -> |   PHP   |
>     +---------+    +---------+    +---------+
>  
[/code]

>
> ▼設定方法  
>  ・ここでは、nginx→php-fpmの通信はUnixドメインソケット通信です

> 最後にnginxとphp-fpmを再起動
[code]

>     service nginx restart
>     service php-fpm restart
>  
[/code]

>
> これでPHPが動くようになります

補足はこの記事で。  
[FastCGI - Wikipedia](https://ja.wikipedia.org/wiki/FastCGI)

> 詳細  
>  リクエスト毎に新しいプロセスを作成する代わりに、FastCGI
> は永続的なプロセスを使用して一連のリクエストを処理する。これらのプロセスは、WebサーバではなくFastCGI サーバが所有している。
>
> Webサイトの管理者とプログラマは、FastCGI
> でWebサーバからWebアプリケーションを分離すると、組み込みインタプリタ(mod_perl（英語版）やmod_php（英語版）等)に比べて多くの利点がある。この分離により、サーバプロセスとアプリケーションプロセスを個別に再起動できる。

回答として：  
つまり **「個別に再起動できる。」** ということは、裏返せば **「個別に再起動しなければならない。」** ことでもあるでしょう。

なので、 **「Nginx を再起動しても、php-fpm を再起動したことにはならない」** と考えられます。

他にはこんな記事も  
[How to Connect NGINX to PHP-FPM Using UNIX or TCP/IP
Socket](https://www.tecmint.com/connect-nginx-to-php-fpm/)

> Next, you need to restart the two services to apply the changes, using the
> systemctl command.
[code]

>     ------------- On CentOS/RHEL and Fedora  -------------
>     # systemctl restart nginx
>     # systemctl restart php-fpm
>  
[/code]


CC BY-SA 4.0
2020-11-16T07:01:06.530
71978
2020-11-16T07:01:06.530
26370
71971
answer