パネルで働いた多くの人は、キャストなしではmod_fastcgi + php-fpmをインストールできないことを知っていると思います。
誰もがハブからやって来て、この機能の実装をサポートするために自分の声を残すと、開発者もこれを無人のままにして標準セットに含めることはできないようです。
features.cpanel.net/responses/fastcgi-process-manager-fpm-sapi
FastCGI Process Manager(FPM)
FPM(FastCGI Process Manager)は、PHP FastCGIの代替実装であり、負荷の高いサイトで一般的に使用されるいくつかの追加機能を備えています。
これらの機能は次のとおりです。
- 停止および開始のための正しい(グレースフル)プロシージャを使用した高度なプロセス制御。
- 異なるuid / gid / chroot環境でワーカーを実行する機能、および異なるphp.iniを使用して異なるポートで実行する機能(safe_mode置換);
- 標準出力ストリーム(stdout)およびエラー(stderr)のロギング。
- オペコードキャッシュが突然破壊された場合の緊急再起動。
- アップロードの高速化サポート。
- 「スローログ」-異常に低速で実行されるスクリプト(名前だけでなく、トレースも記録します。これは、リモートプロセスの実行データを読み取るためのptraceなどのユーティリティを使用して実現されます)。
- fastcgi_finish_request()は、リクエストを完了し、すべてのデータバッファーをフラッシュするための特別な関数です。プロセスは、長時間のアクション(ビデオ変換、統計処理など)を実行し続けることができます。
- 子プロセスの起動のタイプ-動的、静的、およびオンデマンド(オンデマンド)。
- 基本的なSAPIステータス情報(Apache mod_statusと同様)。
- php.iniに基づく構成ファイル。
ここで何が起こっているのか理解していない人のための小さなウィキ:
ハンドラ-なぜ必要なのですか:
サイトをPHPで実行するには、サーバーがPHPコードを解釈する必要があります。 PHP 5など、使用しているPHPライブラリに基づいてコードを解釈します。PHPハンドラは、実際にライブラリをロードするもので、解釈に使用できます。 PHPハンドラーは、サーバーでのPHPのロード方法を決定します。
cPanelで利用可能なPHPハンドラー:
PHPのロードに使用できるハンドラには、CGI、DSO、suPHP、FastCGIがあります。 各ハンドラーは、異なるPHPロード実装を使用します。 各実装は、ApacheがPHPにサービスを提供する方法を決定するため、Apacheサーバーのパフォーマンスに影響を与えます。
そして何?
PHPハンドラーのリスト:
DSO(mod_php)
DSOはmod_phpとも呼ばれます。 DSOは、Dynamic Shared Objectの略です。 それは古いですが、一般的に最速のハンドラーと考えられています。 Apacheモジュールとして機能します。 これは、PHPスクリプトがユーザー「nobody」であるApacheユーザーとして実行されることを意味します。
DSOには2つの欠点があります。
まず、PHPスクリプトを使用して作成されたすべてのファイルの所有者は「nobody」になります。 インターネットからは利用できません。 PHPを使用してファイルをアップロードする必要があるサイトでは、ファイルのアクセス許可に問題がある可能性があります。 これはWordPressの問題です。WordPressインターフェースを介したファイルのアップロード、または自動更新機能の使用はDSOで失敗します。
2番目の欠点はセキュリティの問題です。 作成されたファイルの所有者は「nobody」になります。 ハッカーがPHPスクリプトに脆弱性を見つけた場合、同じ特権を持つファイル、誰にも属さない重要なシステムファイルを変更または使用できます。
Cgi
CGIは、Common Gateway Interfaceの略です。 CGIハンドラーは、Apacheモジュールとは異なり、PHPをCGIモジュールとして処理します。 ただし、suExecを使用している場合は、どのユーザーがリクエストを行ったかを確認できます。
CGIメソッドは、DSOハンドラーが利用できない場合のフォールバックとして意図されています。 cPanelのドキュメントによると、suExecが有効かどうかに関係なく、このメソッドは高速でも安全でもありません。
suPHP
suPHPはシングルユーザーPHPとして読み取ります。 suPHPは、ApacheモジュールではなくCGIモジュールとしてPHPも実行します。 Webから呼び出されるPHPスクリプトは、それらを所有するユーザーの下で実行されるという点で、CGIとは異なります。 suPHPは通常デフォルトのハンドラーであり、PHPを提供するためにCpanelによって推奨されています。
ただし、1つだけあります。
suPHPの欠点は、非常に高いCPU負荷が発生することです。 また、suPHPでは、コードキャッシング(eAcceleratorまたはAPCなど)を使用できません。 これにより、追加の負荷が発生し、処理速度が低下します。
デフォルトでメインハンドラーとしてどのように使用できますか???????
FCGI
FCGI(別名:mod_fcgid)は、高性能のCGIアップデート/バリアントです。 suPHPの利点があります。 FCGIとの違いは、プロセッサのパフォーマンスを大幅に節約し、DSOに近い速度を実現できることです。
FCGIの欠点は(文字通り)です:
mod_fcgidは一度に1つの要求のみをFCGIサーバーに渡しますが、mod_fastcgiは一度に複数の要求を渡します。PHPは複数の要求を管理できます。プロセス。 つまり、mod_fcgidを使用すると、すべて独自のオペコードキャッシュを持つ多くのPHPプロセスが存在することになります。
bugs.debian.org/cgi-bin/bugreport.cgi?bug=504132#25
一般的に、前のものと同じたわごとは、コードキャッシュをそれ自体で別々に保持するという事実にもかかわらず、大量の個別のプロセスを作成します。
あなたが実装する必要があるものについて読んで、キーワード。
実際のFastCGI mod_fastcgi!= mod_fcgid
www.fastcgi.com/drupal/node/6
php-fpm
php-fpm.org/about