今日はUbuntuでLNMP環境を構築したいので、NginxはPHP-FPMを使用するので、WebサーバーとPHPインタープリターのやり取りを整理しました。
ご存知のとおり、PHP はクロスプラットフォームおよびクロスサーバー言語であり、これが PHP が非常に人気がある理由の 1 つです。ただし、PHP インタープリターがさまざまな方法で Web サーバー内で実行できることを知っている人はあまりいません。 PHP で最も一般的に使用される方法は、Apache でモジュール (mod_php) として実行することです。これは、Apache が PHP を実行するデフォルトの方法でもあります。しかし、Nginx では、Nginx は PHP-FPM を使用します。
この記事ではこれらの概念を紹介します。何か間違っている場合は、批判やアドバイスをお願いします。
PHP ハンドラーとは何ですか?
最初に覚えておいていただきたいのは、あらゆる種類の Web サーバー (Apache、Nginx など) は、HTML、画像などの静的リソースをユーザーに送信するように設計されているということです。Web サーバー自体は動的スクリプト (PHP、Nginx など) を解釈できません。 Python など) 。 PHP プロセッサは、Web アプリケーション内の PHP コードを解釈し、それを HTML またはその他の静的リソースとして解釈し、解析結果を Web サーバーに渡し、最後に Web サーバーがそれをユーザーに送信するために使用されます。ほとんどの Web サーバーは PHP コードを解析できないため、PHP コードを解析できるプログラムが必要です。これが PHP プロセッサです。
mod_php
まず、PHP を Apache モジュールとして実行する方法を見てみましょう。 mod_php はすべての Linux バージョンのソフトウェア リポジトリで利用できるようになったので、インストールは簡単です。
PHP が Apache でモジュールとして実行される場合、PHP インタープリターは Apache プロセスに「埋め込まれます」。 Apache は外部 PHP プロセスを呼び出さないため、この方法により Apache と PHP の通信が向上します。ただし、この方法で PHP を実行すると、Apache が静的リソース (HTML など) のみを提供する場合でも、Apache の各子プロセスが mod_php をロードするため、通常よりも多くのメモリ オーバーヘッドが発生します。
この方法で実行するもう 1 つの欠点は、Apache でのみ機能することです。さらに、大規模な Web サイトには多くの静的リソースが含まれる可能性があり、これらの静的リソースは PHP プログラムによって解釈される必要がないため、この方法は小規模な VPS や大規模な Web サイトには適していません。
利点:
1. インストールとアップデートが簡単
2. 容量構成
短所:
1. Apache でのみ動作します
2. Apacheサブプロセスのメモリオーバーヘッドを増加しました
3. php.ini ファイルを変更した後、Apache を再起動する必要があります
高速CGI
FastCGI は、対話型プログラムと Web サーバー間の共通プロトコル インターフェイスであり、初期の CGI (Common Gateway Interface) の一種です。 CGI と比較して、FastCGI は Web サーバーとの対話コストを削減し、一度により多くのリクエストを処理できます。
Apache は mod_fcgid の形式で FastCGI を使用できます。 lighttpd、nginx、Cherokee、さらには Microsoft の IIS などの他の Web サーバーでも FastCGI を使用できます。 FastCGI を使用すると、複数のバージョンの PHP を同時にセットアップできるため、特定の状況では非常に役立ちます。
FastCGI は、suexec を利用して、独自の PHP インスタンスを持つさまざまなユーザーをサポートします。この機能は、共有環境のセキュリティを向上させるために特に重要です。 FastCGI はパフォーマンスを保証するだけでなく、Web サーバーのメモリ オーバーヘッドも削減します。
利点:
1. ほとんどの Web サーバーと互換性があります
2. mod_php
よりメモリ使用量が少ない
3. マルチバージョン PHP や suexec などの追加の設定項目
デメリット
1. 複雑な構成
2. あまり知られていません
PHP-FPM(FastCGIプロセスマネージャー)
PHP-FPM は、Web サーバーが PHP を使用する最新の方法であり、PHP FastCGI の別の実装でもあります。 PHP-FPM は、小規模な VPS や複数のサーバーで実行される Web アプリケーションに非常に役立ちます。同時に、FastCGI と互換性のある Web サーバーでも使用できます。
PHP-FPM を使用すると、管理者はクエリを失うことなく、PHP ワーカー プロセスを正常に停止および開始できます。これにより、クエリを失うことなく構成とバイナリを段階的に更新できるようになります。また、予期しない破損が発生した場合にプロセスを緊急に再起動することもできます。
利点:
1. ほとんどの Web サーバーと互換性があります
2. mod_php
よりメモリ使用量が少ない
3. マルチバージョン PHP や suexec などの追加の設定項目
デメリット
1. 複雑な構成
2. あまり知られていません
補足: Apache で PHP を実行する 4 つの方法
mod_php (DSO、動的共有オブジェクト)
CGI
スーパー
高速CGI
概要
内容が比較的抽象的でよくわかりませんが、今後の参考のために記録しておきます~:)
。