FastCGI怎么安装PHP
FastCGI安装PHP的方法:1、下载php和php-fpm包;2、配置安装环境;3、编译安装php和php-fpm;4、通过“/usr/local/php/sbin/php-fpm start”启动FastCGI进程即可。
本文操作环境: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中文网其他相关文章!

热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

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

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

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

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

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

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

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

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

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

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