目录
什么是FastCGI
Nginx+FastCGI运行原理
spawn-fcgi与PHP-FPM
PHP与PHP-FPM安装与优化
下载安装包
配置安装环境
编译安装php和php-fpm
配置与优化php-fpm
管理FastCGI进程
查看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

本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑

FastCGI怎么安装PHP?Nginx与PHP(FastCGI)的安装、配置和优化

什么是FastCGI

FastCGI是一种可伸缩的、高速的在HTTP server和动态脚本语言间通信的接口。FastCGI也被众多脚本语言支持,包括PHP。

FastCGI是从CGI发展而来的。FastCGI接口方式采用C/S结构,可以将HTTP服务器和脚本解析服务器分离开,同时在脚本解析服务器上启动一个或多个脚本解析守护进程。

当HTTP服务器每次遇到动态城区时,直接交付给FastCGI进程执行,然后返回结果给浏览器,提高了系统的整体性能。


Nginx+FastCGI运行原理

Nginx并不支持对外部程序的直接调用或解析,所有外部程序都要通过FastCGI接口来调用。为了调用CGI程序,还需要一个FastCGI的wrapper,可以理解为用于启动另一个程序的程序。

这个wrapper绑定在某个固定的socket上,如端口或文件socket。当Nginx将CGI请求发送给socket时,通过FastCGI接口,wrapper接收到请求,派生一个新的线程,此线程调用解释器或外部程序处理脚本并读取返回数据,接着wrapper将返回数据通过FastCGI接口传给Nginx,最后Nginx再返回给客户端。


spawn-fcgi与PHP-FPM

FastCGI接口在脚本解析服务器上启动一个或多个守护进程动态解析脚本,这也成为FastCGI进程管理器,spawn-fcgi与PHP-FPM就是两个进程管理器。

spawn-fcgi:是HTTP服务器lighttpd的一部分,目前已是独立成为一个项目,一般与lighttpd配合使用来支持PHP。但是spawn-fcgi在高并发的时候会出现内存泄漏甚至自动重启FastCGI。

PHP-FPM:第三方的FastCGI进程管理器,它是作为PHP的一个补丁来开发的。在安装过程中也需要和PHP源码一起编译,也就是说PHP-FPM被编译到PHP内核,因此性能方面更加优秀。同时其处理高并发方面能力也好很多。

因为FastCGI的优点是把动态语言和HTTP server分离开,所以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解析请求;
登录后复制

管理FastCGI进程

启动FastCGI进程的方法如下:

/usr/local/php/sbin/php-fpm start
登录后复制

参数的含义如下:

start:启动php的fastcgi进程;
stop:强制停止php的fastcgi进程;
quit:平滑终止php的fastcgi进程;
restart:重启php的fastcgi进程;
reload:重新加载php的fastcgi进程,使进程不中断地加载配置文件;
logrotate:重新启用log文件;

查看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中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1663
14
CakePHP 教程
1420
52
Laravel 教程
1313
25
PHP教程
1266
29
C# 教程
1239
24
您如何在PHP中解析和处理HTML/XML? 您如何在PHP中解析和处理HTML/XML? Feb 07, 2025 am 11:57 AM

本教程演示了如何使用PHP有效地处理XML文档。 XML(可扩展的标记语言)是一种用于人类可读性和机器解析的多功能文本标记语言。它通常用于数据存储

在PHP API中说明JSON Web令牌(JWT)及其用例。 在PHP API中说明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

解释PHP中的晚期静态绑定(静态::)。 解释PHP中的晚期静态绑定(静态::)。 Apr 03, 2025 am 12:04 AM

静态绑定(static::)在PHP中实现晚期静态绑定(LSB),允许在静态上下文中引用调用类而非定义类。1)解析过程在运行时进行,2)在继承关系中向上查找调用类,3)可能带来性能开销。

php程序在字符串中计数元音 php程序在字符串中计数元音 Feb 07, 2025 pm 12:12 PM

字符串是由字符组成的序列,包括字母、数字和符号。本教程将学习如何使用不同的方法在PHP中计算给定字符串中元音的数量。英语中的元音是a、e、i、o、u,它们可以是大写或小写。 什么是元音? 元音是代表特定语音的字母字符。英语中共有五个元音,包括大写和小写: a, e, i, o, u 示例 1 输入:字符串 = "Tutorialspoint" 输出:6 解释 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。总共有 6 个元

什么是PHP魔术方法(__ -construct,__destruct,__call,__get,__ set等)并提供用例? 什么是PHP魔术方法(__ -construct,__destruct,__call,__get,__ set等)并提供用例? Apr 03, 2025 am 12:03 AM

PHP的魔法方法有哪些?PHP的魔法方法包括:1.\_\_construct,用于初始化对象;2.\_\_destruct,用于清理资源;3.\_\_call,处理不存在的方法调用;4.\_\_get,实现动态属性访问;5.\_\_set,实现动态属性设置。这些方法在特定情况下自动调用,提升代码的灵活性和效率。

PHP和Python:比较两种流行的编程语言 PHP和Python:比较两种流行的编程语言 Apr 14, 2025 am 12:13 AM

PHP和Python各有优势,选择依据项目需求。1.PHP适合web开发,尤其快速开发和维护网站。2.Python适用于数据科学、机器学习和人工智能,语法简洁,适合初学者。

PHP行动:现实世界中的示例和应用程序 PHP行动:现实世界中的示例和应用程序 Apr 14, 2025 am 12:19 AM

PHP在电子商务、内容管理系统和API开发中广泛应用。1)电子商务:用于购物车功能和支付处理。2)内容管理系统:用于动态内容生成和用户管理。3)API开发:用于RESTfulAPI开发和API安全性。通过性能优化和最佳实践,PHP应用的效率和可维护性得以提升。

PHP:网络开发的关键语言 PHP:网络开发的关键语言 Apr 13, 2025 am 12:08 AM

PHP是一种广泛应用于服务器端的脚本语言,特别适合web开发。1.PHP可以嵌入HTML,处理HTTP请求和响应,支持多种数据库。2.PHP用于生成动态网页内容,处理表单数据,访问数据库等,具有强大的社区支持和开源资源。3.PHP是解释型语言,执行过程包括词法分析、语法分析、编译和执行。4.PHP可以与MySQL结合用于用户注册系统等高级应用。5.调试PHP时,可使用error_reporting()和var_dump()等函数。6.优化PHP代码可通过缓存机制、优化数据库查询和使用内置函数。7

See all articles