ホームページ  >  記事  >  バックエンド開発  >  FastCGI を使用して PHP をインストールする方法

FastCGI を使用して PHP をインストールする方法

藏色散人
藏色散人オリジナル
2022-01-21 11:41:212695ブラウズ

FastCGI を使用して PHP をインストールする方法: 1. php および php-fpm パッケージをダウンロードします; 2. インストール環境を構成します; 3. php および php-fpm をコンパイルしてインストールします; 4. 「/usr/local/」を渡しますphp/sbin /php-fpm start」と実行して、FastCGI プロセスを開始します。

FastCGI を使用して PHP をインストールする方法

この記事の動作環境: Windows 7 システム、PHP バージョン 7.1、DELL G3 コンピューター

FastCGI で PHP をインストールするにはどうすればよいですか? Nginx と PHP のインストール、構成、最適化 (FastCGI)

FastCGI とは

FastCGI とはHTTP サーバーと動的スクリプト言語間の通信用のスケーラブルな高速インターフェイス。 FastCGI は、PHP を含む多くのスクリプト言語でもサポートされています。

FastCGI は CGI から開発されました。 FastCGI インターフェイスは C/S 構造を採用しており、HTTP サーバーとスクリプト解析サーバーを分離し、スクリプト解析サーバー上で 1 つ以上のスクリプト解析デーモンを起動できます。

HTTP サーバーが動的な都市エリアに遭遇すると、その情報は FastCGI プロセスに直接配信されて実行され、その結果がブラウザーに返されるため、システム全体のパフォーマンスが向上します。


Nginx FastCGI の動作原理

Nginx は外部プログラムの直接呼び出しや解析をサポートしていません。すべての外部プログラムは FastCGI インターフェイスを通じて呼び出す必要があります。 CGI プログラムを呼び出すには、別のプログラムを起動するためのプログラムとして理解できる FastCGI ラッパーも必要です。

このラッパーは、ポートやファイル ソケットなどの固定ソケットにバインドされています。 Nginx が FastCGI インターフェイスを介して CGI リクエストをソケットに送信すると、ラッパーはリクエストを受信し、新しいスレッドを生成します。このスレッドは、インタプリタまたは外部プログラムを呼び出してスクリプトを処理し、戻りデータを読み取ります。その後、ラッパーは戻り値を渡します。データは FastCGI インターフェイスを介して Nginx に送信され、最終的に Nginx はそれをクライアントに返します。


spawn-fcgi と PHP-FPM

FastCGI インターフェイスは、スクリプト解析サーバー上で 1 つ以上のデーモン プロセスを開始し、スクリプトを動的に解析します。これは、FastCGI プロセス マネージャーとしても機能し、生成されます。 - fcgi と PHP-FPM は 2 つのプロセス マネージャーです。

spawn-fcgi: これは HTTP サーバー lighttpd の一部であり、現在は独立したプロジェクトとなっており、通常は PHP をサポートするために lighttpd と組み合わせて使用​​されます。ただし、spawn-fcgi はメモリ リークを引き起こし、同時実行性が高い場合には FastCGI を自動的に再起動することもあります。

PHP-FPM: PHP のパッチとして開発されたサードパーティの FastCGI プロセス マネージャー。インストールプロセス中に、PHP ソースコードと一緒にコンパイルする必要もあります。これは、PHP-FPM が PHP カーネルにコンパイルされることを意味し、パフォーマンスが向上します。同時に、高い同時実行性を処理する能力も大幅に向上しています。

FastCGI の利点は動的言語を HTTP サーバーから分離することであるため、Nginx と PHP/PHP-FPM は、Nginx フロントエンドへの負荷を共有し、Nginx を許可するために異なるサーバーにデプロイされることがよくあります。静的リクエストの処理に重点を置くため、PHP/PHP-FPM は PHP 動的リクエストを解析します。


PHP および PHP-FPM のインストールと最適化

インストール パッケージのダウンロード

php パッケージをダウンロードします: www.php.net、php-5.2.13 はtar.gz

php-fpm パッケージをダウンロードします: php-fpm.org、ここでは php-5.2.13-fpm-0.5.13.diff.gz

を使用します#注意: ほとんどの場合、php と php-fpm のバージョンが一致していることが最善です。そうでないと、互換性の問題が発生する可能性があります。

インストール環境の構成

必要な依存関係パッケージには次のものが含まれます:

gcc gcc-c libxml2 libxml2-devel autoconf libjpeg libjpeg-devel libpng libpng- devel freetype freetype-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel など。

システムのバージョンに応じて、依存するパッケージも異なります。

php と php-fpm をコンパイルしてインストールします

php のソース コード パッケージを解凍し、php-fpm をパッチとして php ソース コードに入力します。

tar zxf php-5.2.13.tar.gzgzip -cd php-5.2.13-fpm-0.5.13.diff.gz | patch -d php-5.2.13 -p1

コンパイルしてインストールし、同時に FastCGI のサポートを開始し、FastCGI モードでの fpm のサポートをアクティブにします。

cd php-5.2.13./configure --prefix=/usr/local/php --enable-fastcgi --enable-fpmmake && make install
cp php-ini-dist /usr/local/php/lib/php.ini

設定と最適化 php-fpm

php のメイン設定ファイルは php.ini;

