成都网站建设设计

将想法与焦点和您一起共享

LNMP中php-fpm的配置文件-创新互联

    首先我们要区分"/usr/local/php2/etc/php-fpm.conf"文件和"/usr/local/php2/etc/php.ini"文件这两者的区别。

创新互联建站-专业网站定制、快速模板网站建设、高性价比石河子网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式石河子网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖石河子地区。费用合理售后完善,10年实体公司更值得信赖。

    /usr/local/php2/etc/php-fpm.conf是php-fpm这个服务使用的文件,管理php-fpm服务的相关配置;/usr/local/php2/etc/php.ini是php的全局配置文件。

这节学习php-fpm的配置

编辑php-fpm配置文件

[root@LnmpLinux ~]# vim /usr/local/php2/etc/php-fpm.conf

发现内容很乱,我们给他整理一下,用我们已经整理好的配置写进去;

先清空配置内容,重新写入

[root@LnmpLinux ~]# > /usr/local/php2/etc/php-fpm.conf

[root@LnmpLinux ~]# vim /usr/local/php2/etc/php-fpm.conf


[global]

pid = /usr/local/php2/var/run/php-fpm.pid

error_log = /usr/local/php2/var/log/php-fpm.log

[www]

listen = /tmp/www.sock

user = php-fpm

group = php-fpm

pm = dynamic

pm.max_children = 50

pm.start_servers = 20

pm.min_spare_servers = 5

pm.max_spare_servers = 35

pm.max_requests = 500

rlimit_files = 1024


内容解析:

[www]里面是我们的pool(池),用ps aux |grep php-fpm可以查看pool;不同的pool显示不同的名字,我们的php-fpm可以启用多个pool,可针对不同网站域名,使用不同的pool;不同的pool意味着去监听不同的socket或不同的ip+port(端口),我们平时用的最多的是*.sock,默认的是127.0.0.1:9000

(1)listen = /tmp/www.sock

     监听的形式是socket,名字可以自定义,比如这个文件的名字www.sock;

(2)user = php-fpm

    group = php-fpm

    这个名字也可以自定义

(3)pm = dynamic (动态管理,主要针对下面的信息)

(4)

    pm.max_children = 50     # 子进程大50个;

    pm.start_servers = 20        # 最开始有20个启动;

  pm.min_spare_servers = 5     # 空闲最少有5个;

    pm.max_spare_servers = 35    # 空闲最多有35个;

    pm.max_requests = 500        # 一个子进程在它生命周期内,一共处理多少请求后自动销毁;

    rlimit_files = 1024         # 每个进程使用文件描述符的限制。

(5)如果把pm = dynamic改成pm = static,那么只有pm.max_children = 50 生效,

其他的都不生效,建议默认使用dynamic,可以动态分享资源。


问题:如果要建立多个pool怎么办?

答:只要复制[www]下的信息,粘贴在[www]所在pool的下面另起一段,

    可以改名为[www1],同时对应的sock也要更改为/tmp/www1.sock。

举例:

[global]

pid = /usr/local/php/var/run/php-fpm.pid

error_log = /usr/local/php/var/log/php-fpm.log

[www]

listen = /tmp/www.sock

user = php-fpm

group = php-fpm

pm = dynamic

pm.max_children = 50                                          原有的pool

pm.start_servers = 20

pm.min_spare_servers = 5

pm.max_spare_servers = 35

pm.max_requests = 500

rlimit_files = 1024

[www1]

listen = /tmp/www1.sock

user = php-fpm

group = php-fpm

pm = dynamic

pm.max_children = 50                                          新增的pool

pm.start_servers = 20

pm.min_spare_servers = 5

pm.max_spare_servers = 35

pm.max_requests = 500

rlimit_files = 1024

(以上配置为假设)

我们继续向下配置

检查有无错误

[root@LnmpLinux ~]# /usr/local/php2/sbin/php-fpm -t

重启php-fpm

[root@LnmpLinux ~]# /etc/init.d/php-fpm restart

[root@LnmpLinux ~]# ps aux |grep php-fpm

就能看到pool的信息,以及默认启动20个

如果过段时间没有请求,那么他就会一点点损耗,越来越少,最后销毁。

我们可以把不同的域名对应不同的pool(池),首先我们在/usr/local/nginx/conf/vhosts下面写多个域名,假如新增一个域名为111.conf的域名,并设定其对应的pool为www,

内容如下:

[root@LnmpLinux vhosts]# vim 111.conf

server

{

   listen 80;

  server_name www.111.com;

  index index.html index.htm index.php;

  root /data/www;                                            # 指向Discuz论坛目录下

   location ~ \.php$ {

    include fastcgi_params;

    fastcgi_pass unix:/tmp/www.sock;               # 指向的pool(池)

    fastcgi_index index.php;

    fastcgi_param SCRIPT_FILENAME  /data/www$fastcgi_script_name;   # 指向Discuz论坛目录下

  }

}

:以上是让我们了解不同的域名对应不同的Pool的形式和写法,那么我这样划分的好处是什么呢?

    第一点,好处是我们可以把权限分开,假如网站有漏洞,不小心被***,获得了我们的用户名和权限,***者只能用当前Pool的权限,从而提高安全性;

    第二点,假如[www]这个pool的请求量太大,down掉了,进程不够用,如果都是使用一个pool的话,一个网站挂掉了,那么其他网站也跟着挂掉了,会受到牵连。

    所以这样划分的好处是可以避免多个网站同时出问题。

我们也可以在php-fpm配置里做一些性能追踪的操作:

假如我们工作中遇到,访问网站,但是加载速度非常慢,我们可以在[www]池的最后面加上

slowlog = /tmp/www_slow.log    <--(名字可以自定义,但不同的pool指向不同的slowlog)

request_slowlog_timeout = 1

写好以上两行,可以通过slowlog排查网站慢的原因。

Apache可以设置open_basedir,同样php-fpm也可以设置:

在slowlog两行下面补充加上:

php_admin_value[open_basedir]=/data/www/:/tmp/

(这一行是安全选项)

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前文章:LNMP中php-fpm的配置文件-创新互联
网页URL:http://chengdu.cdxwcx.cn/article/coehih.html