テックブログ

何故かApacheを再起動したらPHP-FPMが起動してきた

はじめに

こんにちは。kkです。

Apacheを再起動したときに、「停止させていたはずのPHP-FPMが何故か起動している」
なんてことはありませんか。

私は以前にApacheをPreforkで起動させていたので、PHP-FPMが不要と思い停止していたのですが、
いつの間にか起動しているといったことがありました。

今回はその理由についてお話していきます。
ちなみに今回はApacheとPHP-FPMを例に出してお話していきますが、
他のサービスで同様の事例を確認した場合は本理由と同じ可能性があるので
ぜひ参考にしてみてください。

なお今回はsystemdにて管理されているApacheやPHP-FPMを例に出してお話していきます。

ホントにPHP-FPMが起動してくるなんてことある?

まずはホントにPHP-FPMが停止している場合でも、Apacheを再起動すると
PHP-FPMが起動してくるのか確認してみましょう。

ApacheはPreforkとして起動しているので、PHP-FPMを停止してみます。

それではApacheを再起動してみましょう。

停止させていたはずのPHP-FPMが起動していますね、、、
再起動させたのはApache(httpd)のみのはずですがなぜなのでしょうか。

勝手にPHP-FPMが起動してきた理由

端的に理由を述べると、systemdの設定となります。
それでは詳細を少し見てみましょう。

systemctl cat コマンドにてApache(httpd)の設定を確認してみましょう。
すると何やらPHP-FPMに関する記載がありますね。

この Wants という設定は特定のサービスを開始した場合に、指定されたサービスもアクティブに
してほしい
といった設定です。

この設定があるのでApacheを再起動した際にPHP-FPMも起動するのです。
なおsystemctl list-dependenciesコマンドにてサービスの依存関係を確認できるので、
こちらでもApache(httpd)とPHP-FPMの関係を確認可能です。

※長くなってしまうので、省略させていただいています。
 ぜひご自身の環境にて試してみてください。

それじゃあ勝手に起動しないようにするには?

このままでは停止させておきたい場合、毎回手動で停止する必要が出てきて
非常に面倒ですよね、、、

そのためこちらの設定を削除していきましょう。
先ほどsystemctl catコマンドを実行した際に、ファイル名が表示されていたかと思います。
お察しの通り、こちらが設定ファイルとなりますのこちらを削除またはmvをすればいいだけです。

再度systemctl catコマンド実行すると 、”systemctl daemon-reload‘を実行しろと
表示されるので実行します。

こちらを実行するとApache(httpd)を再起動してもPHP-FPMが起動してこなくなります。
ちなみにsystemctl cat コマンドやsystemctl list-dependenciesコマンドにもPHP-FPMに関する設定が
表示されなくなるのでぜひ試してみてください。

おわりに

いかがだったでしょうか。

今回は自分が遭遇して少し不思議に思った事例を紹介してみました。
皆さんも停止したはずなのにいつの間にか起動しているサービスを発見した場合は、
本事象のことも少し疑ってみてください。

以上となります。ありがとうございました。

この記事をシェアする

  • facebook
  • twitter
  • hatena
  • line
URLとタイトルをコピーする

実績数30,000件!
サーバーやネットワークなど
ITインフラのことならネットアシストへ、
お気軽にご相談ください