php-fpm のメイン設定ファイルは php-fpm.confは、/usr/local/php/etc/ にある XML 形式のファイルです。一般的に使用されるタグは次のとおりです:

<value name="listen_address">127.0.0.1:9000</value>:表示配置FastCGI进程监听的IP地址和端口,默认为本地的9000;
<value name="display_errors">0</value>:表示是否显示php错误信息,默认为0表示不显示,设置为1表示显示错误信息;
<value name="user">nobody</value>:表示设置运行FastCGI进程的用户,需要和nginx配置文件中的用户一致;
<value name="group">nobody</value>:表示设置运行FastCGI进程的用户组,需要和nginx配置文件中的用户组一致;
<value name="max_children">5</value>:设置FastCGI的进程数,官方建议小于2G内存,可以只开启64个进程;4G以上可以开启200个进程;
<value name="request_terminate_timeout">0s</value>:设置FastCGI执行脚本的时间,默认0s,意味着无限执行下去;
<value name="rlimit_files">1024</value>:设置php-fpm打开文件描述符的限制,默认1024,这个值最好要和内核打开的文件数一致;
<value name="max_requests">500</value>:设置每一个进程最多处理多少个请求后会被关闭,默认500;
<value name="allowed_clients">127.0.0.1</value>:设置允许访问FastCGI进程解析器的IP地址,如果不设置IP地址,则无法接受nginx传来的php解析请求;

Manage FastCGI process

FastCGI プロセスを開始するメソッドは次のとおりです。

/usr/local/php/sbin/php-fpm start

パラメータの意味は次のとおりです:

start: php の fastcgi プロセスを開始します;

stop: php の fastcgi プロセスを強制停止します。
quit: php プロセスの fastcgi プロセスをスムーズに終了します;
restart: php の fastcgi プロセスを再起動します;
reload: プロセスが中断せずに設定ファイルをロードするように、php の fastcgi プロセスをリロードします;
logrotate: ログ ファイルを再度有効にします;

查看FastCGI进程

FastCGI进程启动后,可以通过命令“ps”或者“netstat”查看到相关进程信息,默认监听9000端口;

netstat -antlp | grep 9000ps -ef | grep php-cgi

配置Nginx来支持PHP

Nginx本身不会对PHP进行解析,要想让Nginx解析PHP请求,需要将PHP页面的请求交给FastCGI进程监听的IP地址和端口。Nginx通过反向代理的功能实现对PHP的解析。下面对Nginx解析PHP进行配置实例。

配置实例

      server {
        server_name www.ixdba.net ixdba.net;

        location / {
            index index.html index.php;
            root /web/www/www.ixdba.net;
        }

        location ~ \.php$ {
            root                html;
            fastcgi_pass        127.0.0.1:9000;
            fastcgi_index       index.php;
            fastcgi_param       SCRIPT_FILENAME  html$fastcgi_script_name;
            include             fastcgi_params;
        }
      }

location指令,将以“.php”结尾的文件都交给“127.0.0.1:9000”来处理,这里的IP和端口就是FastCGI进程监听的IP和端口。

fastcgi_param指令,指定放置php动态程序的主目录,也就是$fastcgi_script_name前的路径,这里是/usr/local/nginx/html。

fastcgi_params文件是FastCGI进程的一个参数配置文件,安装Nginx后默认生成,这里将它包含进来。

启动nginx

/usr/local/nginx/sbin/nginx

测试Nginx对PHP的解析功能

在/usr/local/nginx/html,也就是上面的php动态程序主目录下,创建一个phpinfo.php文件,内容如下:

<?php phpinfo(); ?>

然后通过浏览器访问http://www.ixdba.net/index.html,将会显示Nginx欢迎页;
浏览器访问http://www.ixdba.net/phpinfo.php,会出现php安装及功能列表信息;


优化Nginx中FastCGI

添加一些优化指令可以让php环境高效稳定的运行,下面给出一些实例,添加到nginx配置文件的http层级:

为fastcgi缓存指定文件路径,目录结构等级、关键字区域存储时间和非活动删除时间;

fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=Test:10m inactive=5m;

连接到后端fastcgi的超时时间;

fastcgi_connect_timeout 300;

向fastcgi传送请求的超时时间,是已经完成两次握手后向fastcgi传送请求的超时时间;

fastcgi_send_timeout 300;

接收fastcgi应答的超时时间,是已经完成两次握手后接收fastcgi应答的超时时间;

fastcgi_read_timeout 300;

读取fastcgi应答第一部分需要缓冲区的大小;

fastcgi_buffer_size 64k;

本地需要多少和多大的缓冲区来缓冲fastcgi的应答请求;

fastcgi_buffers 4 64k;

默认值为fastcgi_buffers的两倍;

fastcgi_busy_buffers_size 128k;

写入缓存文件时使用多大的数据块,默认为fastcgi_buffers的两倍;

fastcgi_temp_file_write_size 128k;

开启fastcgi缓存并为其指定一个名称,可以有效降低cpu负载,防止502错误。

fastcgi_cache TEST;

fastcgi_cache_valid指定应答代码的缓存时间。
将200, 302的应答时间缓存1小时;

fastcgi_cache_valid 200 302 1h;

将301应答缓存一天;

fastcgi_cache_valid 301 1d;

其余应答缓存1分钟;

fastcgi_cache_valid any 1m;

   

以上がFastCGI を使用して PHP をインストールする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。