本文共 3254 字,大约阅读时间需要 10 分钟。
一、php-fpm的pool (配置多个池子多个隔离站点)
#cd /usr/local/php-fpm/etc/#vim php-fpm.conf //在配置文件中增加配置第二个站点aming.com,配置文件中的[www]和[aming.com]相当于是两个不同的池子#/usr/local/php-fpm/sbin/php-fpm -t //检查有没有语法错误#/etc/init.d/php-fpm reload //重启 #ps aux |grep php-fpm //可以查看到[www]和[aming.com]两个不同的池子#vim aaa.com.conf //增加如下部分,这样两个站点就隔离开了定义多个池子的好处是:比如一个站点的代码有问题,导致这个站点资源耗尽,访问报502错误,而另一个站点不受影响,因为他们使用的是不同的池子#cd /usr/local/php-fpm/etc/#cat php-fpm.conf#vim php-fpm.conf //增加一行include,删除[www]和[aming.com]两个池子#mkdir /usr/local/php-fpm/etc/php-fpm.d/ //创建一个php-fpm.d/目录#cd /usr/local/php-fpm/etc/php-fpm.d/#vim www.conf //在php-fpm.d/目录下创建一个www.conf文件,把[www]这部分写进去#vim aming.conf //再创建一个aming.conf文件,把[aming.com]那部分内容写进去#/usr/local/php-fpm/sbin/php-fpm -t#/etc/init.d/php-fpm restart //重启php-fpm二、php-fpm慢执行日志#vi www.conf //配置文件中一般建议设置超过2秒钟记录日志#/usr/local/php-fpm/sbin/php-fpm -t#/etc/init.d/php-fpm reload#ls /usr/local/php-fpm/var/log/ //查看/usr/local/php-fpm/var/log/目录下有没有www-slow.log日志php-fpm.log www-slow.log#vim /data/wwwroot/test.com/sleep.php //在/data/wwwroot/test.com/目录下创建sleep.php ,写入如下内容,如下内容也可以写成一行不用换行排错方法:#vi /usr/local/php-fpm/etc/php.ini //在配置文件中搜索display_errors,将466行 display_errors = Off修改为 display_errors = On,这样修改的好处是直接可以做网页上查看到具体的错误是什么#/etc/init.d/php-fpm reload#curl -x127.0.0.1:80 test.com/sleep.php //访问下sleep.php#cat /usr/local/php-fpm/var/log/www-slow.log //查看下日志会记录慢执行日志的三、open_basedir#cd /usr/local/php-fpm/etc/php-fpm.d/#vi www.conf在最后一行添加 php_admin_value[open_basedir]=/data/wwwroot/test.com:/tmp/,注意这里的路径要写对,不然访问不到#/etc/init.d/php-fpm restart#curl -x127.0.0.1:80 test.com/sleep.php //访问状态码为200#vim /usr/local/php-fpm/etc/php.ini在线上生产环境上,display_errors = Off的状态应定义为Off,这样别人在浏览器看不到你的错误信息;error_log = php_errors.log; Log errors to syslog (Event Log on Windows).;error_log = syslogerror_log = /usr/local/php-fpm/var/log/php-errors.log //增加一行定义错误日志路径error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT //此行下面增加一行并注释掉此行error_reporting =E_ALL //新增加一行#grep error_log /usr/local/php-fpm/etc/php.ini //查找错误日志的定义路径; server-specific log, STDERR, or a location specified by the error_log; Set maximum length of log_errors. In error_log information about the source is;error_log = php_errors.log;error_log = syslogerror_log = /usr/local/php-fpm/var/log/php-errors.log; OPcache error_log file name. Empty string assumes "stderr".;opcache.error_log=#ls /usr/local/php-fpm/var/log/ //查看到此路径下没有php.ini中定义的错误日志路径php-fpm.log www-slow.log #touch /usr/local/php-fpm/var/log/php-errors.log //手动创建一个php-errors.log文件#chmod 777 /usr/local/php-fpm/var/log/php-errors.lo //权限777,不然不能写入错误日志#/etc/init.d/php-fpm restart //重启#curl -x127.0.0.1:80 test.com/sleep.php //访问下sleep.php#cat /usr/local/php-fpm/var/log/php-errors.log //查看错误日志四、php-fpm进程管理#vim www.conf[www]listen = /tmp/php-fcgi.socklisten.mode = 666user = php-fpmgroup = php-fpmpm = dynamic //定义进程启动方式(dynamic表示动态,static表示静态)只有pm设置为dynamic动态的,下面的配置才生效pm.max_children = 50 //定义最多启动的子进程数量pm.start_servers = 20 //开始启动的子进程数量,默认启动20个pm.min_spare_servers = 5 //空闲时最少有5个子进程在,到5个就会自动增加pm.max_spare_servers = 35 //空闲时最多有几个子进程,到35个就会自定清理pm.max_requests = 500 //每一个子进程最多可接受多少个请求,到达500就会自动退出子进程rlimit_files = 1024 //每个子进程打开的文件句柄个数转载于:https://blog.51cto.com/13669226/2130195