我们已经准备好了,你呢?

2026我们与您携手共赢,为您的企业形象保驾护航!

1) 目前各种服务器HTTP 对PHP的支持一共有三种:

a.通过内置的模块来实现,

例如的,类似的内置的可以对perl支持;

采用CGI技术实现,这类似于之前Perl所用的CGI方法。然而,这种方法存在性能不佳的问题,因为服务器每次遇到这些脚本时,都需要重新启动脚本解析器来执行脚本,并将结果反馈给服务器。此外,它还相对不安全。因此,这方面的应用已经变得极为罕见。

最新涌现了一种名为某种技术。这种技术实际上是对CGI技术的优化升级。它通常采用客户机/服务器架构,脚本处理器通常启动一个或多个进程,每当遇到脚本时,便直接将任务交给相应的进程执行,并将处理结果(通常是HTML格式)反馈给浏览器。

该种方法在处理大流量频繁请求时,存在一个问题,即脚本处理器的进程可能会因超负荷而变得运行缓慢,严重时甚至会出现内存泄漏的情况。

然而,相较于内置模块,其优势在于与脚本解析器完全独立,各自承担职责,这使得服务器不再庞大,能够专注于静态文件的响应或直接将动态脚本解析结果反馈给用户端。因此,采用内置模块的方式,性能有时可显著提升,甚至可能高达5至10倍。

目前流行的使用方法主要有两种栈配置:一种是采用+spawn-fcgi;另一种则是选用nginx搭配PHP-FPM(同时也可以选择spawn-fcgi)。

这两者之间还可以进行优劣的区分,spawn-fcgi作为其中的一部分,通常在安装后便会启用对PHP的支持。然而,有用户反映,在面临高并发访问时,spwan-fcgi可能会出现内存泄漏的问题,甚至导致自动重启。若PHP脚本处理器出现故障,此时用户若尝试访问,很可能会遭遇无法显示内容的白屏现象(即PHP无法正确解析或发生错误)。

另一个:首先,nginx自身并未集成(spawn-fcgi),故而它属于轻量级服务器;为了解析PHP,必须依赖第三方处理器。从这个角度出发,nginx显得非常灵活,能够与任何第三方提供的解析处理器建立连接,轻松实现PHP的解析(在nginx.conf配置文件中这一操作相当简便)。

nginx支持spawn-fcgi(需一并安装,但需为nginx预留端口,一些较早的博客提供了相应的安装指导),然而,鉴于spawn-fcgi存在用户逐渐意识到的不足,现在使用nginx与spawn-fcgi组合的情况正逐渐减少。

spawn-fcgi存在不足,因此市面上涌现了一种新型的第三方PHP处理器,即PHP-FPM(详情请参阅相关资料)。相较于spawn-fcgi,PHP-FPM具备以下优势:,,。

它源自PHP的补丁开发,安装时需与PHP源码同步编译,即嵌入到PHP核心中,故在性能上更为卓越。

在处理高并发任务时,该系统展现出比spawn-fcgi更佳的表现,其特色之一是处理器不会自动重启。至于具体所采用的算法和设计,相关信息可供深入了解。

故而,正如之前所述,鉴于nginx的轻便性与适应性,其性能优势愈发凸显,故而越来越多的用户开始采纳这一搭配:nginx配合PHP或PHP-FPM。

3) 因此总结:

目前在这块基本可以看到有三种stack比较流行:

>+

>+spawn-fcgi

>nginx+PHP-FPM

三者中,后两者在性能上或许略胜一筹,然而,鉴于其拥有众多模块和丰富功能,目前来看,它们依旧占据着主导地位。据有人测试,nginx与PHP-FPM的组合在高并发环境下,性能可能提升至原来的5至10倍,因此,选择nginx+PHP-FPM的用户正日益增多。

下面着重介绍stack:

关于+和nginx+PHP-FPM的安装与设置,对于spawn-fcgi这一部分,由于我个人并不常使用,因此在此不做详细说明;如有兴趣,可以自行查阅相关资料。

1.+模式:

我们很久一段时间使用经典的+:

PHP的兼容性是通过特定的模块实现的。若您是通过源代码编译并安装了PHP,为了确保对PHP的支持,您需要在./步骤中明确指出使用--with-apxs2=/usr/local//bin/apxs,以此指示编译器使用该路径下的/apxs来处理PHP5的解析功能。

在最终阶段,我们能够观察到动态链接库的.so(模块)被复制到了安装目录的相应子目录中,同时,我们还需在httpd.conf配置文件中加入特定指令,以便动态加载该.so模块,进而实现对PHP功能的支持。

