## 配置php-fpm模板php
[root@localhost vhosts]# > /usr/local/php-fpm/etc/php-fpm.conf #清空html
[root@localhost vhosts]# vim /usr/local/php-fpm/etc/php-fpm.confmysql
[global]nginx
pid = /usr/local/php-fpm/var/run/php-fpm.pidsql
error_log = /usr/local/php-fpm/var/log/php-fpm.logvim
[www]服务器
listen = /tmp/www.sock并发
user = php-fpmtcp
group = php-fpmide
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
[www1]
listen = /tmp/www1.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
解释说明:
[global] 全局配置
pid = 进程id存放路径,必须写php所在路径
error_log = 错误日志路径,必须写php所在路径
[www] 资源池(支持多个池子,提供给不一样的nginx虚拟主机服务,资源平均分配)
listen = tcp、sock通讯方式(名字可自定义)
user = 用户必须存在
group = 组必须存在
;listen = 填写sock存在路径,使用.sock必须设置如下两行(/dev/shm/xxx.sock文件放入内存高并发会快)
;listen.owner = ↓
;listen.group = ↓
用来定义文件属主属组,由nginx配置文件中的user决定(为了.sock文件能够让nginx调用。不定义默认以root用户生成.sock文件,但运行时是由nginx设置的user运行,则会出现权限不够报502)
pm = dynamic 进程管理方式dynamic动态,随着访问量的增长而增长,减小而杀死空闲的进程
pm.max_children = 最大生成子进程数
pm.start_servers = 初始生成子进程数
pm.min_spare_servers = 最小空闲子进程数
pm.max_spare_servers = 最大空闲子进程数
pm.max_requests = 子进程接受php请求数,决定子进程的生命周期(最多接受的请求数,超出自动销毁,为了防止进程疲劳出现异常)
rlimit_files = 文件描述符限制
更加详细的解释:
动态、静态子进程pm = static/dynamic
若是选择static,则由pm.max_children指定固定的子进程数。
若是选择dynamic,则由如下参数决定:
pm.max_children ,子进程最大数
pm.start_servers ,启动时的进程数
pm.min_spare_servers ,保证空闲进程数最小值,若是空闲进程小于此值,则建立新的子进程
pm.max_spare_servers ,保证空闲进程数最大值,若是空闲进程大于此值,此进行清理
对于专用服务器,pm能够设置为static
## 检查语法
[root@localhost vhosts]# /usr/local/php-fpm/sbin/php-fpm -t
## 重启
[root@localhost vhosts]# /etc/init.d/php-fpm restart
## 查看进程
[root@localhost vhosts]# ps aux | grep php-fpm
解释说明:
出来了两个pool,一个www,一个www1,那么默认启动20个,若是等一下子没有请求过来,空闲的话,它就会一点一点地去直接销毁、杀掉,到最后会变得愈来愈少。
启动多个池子做用:能够把不一样的域名对应不一样的池子。
## 引用php-fpm资源池
[root@localhost vhosts]# vim /usr/local/nginx/conf/vhosts/111.conf
server {
listen 80;
server_name 111.com;
index index.html index.htm index.php;
root /data/www;
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/tmp/www.sock;
#fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/www$fastcgi_script_name;
}
}
解释说明:
fastcgi_pass 上面php-fpm.conf里若是是sock,这就是sock文件,要一致,不然会502
注意:配置多个资源池listen不能相同,而且在虚拟主机解析.php文件的fastcgi_pass项配置
## 慢查询日志
mysql配置慢查询日志为了最总执行缓慢、效率低的sql语句,找到后能够针对性的调优优化;
php一样也有执行慢的程序,能够定位php脚本具体那一行执行效率慢;
[root@localhost vhosts]# vim /usr/local/php-fpm/etc/php-fpm.conf
[www]
slowlog = /usr/local/php-fpm/var/log/slow.log
request_slowlog_timeout = 1
解释说明:
在某个资源池中配置
slowlog = 慢查询日志追踪性能
request_slowlog_timeout = 配合slowlog设置过滤时间
## open_basedir
[root@localhost vhosts]# vim /usr/local/php-fpm/etc/php-fpm.conf
[www]
php_admin_value[open_basedir]=/data/www/:/tmp/
解释说明:
php_admin_value[open_basedir]=dir:dir 锁定站点访问目录,多目录用:分割
一样在某个资源池中进行配置,注意锁定目录时候请指定资源池对应的站点目录