静态网站:nginx服务器能处理的是静态元素 .html .jpg .mp4 .css
1.ngx_fastcgi_module
处理动态请求的接口
nginx 通过ngx_fastcgi_modul模块 链接 php-fpm处理动态请求。
2.php-fpm
PHP-FPM(FastCGI Process Manager:FastCGI进程管理器)
是一个PHP FastCGI管理器。
PHP通过php-fpm接收前台nginx的动态访问的请求,比如向后端Mysql进行查询请求后,将查询结果返回给前台nginx。
PHP-MYSQL
php-mysql:是php连接mysql的接口程序。
3.php-fpm初始化配置
1.了解php-fpm相关配置文件
1.核心配置文件
vim /etc/php.ini
date.timezone = PRC 设置PHP的时区
open_basedir 设置PHP脚本允许访问的目录.
open_basedir 将PHP所能打开的文件限制在指定的目录树中,包括文件本身。当程序要使用例如fopen()或file_get_contents()打开一个文件时,这个文件的位置将会被检查。当文件在指定的目录树之外,程序将拒绝打开。
2.全局配置文件
vim /etc/php-fpm.conf
pid = /run/php-fpm/php-fpm.pid 设置pid文件的位置
error_log = log/php-fpm.log 记录错误日志的文件
log_level = notice 记录日志的等级
alert(必须立即处理), error(错误情况), warning(警告情况), notice(一般重要信息), debug(调试信息). 默认: notice.
process.max = 3 默认没设置
process.max: 控制子进程最大数的全局变量, 后边的设置子进程数量的指令受到这个值的限制, 0表示无限制
daemonize = yes 将fpm转至后台运行
3.扩展配置文件
vim /etc/php-fpm.d/www.conf
user = nginx 设置用户和用户组
listen.allowed_clients = 127.0.0.1 允许访问FastCGI进程的IP,设置any为不限制IP,如果要设置其他主机的nginx也能访问这台FPM进程,listen处要设置成本地可被访问的IP。默认值是any。每个地址是用逗号分隔. 如果没有设置或者为空,则允许任何服务器请求连接
slowlog = /var/log/php-fpm/$pool-slow.log 开启慢日志
pm=dynamic 动态模式进程管理开启
start_servers=5 最初开启多少进程
min_spare_server =5 最小的多余进程数。最少空闲。用户访问会消耗掉进程。然后为了满足后续游湖随时随地开启进程保持空闲数为5。
max_children = 50 最大进程数
max_children是PHP-FPM Pool 最大的子进程数,他数值取决于你的服务器内存。 假设你打算给10G内存给当前配置的PHP-FPM Pool,一般一个PHP请求占用内存10M-40M,我们按站点每个PHP请求占用内存25M,这样max_children = 10G/25M = 409。所以,这个值可以根据情况算出来
max_spare_servers=10 最大的多余进程。大规模断开后,高并发访问过后,还剩多少。
max_requests = 500 每个子进程能响应的请求数量,到达此数字,该PHP进程就被释放掉了。max_requests是每个子进程重生之前处理的请求数, 默认值为unlimited(默认为1024),可以设置小一点(如500左右),这样可以避免内存泄露带来的问题
2.初始化php-fpm
vim /etc/php-fpm.d/www.conf
设置生产环境下常用数值。
dynamic:启动动态管理模式
start_servers:初始启动32个进程
max_children:最大进程数。(子进程数会在最大和最小数范围中变化)512个进程数是在大于16G内存的前提下。
min_spare:随着用户访问的增加,保持32个空闲进程。
max_spare:随着用户离去。杀死大量空闲进程来节约资源。
max_requests:是每个子进程重生之前处理的请求数, 默认值为unlimited(为1024)
关于max_children
max_children是PHP-FPM Pool 最大的子进程数,他数值取决于你的服务器内存。 假设你打算给10G内存给当前配置的PHP-FPM Pool,一般一个PHP请求占用内存10M-40M,我们按站点每个PHP请求占用内存25M,这样max_children = 10G/25M = 409。所以,这个值可以根据情况算出来
systemctl restart php-fpm
3.启动php状态监控页面功能
1.启动测试页功能
vim /etc/php-fpm.d/www.conf
pm.status_path = /php_status
2.nginx配置页面转发
vim /etc/nginx/conf.d/default.conf
location = /php_status {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
include fastcgi_params;
}
include fastcgi_params是常用变量所在的文件名。
systemctl restart nginx
systemctl restart php-fpm
3.访问测试页
http://192.168.100.10/php_status