该模式堪称经典,因此在此处对安装环节的描述将予以省略,毕竟这部分相对较为简便。

2)这里之所以仍旧列出来+来讨论,是因为:

阅读过前文内容后,我们了解到nginx通常具备两种功能,以及它作为反向代理服务器的角色。

我们已阐述如何在前端设置nginx作为代理服务器,同时在后端部署多个实例,以此构建起一个机群系统架构。

所以,在实际的生产环节,我们依然可以保留那个经典的App,同时仅用nginx作为前端代理,以实现代理和负载均衡的功能。鉴于此,我建议继续采用nginx(一个或多个)加多个的架构模式。

2. nginx+PHP-FPM:

经过上述分析,尽管我们依旧可以使用加号来处理PHP,并且静态文件和负载均衡任务由位于前端的nginx负责,然而,鉴于nginx与PHP-FPM各自的优势,nginx与PHP-FPM的结合在性能上已经显著超越了单纯使用加号。

因此,众多人逐渐舍弃了该组合,转而全面采用nginx与PHP-FPM来处理PHP相关任务。

因此,目前涌现出一个新的术语LEMP,它由Linux、nginx、MySQL和PHP这四个组件组成,正逐渐取代沿用多年的LAMP组合。

2)甚至出现一种新的 :

那里已无隐秘的轮廓,这一切都交由nginx处理。nginx以其轻巧、高效和强大的适应性,足以应对所有挑战。

鉴于PHP-FPM采用客户/服务器架构,故而前端继续使用nginx进行负载均衡处理;至于之前负责后端的服务器,我们无需再进行安装,只需对PHP进行重新编译并安装,使其能够以PHP-FPM模式运行支持。

在nginx配置中,需将客户的PHP请求分流至后台多个运行中的PHP-FPM进程,由这些进程进行处理,处理完毕后再将结果返回给nginx,最终呈现给用户。这一流程实际上是可以省略的。

3) 下面我们具体来介绍如何来安装和简单配置

nginx+PHP+PHP-FPM+MySQL.

进行nginx、PHP、PHP-FPM和MySQL的安装与设置

1) 安装MySQL:

之所以在最初阶段必须部署MySQL,其目的是为了在后续进行PHP的编译和安装过程中,能够便捷地选择并启用对MySQL的兼容性支持。

我们知道PHP对MySQL的支持是通过PHP扩展实现的。

可以采用源代码进行安装,然而我个人的做法是,直接选取并安装了他们提供的二进制安装包。

$sudo apt-get mysql-

安装的时候需要提示设置root密码;

之后使用

$ -tap |grep mysql

看看是否正常运行;

2) 安装PHP和PHP-FPM:

我们之前已经提及PHP-FPM是针对PHP的升级版本,因此它必须与PHP一同进行编译和安装。在此,我所采用的PHP版本是5.2.10。

a. 下载安装包:

从 下载:php-5.2.10.tar.gz

访问PHP-FPM的官方网站,下载文件:php-5.2.10-fpm-0.5.13.diff.gz。

注意两个版本尽量相同(不相同可能出错,我自己没试过)。

b. 解压缩打补丁

$tar xzvf php-5.2.10.tar.gz

使用gzip命令对php-5.2.10-fpm-0.5.13.diff.gz文件进行解压,然后通过patch命令在php-5.2.10目录下应用解压后的补丁文件,并指定-p1选项。

若遇到命令shell不熟悉的指令,可通过apt-get进行安装,亦或寻求解决方案。

c. 配置编译环境:

在安装之前可能需要安装几个依赖包:

sudo apt-get -dev

sudo apt-get -dev

不安装无妨,若遇到问题,可依据错误提示逐一查找所需的依赖包,关键是要记录下每一步的操作,毕竟不同用户的系统配置各不相同。

$cd php-5.2.10

安装过程中,请确保指定路径为“/usr/local/php”,并使用参数“--=/usr/local/php --- ---fpm --with-mysql --with- --with-”进行配置。

在此,我们选择将PHP安装于/usr/local/php目录,若未进行此配置,系统将默认安装至/usr/local目录。我个人认为这样做并不理想,因为这样做会导致make命令在复制文件时分散到local目录下的多个子目录中。日后若需彻底卸载且无法使用make命令,将会带来不便。将软件部署至/usr/local/php目录,若需移除php,只需直接删除该目录即可。

---和---fpm分别设置支持和PHP-FPM的选项;

使用选项--with-mysql和--with-,可以将MySQL扩展编译进PHP核心,进而允许我们在PHP代码中调用MySQL及相应库的函数来操作MySQL数据库。

