搜索
首页后端开发PHP问题FastCGI怎么安装PHP

FastCGI怎么安装PHP

Jan 21, 2022 am 11:41 AM
fastcgiphp

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

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

热工具

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。