本記事では、PHP-FPMについての基本的な内容、PHP-FPMのインストール方法や設定、PHP-FPMのFastCGIについて解説します。
PHP-FPMとは、WordPressの動的コンテンツを高速化するツールで、多数のリクエストの同時処理を向上させることが可能です。
この記事では、PHP-FPM概要から、インストールや設定方法まで使い方の解説をしているので、WordPressの高速化をおこないたい方はぜひ参考にしてください。
目次
PHP-FPMとは、高負荷のPHPで作られた動的サイトの負荷を軽減する仕組みで、リクエストの多いWordPressなどのサイトで役に立つ仕組みです。Webサーバーとは別に、PHP専用のアプリケーションサーバーを構築し、そこでプロセスの処理を実行しています。
また、PHP-FPMは、高いパフォーマンスと拡張性を備えた「PHP」のFastCGI実装であり、リクエストごとに独立したプロセスを管理できます。これにより、多くのリクエストを効率的に処理することが可能となるのです。
FastCGIは、Webサーバー上でプログラムを実行するための仕組みであり、従来のCGI(Common Gateway Interface)を改良したものです。このCGIとは、Webサーバー上で「PHP」などの動的コンテンツを生成するための仕組みとなります。
従来のCGIは、ブラウザからのリクエストのたびにプログラムの起動と終了をおこなっていため、多数のリクエストが発生すると高負荷が発生していました。
一方で、FastCGIを用いれば、Webサーバーのプログラムを一度起動して、一定期間メモリ上に保持し、待機させられます。これにより、プログラムの起動や終了の処理を軽減できます。
また、FastCGIの利点は、プロセスの再起動やリソースの割り当てのオーバーヘッドを最小限に抑えられ、メモリの節約も可能です。さらに、FastCGIを用いれば、複数のリクエストの並行処理もできます。
ここでは、PHP-FPMのインストール方法を、以下の5ステップで解説します。
それぞれの手順について詳しく確認していきましょう。
PHP-FPMのインストール前に、環境の構築ができているか確認しておきましょう。
PHP-FPMをインストールする前に、Linux環境にApache httpdやNginxなどのWebサーバー、MySQL(またはMariaDB)、そして「PHP」が正しく機能する環境を整える必要があります。
まず、事前にApache httpdやNginx(Webサーバー)、mysqlまたはmariadb(データベースサーバー)、そして「PHP」と付随するパッケージをインストールしましょう。これにより、PHP-FPMの動作に必要な基盤が整います。
PHP-FPMのインストール2ステップ目は、ターミナルからのインストールです。
まず、以下のコマンドをターミナル(コマンドプロンプトなど)に入力して、システムのパッケージリストを最新に更新しましょう。
sudo apt-get update
次に以下のコマンドをターミナルに入力して、PHP-FPMをインストールしましょう。
sudo apt-get install php-fpm
このコマンドは、PHP-FPMの利用可能なパッケージを、インストールするためのものです。ターミナル上でコマンドを実行することにより、PHP-FPMのインストールがおこなわれます。
PHP-FPMのインストール3ステップ目では、TCPでNginxとの連携をしましょう。
Nginxはアプリケーションサーバーであり、「PHP」を実行するためにはPHP-FPMが必要です。そこで、NginxからPHP-FPMへの通信を確立するために、TCPプロトコルを使用して連携しましょう。
以下のような設定を、Nginxの設定ファイル(通常はnginx.conf)に追加してください。
location ~ \.php$ { root /var/www/html; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
これにより、Nginxは指定したポート(デフォルトでは9000番ポート)に対してPHP-FPMと通信し、「PHP」の処理を実行できます。
PHP-FPMのインストール4ステップ目は、UNIXでNginxとの連携です。
UNIX環境でNginxと連携する場合も、TCPのときと同様の手順です。NginxからPHP-FPMへの通信をおこなうために、適切な設定をおこないましょう。
以下は、Nginxの設定ファイルに追加する設定例です。
location ~ \.php$ { fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
この設定により、NginxはUNIXソケット(通常は/var/run/php/php7.4-fpm.sock)を介してPHP-FPMと通信し、「PHP」の処理を実行できます。
PHP-FPMのインストール5ステップ目は、Nginxの再起動です。
PHP-FPMを正常にインストールし、Nginxとの連携が確立されたら、最後にNginxを再起動する必要があります。そのために、ターミナルで以下のコマンドを実行して、Nginxを再起動しましょう。
sudo service nginx restart
Nginxの再起動により、設定変更が反映され、PHP-FPMとの連携が正しく機能していることが確認できます。
PHP-FPMの設定を調整することで、サーバーのピーク性能を高めた状態で、通常時のメモリの消費が抑えられます。
ここでは、そのような効果を発揮するためのPHP-FPMの設定を紹介します。設定をおこなう項目は以下の5つです。
それぞれ順番に見ていきましょう。
PHP-FPMの設定1つ目は、プロセスの最大起動数の調整です。以下のような設定が、PHP-FPMの設定ファイル(通常はphp-fpm.confまたはwww.conf)に存在します。
pm.max_children = 50
この数値を調整することで、同時に起動できる最大プロセス数の指定が可能です。もし、同時接続数がこの数値を超える場合、余剰のリクエストは他のリクエストの処理後に順次処理されます。
たとえば、上記の設定の場合は50を超えるレスポンスがあった場合、51以降は処理が完了してから対応します。このため、同時接続数を低めに設定すると、並行処理数が減り、レスポンスタイムが悪化する可能性があるのです。
したがって、処理速度を高速化させるためにも、プロセスの最大起動数をCPUに合わせた適切な数値に設定することが大切です。
PHP-FPMの設定2つ目は、プロセスを再起動する処理リクエスト数の調整です。以下のような設定が、PHP-FPMの設定ファイルに存在します。
pm.max_requests = 1000
この設定は、指定したリクエスト数ごとに、プロセスを再起動する仕組みです。これにより、プロセスが長時間実行されることによるメモリの増加を防ぎ、安定したパフォーマンスを維持できます。
そして、適切な数値を設定することで、プロセスのメモリ使用量を制御し、サーバーの安定性を向上させることが可能です。
PHP-FPMの設定3つ目は、アイドル状態のプロセス最大起動数の調整です。
以下のような設定が、PHP-FPMの設定ファイルに存在します。
pm.max_spare_servers = 20
この設定では、アイドル状態で待機しているプロセスの最大数を指定できます。この数字はサーバーが通常の負荷で稼働している状態であり、常に起動しているプロセス数の最大値とも言えるでしょう。
この設定を適切な値にすることにより、サーバーのリソースを適切に確保しつつ、他のプロセスへの影響を最小限に抑えることが可能です。
PHP-FPMの設定4つ目は、アイドル状態のプロセス最小起動数の調整です。
以下のような設定が、PHP-FPMの設定ファイルに存在します。
pm.min_spare_servers = 5
この設定では、アイドル状態で待機しているプロセスの最小数を指定できます。つまり、アイドル状態でリクエストの状態にいくつのプロセスを起動し待機させておくかを設定できます。
この数値の調整は、サーバーがリクエストを処理する余裕を、最低限どの程度保持するかを決定するため設定です。
ただし、アクセスの偏りがなければ新たなリクエストが急増することはあまりないため、少なめに設定しても問題はあまりありません。
PHP-FPMの設定5つ目は、親プロセス起動時の子プロセス起動数の調整です。
以下のような設定が、PHP-FPMの設定ファイルに存在します。
pm.start_servers = 5
この設定では、親プロセスが起動した際に、同時に起動する子プロセス数の指定が可能です。そして、この値と、「pm.max_spare_servers」と「pm.min_spare_servers」の設定によってプロセス数が決定されます。
この設定をすることで、予想される平均的な同時接続数に基づき、サーバーのリソースを節約するか、性能に余裕を持たせるかを調節できます。
今回は、PHP-FPMの基本的な内容について解説しました。
PHP-FPMはLinux環境で開発する際に、必要なコンポーネントの1つです。PHP-FPMを導入することで、柔軟性とスケーラビリティを持った「PHP」アプリケーションの開発に取り組めます。
とくにWordPressなど動的で処理やリクエスト数の多い、Webサイトを構築している場合は、PHP-FPMを導入することで負荷を下げることが可能です。
今回紹介したインストール手順や設定を実行して、PHP-FPMでLinuxでの「PHP」開発環境を構築しましょう。
2024.06.17
子供におすすめのプログラミングスクール10選!学習メリットや教室選びのコツも紹介
#プログラミングスクール
2022.01.06
【完全版】大学生におすすめのプログラミングスクール13選!選ぶコツも詳しく解説
#プログラミングスクール
2024.01.26
【未経験でも転職可】30代におすすめプログラミングスクール8選!
#プログラミングスクール
2024.01.26
初心者必見!独学のJava学習方法とおすすめ本、アプリを詳しく解説
#JAVA
2024.01.26
忙しい社会人におすすめプログラミングスクール15選!失敗しない選び方も詳しく解説
#プログラミングスクール
2022.01.06
【無料あり】大阪のおすすめプログラミングスクール14選!スクール選びのコツも紹介
#プログラミングスクール
2024.01.26
【目的別】東京のおすすめプログラミングスクール20選!スクール選びのコツも徹底解説
#プログラミングスクール
2024.01.26
【無料あり】福岡のおすすめプログラミングスクール13選!選び方も詳しく解説
#プログラミングスクール
2024.01.26
【徹底比較】名古屋のおすすめプログラミングスクール13選!選び方も詳しく解説
#プログラミングスクール
2024.01.26
【徹底比較】おすすめのプログラミングスクール18選!失敗しない選び方も徹底解説
#プログラミングスクール