在此过程中,我们必须留意一点,那就是切勿配置为--with-apxs2=/usr/local//bin/apxs,这一设置旨在指示PHP以模块形式编译以实现支持。一旦采用此选项进行编译安装,系统将无法启动,并会显示错误信息:

在/usr/lib目录下的.so文件中,存在一个错误提示:冒号后跟-fpm-event-base-free。

所以,若我们选择以PHP-FPM模式编译PHP以实现支持,那么它就与另一项技术无法兼容,换言之,若我们选择了nginx、PHP以及PHP-FPM的组合,那么这里的PHP将无法与那个技术搭配使用。

若您确实需要继续使用,那么请独立进行PHP的编译与安装。在编译过程中,需在当前目录下执行命令,指定参数为`--with-apxs2=/usr/local/bin/apxs`。同时,请确保不要对PHP-FPM进行任何补丁操作。

此外,若在此过程中发生失误,往往是因为缺少必要的依赖库,只需根据错误提示安装相应的依赖包即可解决问题。

d. 编译:

$make all

注意这里尽量使用make all,而不要仅仅是make

e. 安装:

$make

f. 拷贝php.ini文件:

使用sudo命令,将php.ini-dist文件复制到/usr/local/php/lib目录下,并重命名为php.ini。

将php.ini文件拷贝到如上位置;

一旦安装顺利完成,我们便成功将支持PHP-FPM的PHP软件安装到了/usr/local/php这个目录中。

3) 配置PHP和PHP-FPM:

首先,可以在/usr/local/php/bin目录下运行php -v命令,以此检查PHP是否正常运行。

a. 配置php.ini:

位于/usr/local/php/lib下

这里一般没有严格需要配置什么,可以按照自己要求进行配置。

b. 配置PHP-FPM这个PHP解析器:

我们之前提到过,PHP-FPM解析器采用客户/服务器架构,其配置文件存放于/usr/local/php/etc目录下的php-fpm.conf文件中。

$cd /usr/local/php/etc

$sudo vi php-fpm.conf

该文件是一个xml文件,只需要修改:

Unix user of

www-data

Unix group of

www-data

注意去掉两边的注释,否则之后php-fpm启动不了;

c. 配置完之后,就可以启动PHP-FPM:

启动位于/usr/local/php/sbin目录下的php-fpm服务程序。

我们之前提到,模式与CGI模式存在差异,它要求有一个进程持续在后台运行,以解析PHP请求。PHP-FPM便是这样一个进程。在php-fpm.conf配置文件中,我们可以调整其监听的IP地址和端口号,其默认设置为127.0.0.1:9000。这意味着它专门监听9000端口的数据请求,解析这些请求,并将结果反馈给请求方。

这一理念与我们先前阐述的观点不谋而合。在服务器与PHP解析模式(即PHP-FPM)之间实现了分离,当PHP请求出现时,便会自动转交给PHP-FPM进行处理并给出响应。通过实现与PHP解析器的彻底分离,有效减轻了服务器负担,从而释放出更多资源以应对并发的请求处理。实际上,这也是nginx相较于其他服务器表现更优的一个重要原因。

d. 检查php-fpm是否运行正常:

$ps ax|grep fpm

4)安装和配置nginx:

在之前的文章中,我们已对nginx的安装步骤进行了详细阐述,并指导了如何将其配置为负载均衡器。对此感兴趣的朋友,不妨查阅相关内容。

a. nginx的安装很简单:

从官网下载安装包:nginx-0.7.61.tar.gz

$tar xzvf nginx-0.7.61.tar.gz

$cd nginx-0.7.61

$./

默认的安装位置设定为/usr/local/nginx,若您对此有所疑虑,可以自行通过使用--=/usr/local/nginx这一配置选项进行调整。

$make

$sudo make

b. 思想:

我们之前所写的文章中提到,nginx的应用极为灵活多变,有人将其比作该领域的瑞士军刀,实际上确实如此:它不仅性能卓越,而且操作方式丰富多样。

各种操作方式均依赖配置文件来完成,故而,要想熟练运用nginx,除了需理解其架构理念,还需精通如何对nginx.conf文件进行有效配置。

在此,我们重点针对nginx.conf配置文件进行优化,目的是实现php-fpm对PHP的解析功能。需注意的是,nginx自身并不具备解析PHP的能力,这一点需与通过内置模块实现PHP解析的nginx相区分。实际上,nginx会将针对PHP页面的请求转发至后台监听在127.0.0.1:9000端口的php-fpm进程,而php-fpm具备处理PHP代码的职能。

