ITPub博客

首页 > > > 部署LAMP发布PHP网站-编译

部署LAMP发布PHP网站-编译

作者:longmanma 时间:2019-12-12 17:48:59 0 删除 编辑

3)编译

[root@apache_251 php-7.3.4]# make

4)安装

[root@apache_251 php-7.3.4]# make install

5)拷贝一个配置文件

[root@apache_251 php-7.3.4]# cp /usr/src/php-7.3.4/php.ini-production /usr/local/php/etc/php.ini

三、PHP配置

关于PHP工作方式

作为模块运行

独立服务运行

1)作为apache模块运行

#if bind to apache

--with-apxs2=/usr/local/apache2/bin/apxs

AddType application/x-httpd-php .php

#if no mysql

./configure --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd

2)作为服务运行

思考问题 apache如何将PHP请求交给PHP呢 PHP是一门语言

思路 CGI fastcgi

CGI 公共网关接口 (COMMON GATEWAY INTERFACE),是一个协议

它的作用就是帮助服务器与语言通信. 就是apache和php进行通信,因为apache和php的语言不通,因此需要一个沟通转换的过程,而CGI就是这个

沟通的协议。

FastCGI 快速通用网关接口(FastCommonGatewayInterface),是CGI的升级版,一种语言无关的协议,FastCGI是用来提高CGI程序性能的

缺点:传统的cgi协议在每次连接请求时,会开启一个进程进行处理,处理完毕会关闭该进程,因此下次连接,又要再次开启一个进程进行处理,因此有多少个连接就有多少个cgi进程,这也就是为什么传统的cgi会显得缓慢的原因,因此过多的进程会消耗资源和内存。而fast-cgi则是一个进程可以处理多个请求,和上面的cgi协议完全不一样,cgi是一个进程只能处理一个请求,这样就会导致大量的cgi程序,因此会给服务器带来负担。

php-fpm:是一个实现了FastCGI(协议)的程序

是php提供给http前端服务器(web serve)的fastcgi协议接口程序,允许一个进程对多个连接进行处理,而不会立即关闭这个进程,而是会接着处理下一个连接。

PHP-CGI:PHP-CGI是php自带的Fast-CGI管理器。

PHP-CGI的不足:

php-cgi变更php.ini配置后需重启php-cgi才能让新的php-ini生效,不可以平滑重启。

直接杀死php-cgi进程,php就不能运行了。(PHP-FPM和Spawn-FCGI就没有这个问题,守护进程会平滑从新生成新的子进程。)

PHP-FPM(FastCGI Process Manager:FastCGI进程管理器)是一个PHPFastCGI管理器,对于PHP 5.3.3之前的php来说,是一个补丁包 ,旨在将FastCGI进程管理整合进PHP包中。如果你使用的是PHP5.3.3之前的PHP的话,就必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用。从PHP 5.4 RC2开始,php-fpm已经转正了

PHP-FPM特点

listen:The address on which to accept FastCGI requests.它支持TCP Socket和unix socket两种通讯协议。可设置listen = [::]:9000。

listen.allowed_clients:List of addresses (IPv4/IPv6) of FastCGI clients which are allowed to connect. 该配置项为逗号分隔的列表,如listen.allowed_clients = 127.0.0.1,172.17.0.5。

pm:Choose how the process manager will control the number of child processes. 该配置项设置FPM管理进程池的方式,包括static、dynamic、ondemand三种。

pm.max_requests:The number of requests each child process should execute before respawning. This can be useful to work around memory leaks in 3rd party libraries.设置每个子进程处理请求数的上限,对于处理第三方库中的内存泄漏很有用。

pm.status_path:The URI to view the FPM status page. 支持状态页面监控php-fpm

PHP-FPM工作原理:

1、Web Server启动时载入FastCGI进程管理器(IIS ISAPI或Apache Module)

2、FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可见多个php-cgi)并等待来自Web Server的连接。

3、当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。

4、FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。 在CGI模式中,php-cgi在此便退出了。

在上述情况中,你可以想象CGI通常有多慢。每一个Web请求PHP都必须重新解析php.ini、重新载入全部扩展并重初始化全部数据结构。使用FastCGI,所有这些都只在进程启动时发生一次。一个额外的好处是,持续数据库连接(Persistent database connection)可以工作。

#php-fpm服务设置 pool

每个pool可以监听不同的sock、tcp/ip,pool池是支持定义多个pool的。所有的网站使用同一个池,那其中一个网站发生一些故障,比如程序员写的一些程序有问题,就会把php资源耗尽,这样的结果就是其他站点的php也会502。所以有必要把每一个站点隔离开。每个pool的名字要唯一。

PHP服务配置

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2730/viewspace-3135878/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-12-18

  • 博文量
    492
  • 访问量
    12002