目次
FastCGI とは
Nginx FastCGI の動作原理
spawn-fcgi と PHP-FPM
PHP および PHP-FPM のインストールと最適化
インストール パッケージのダウンロード
查看FastCGI进程
配置Nginx来支持PHP
配置实例
启动nginx
测试Nginx对PHP的解析功能
优化Nginx中FastCGI
ホームページ バックエンド開発 PHPの問題 FastCGI を使用して PHP をインストールする方法

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

Jan 21, 2022 am 11:41 AM
fastcgi php

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 までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

今まで知らなかったことを後悔している 7 つの PHP 関数 今まで知らなかったことを後悔している 7 つの PHP 関数 Nov 13, 2024 am 09:42 AM

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? Apr 03, 2025 am 12:03 AM

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。

See all articles