设为首页 收藏本站
查看: 705|回复: 0

[经验分享] LNMP中php

[复制链接]

尚未签到

发表于 2018-12-18 12:42:57 | 显示全部楼层 |阅读模式
   首先我们要区分"/usr/local/php2/etc/php-fpm.conf"文件和"/usr/local/php2/etc/php.ini"文件这两者的区别。
      /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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-652865-1-1.html 上篇帖子: LNMP测试解析PHP 下篇帖子: PHP和Mysql的Timestamp互换
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表