所以,若将php-fpm视为一个应用程序,那么nginx在此扮演的角色实际上仍是一个反向代理服务器。这与我们之前所提及的,通过配置文件将PHP请求转发至后台监听服务器的做法,在理念上几乎是一致的。

c. 确保对放置于/usr/local/nginx/conf文件夹中的nginx.conf文件及其相关配置进行严格限制。

>nginx.conf配置:

$cd /usr/local/nginx/conf

$sudo vi nginx.conf

从上往下对默认的配置文件进行修改:

用户设置为www-data;这一点需与php-fpm配置中指定的用户相匹配。

2. 2; 可以设置更多,这个选项和之后的  1024;

共同设定每个进程所能支持的最大连接量,从而确保此处能够处理高达2*1024的并发请求。

3. 在 {

       8080;

若您已安装并使用该软件且其占据了80端口,请将其端口更改为8080,否则系统将无法成功启动。

正如前文所述,我们实际上只需配置nginx,使其将PHP的请求转交给后台的php-fpm处理,而php-fpm具备解析PHP代码的能力。

其实还是充当反向代理的作用;

将PHP代码传输至本地地址127.0.0.1的端口9000上。

~ \.php$ {

root           html;

   127.0.0.1:9000 ;

  index.php;

    html/$;

注意    html/$;

之后,需将此位置设定为存放PHP脚本的区域,以实例说明,我们可以在/usr/local/nginx/html这一目录中建立一个.php文件。

包含代码

$sudo vi .

配置参数文件,具体可以参考

基本上可以使用默认的该文件,不需要修改。

5) 运行nginx:

执行命令:sudo,进入目录:/usr/local/nginx/sbin,启动程序:nginx。

然后在浏览器中查看

系统默认展示位于/usr/local/nginx/html文件夹中的index.html文件内容,并将其发送至Nginx服务器。

>然后查看 ,相当于访问html目录下的.php页面,

若一切正常,该页面将呈现出来,其中可观察到API一项,它包含CGI/,并以此种方式执行。

若在执行上述步骤时遇到问题,通常是因为nginx的配置文件存在错误,此时可以尝试查找相应的解决方案,一般都能找到解决方法。找到后,应对nginx.conf文件进行相应的修改。

之后需要重启nginx,可以执行:

使用命令sudo执行kill操作,通过cat命令读取/usr/local/nginx/logs目录下的nginx.pid文件,进而关闭nginx服务。

执行命令sudo,进入/usr/local/nginx/sbin目录,运行nginx,以重新启动nginx服务。

6)设置开机自启动:

在此情况下,若您打算将相关脚本加入开机自启的列表,则需查找nginx及php-fpm的初始化脚本(需要注意的是,php-fpm的初始化脚本即是init脚本,无需额外寻找),随后将其复制至/etc/init.d文件夹中。

简单的方法,设置rc.local:

$sudo vi /etc/rc.local

在exit 0之前添加:

启动位于/usr/local/php/sbin目录下的php-fpm服务。

/usr/local/nginx/sbin/nginx

这样开机自动启动nginx和php-fpm。

7) 使用nginx和php-fpm实现  :

与nginx在多台应用代理上实施负载均衡的做法相似,我们同样可以实现对多台php-fpm的负载均衡配置。

在Nginx配置中,若要加载,请采用以下这种类型:

{

127.0.0.1:9000 ;

127.0.0.1:9001 ;

198.192.0.1:9000 ;

198.192.0.2:9000 ;

198.192.0.3:9000 ;

~ \.php$ {

.app;

/var/www/$;

/etc/nginx/.conf;

4. 总结:

三种常用模式:

+;

+spawn-fcgi;

nginx+PHP-FPM

我们可以使用到生产环境中的:

0) 如果不是 的话:

尽管可以选用上述任一方案,但众多测试数据都显示nginx搭配PHP-FPM在性能上表现卓越,而且它还拥有众多经典模块,例如对特定文件格式的支持。

如果构建 的话:

1) nginx作为反向代理服务器,后台多台+。

nginx负责处理静态文件,同时还能应对对PHP并发请求的处理,并实现后台多台应用服务器的负载均衡。

2) nginx作为反向代理器,后台多台PHP-FPM

nginx负责处理静态文件的请求,并且能够将PHP并发请求转发至后台的php-fpm服务进行解析处理。

此外,探讨如何更高效地运用这一轻量级且性能卓越的瑞士军刀——nginx,关键在于对nginx.conf的配置方法,详细信息请参阅:

此外,针对PHP所兼容的各类缓存功能,本系统尚未配置,如有需要,您可自行进行安装。

二维码
扫一扫在手机端查看

本文链接:https://www.by928.com/10731.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线