私のVPSでは、PHPをApacheモジュールとして実行するかFastCGIとして実行するかを選択できます。
この決定はどのように行うべきですか?パフォーマンス?セキュリティ?使いやすさ?適合?
PLESKを使用しています。
PHPをApache HTTPDモジュールとしてリンクすると、それらが分離できなくなります。
これには問題がないわけではありません:
実際、多くのPHPライブラリはありません threadsafe 、それが不可欠ですprefork-mpmモジュール forHTTPD 2.xHTTPD 1.3と同様の方法でリクエストを処理する、スレッド化されていない、分岐前のWebサーバーを実装するための運用環境。
ただし、このアプローチはパフォーマンスに大きく影響し、CPUとRAMに過負荷がかかり、タイムアウトなどのトラブルが発生する可能性があります。
マニュアルページ Apache Performance Tuning では、長所と短所についてもう少し詳しく説明しています。
prefork MPMは、それぞれ1つのスレッドを持つ複数の子プロセスを使用します。各プロセスは一度に1つの接続を処理します。多くのシステムでは、preforkはワーカーと同等の速度ですが、より多くのメモリを使用します。 Preforkのスレッドレス設計は、状況によってはワーカーよりも利点があります。非スレッドセーフのサードパーティモジュールで使用でき、スレッドデバッグサポートが不十分なプラットフォームでデバッグしやすくなります。
だから、私見、PHPwithFastCGIは、実稼働により適しています。
さらに、私の好みはmod_fastcgiではなくmod_fcgid外部プロセスマネージャを定義する機能など、より多くの機能を提供します。
とにかく、prefork-mpmモジュールの必要はなくなり、最終的に worker-を渡すことが可能になります。 mpmモジュール 、より効果的。ただし、管理プロセスはシェルスクリプトを介して処理され、php-cgi実行可能ファイルを起動しますが、これはあまり便利ではありません。
幸いなことに、 FastCGIProcess Manager forPHP(PHP -FPM) 、人気のパッチ ネイティブ統合 以降、PHP 5.3.3。残念ながら、PHP 5.2.xを使用している場合、古典的なFastCGIに限定されます。
それでも、マニュアルページで報告されているように、CGIモードに関連する可能性のある脆弱性を認識することが重要です CGIとコマンドラインのセットアップ :
警告
CGIモードで展開されたサーバーは、いくつかの脆弱性にさらされています。 CGIセキュリティセクション を読んで、このような攻撃から身を守る方法を学んでください。
このブログ投稿をご覧ください。実用的な使用例が含まれており、この応答を作成する上で非常に役立ちました。
php、fastcgi、fpmおよびApache(フランス語)
php、fastcgi、およびApache fpm(Google Translateを使用した英語)
いいえ。実際はそれよりも少し複雑です。質問を理解している限り、Apacheがリクエストを処理しているとき、すべてのPHPライブラリをロードします(PHPの場合Apacheモジュールとして)。静的リソース要求を実行する場合でも。そのため、大量のメモリを消費します。
もう1つのソリューションは、軽量のフロントhttpserverです。静的リクエストを実行し、PHPリクエストをPHP-CGIに転送します。
これを再開するには: