FastCGIモードでphp 7を実行
4378 ワード
よく知られているように、phpと組み合わせるweb serverは2つあり、apacheとnginxは、serverをコンパイルした後、phpファイルを正常に解析するために構成する必要があります.次に、2つのサーバがphpファイルをどのように解析するかを見てみましょう.
Nginx
一、主流のnginx+phpの運行原理は以下の通りである. nginxのworkerプロセスは、nginxへの各要求のネットワーク要求を直接管理する. phpは、ネットワーク全体でphpがcgiプログラムの役割であるため、php−fpmというプロセス管理プログラムを用いて要求されたphpプログラムを管理する.php-fpmプログラムもnginxのようにポートを傍受し、masterとworkerプロセスが必要です.workerプロセスは、各phpプロセスを直接管理します. fastcgiについて:fastcgiはプロセスマネージャであり、cgiプロセスを管理します.市販されているfastcgi機能を実現したプロセスマネージャは、php-fpmの1つです.さらにphp-fpmはfast-cgiプロセス管理サービスとして、ポートを傍受し、一般的に9000ポートをデフォルトで傍受し、本機を傍受する、すなわち本機からのポート要求のみを受信するので、通常、コマンド が得られる. fastcgiのプロファイルについては、現在fastcgiのプロファイルはnginxに一般的に配置する.conf同級ディレクトリの下で、プロファイル形式は、一般的に2種類あります: phpリクエストを処理する必要がある場合、nginxのworkerプロセスは、php−fpmのworkerプロセスにリクエストを渡して処理します.すなわち、最初に述べたnginxはphpを呼び出しますが、厳密にはnginxがphpを間接的に呼び出します.
二、nginx構成はhostの簡単な構成を見てみましょう.最初の括弧 を表す. を表す. を導入
以上が最も簡潔なnginx起動phpスクリプトの最も簡単な構成であり、nginxを再起動した後、/home/mark/wwwディレクトリの下にhelloを作成する.phpファイルは、
Apache
nginxに比べてapacheはfastcgiを構成するのが少し面倒で、SetHandler/ProxyPassMatch/ProxyPass/Mod_Rewriteはすべてできますが、ここでは公式に推奨されているProxyPassMatchの方法だけを話します.ロードエージェントモジュール 仮想ホストの構成 をサポート
再起動apache、テスト下、ok~
Nginx
一、主流のnginx+phpの運行原理は以下の通りである.
netstat -nlpt|grep php-fpm
を入力すると、tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 1078/php-fpm
fastcgi.conf
とfastcgi_params
.異なるnginxバージョンには異なるプロファイルがあります.この2つのプロファイルにはfastcgi_という非常に重要な違いがあります.paramesファイルには次の構成が欠けています.fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_を開くことができます.paramesファイルに上記の行を加えて、構成を使用する場所で動的に追加することもできます.この構成を有効にします.二、nginx構成はhostの簡単な構成を見てみましょう.
server {
listen 80;
server_name example.com;
location ~ \.php?.*$ {
root /home/mark/www;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
server{ }
は言うまでもなく、独立したserver listen 80
は、このserverの傍受8011ポートlocation ~ \.php?.*${ }
は、対応するuriに一致するlocationを表し、一致するuri要求に対してカスタムの論理、構成を行うために使用される.ここのlocationは、すべてのバンドにマッチしています.phpのuriリクエストroot /home/mark/www
リソースルートディレクトリを要求し、locationの下に一致するuriから/home/mark/wwwフォルダに同じ名前のリソースを探すように伝えます.fastcgi_pass 127.0.0.1:9000
は、location内に入ったuri要求をcgiプログラムと見なし、9000ポートに要求を送信しphp−fpmに渡す.6.fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
動的に1行のfastcgi構成を追加し、構成内容はSCRIPT_FILENAME
で、管理プロセス、cgiスクリプト名を通知します.私のnginxにはfastcgiしかないのでparamsファイル、fastcgiがありません.confファイルなのでphp-fpmにSCRIPT_を知らせるFILENAMEの具体的な値は、この行の構成を動的に追加する必要があります.7、include fastcgi_params
fastcgiプロファイル以上が最も簡潔なnginx起動phpスクリプトの最も簡単な構成であり、nginxを再起動した後、/home/mark/wwwディレクトリの下にhelloを作成する.phpファイルは、
と入力して保存し、ブラウザでlocalhost/hello.php
にアクセスすると、hello worldがWebページに表示されます.Apache
nginxに比べてapacheはfastcgiを構成するのが少し面倒で、SetHandler/ProxyPassMatch/ProxyPass/Mod_Rewriteはすべてできますが、ここでは公式に推奨されているProxyPassMatchの方法だけを話します.
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
DocumentRoot "/home/mark/www"
ServerName test.com
DirectoryIndex /index.php index.php
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/home/mark/www/$1
Options none
AllowOverride All
Require all granted
再起動apache、テスト下、ok~