php-fpm配置文件, 端口与socket, 错误日志, phpinfo, slowlog, open_basedir, mariadb密码重置, 慢查询日志

php-fpm配置文件

  • 配置文件/usr/local/php-fpm/etc/php-fpm.conf的内容
    更多配置需要查看include的文件www.conf;
[root@draft etc]# grep ^[^\;] php-fpm.conf |grep ^[^$]
[global]
include=/usr/local/php-fpm/etc/php-fpm.d/*.conf
  • pool配置文件,/usr/local/php-fpm/etc/php-fpm.d/www.conf

    • Pool池是支持定义多个pool的。每个pool可以监听不同的sock、tcp/ip。
    • 那nginx有好几个站点,每个站点可以使用一个pool。
    • 这样做的好处是当其中的一个php502(可能是php资源不够)了。如果所有的网站使用同一个池,那其中一个网站发生一些故障,比如程序员写的一些程序有问题,就会把php资源耗尽,这样的结果就是其他站点的php也会502。
    • 所以有必要把每一个站点隔离开。每个pool的名字要唯一。
默认设置
[www]
user = php-fpm			#启动php进程的用户;
group = php-fpm
listen = /tmp/www.socket		#监听的socket或端口定义,定义后会生成socket文件,使用socket后不能用netstat查到使用端口;
pm = dynamic	#起动服务的形式,是动态;
pm.max_children = 5		#最多有5个子进程;
pm.start_servers = 2		#开启时就有两个子进程;
pm.min_spare_servers = 1		#空闲时最少要保持1个子进程;
pm.max_spare_servers = 3	#空闲时最多只保留3个子进程;
;pm.max_requests = 500		#一个子进程最多处理多少个请求,服务完就关闭  ;
  • pool会显示在进程里
[root@draft php-fpm.d]# ps aux | grep php
root      74614  0.0  0.4 233348  4388 ?        Ss   17:01   0:00 php-fpm: master process (/usr/local/php-fpm/etc/php-fpm.conf)
php-fpm   74615  0.0  1.3 248664 13224 ?        S    17:01   0:00 php-fpm: pool www
php-fpm   74616  0.0  1.1 235852 11232 ?        S    17:01   0:00 php-fpm: pool www
  • 配置检测
/usr/local/php-fpm/sbin/php-fpm -t			#检测配置文件;
/etc/init.d/php-fpm restart		#使用脚本文件重启; 
pkill php-fpm				#杀死php,修改listen的值后要完全杀死更新;

改变php通信端口

[root@draft php-fpm.d]# vi www.conf #修改listen值为指定的端口号,如9005, listen = 127.0.0.1:9005 ;
[root@draft php-fpm.d]# pkill php
[root@draft php-fpm.d]# /etc/init.d/php-fpm start
Starting php-fpm  done
[root@draft php-fpm.d]# vi /etc/nginx/conf.d/bbs.tany.conf #修改nginx虚拟主机文件,fastcgi_pass   127.0.0.1:9005;
[root@draft php-fpm.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@draft php-fpm.d]# nginx -s reload
[root@draft php-fpm.d]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:9005          0.0.0.0:*               LISTEN      80369/php-fpm: mast 
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      18695/nginx: master 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      6897/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      7147/master              
[root@draft php-fpm.d]# curl bbs.tany.com -I   #web服务正常使用;
HTTP/1.1 200 OK
Server: nginx/1.16.1
Date: Mon, 21 Oct 2019 10:57:15 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
X-Powered-By: PHP/7.3.0

php使用socket通信

[root@draft php-fpm.d]# vi www.conf #修改listen语名,listen = /tmp/www.socket;
[root@draft php-fpm.d]# pkill php
[root@draft php-fpm.d]# /etc/init.d/php-fpm start
Starting php-fpm  done
[root@draft php-fpm.d]# vi /etc/nginx/conf.d/bbs.tany.conf #修改语名, fastcgi_pass unix:/tmp/bbs.socket;
[root@draft php-fpm.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@draft php-fpm.d]# nginx -s reload
[root@draft php-fpm.d]# ll /tmp/www.socket #权限为660, php跟nginx都需要读写,改成666,不修改nginx错误日志会提示permission denied;
srw-rw----. 1 root root 0 10月 21 19:03 /tmp/www.socket
[root@draft php-fpm.d]# chmod 666 /tmp/www.socket 
[root@draft php-fpm.d]# !curl
curl bbs.tany.com -I	#服务正常;
HTTP/1.1 200 OK
Server: nginx/1.16.1
Date: Mon, 21 Oct 2019 11:05:43 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
X-Powered-By: PHP/7.3.0

php-fpm错误日志

  • www.conf文件里有下面一段信息,这个是错误日志的说明和配置;
  • 同样的内容也可以在ini文件里配置,在www.conf里的定义会覆盖ini的设置;
; Additional php.ini defines, specific to this pool of workers. These settings
; overwrite the values previously defined in the php.ini. The directives are the
; same as the PHP SAPI:
;   php_value/php_flag             - you can set classic ini defines which can
;                                    be overwritten from PHP call 'ini_set'.
;   php_admin_value/php_admin_flag - these directives won't be overwritten by
;                                     PHP call 'ini_set'
; For php_*flag, valid values are on, off, 1, 0, true, false, yes or no.

; Defining 'extension' will load the corresponding shared extension from
; extension_dir. Defining 'disable_functions' or 'disable_classes' will not
; overwrite previously defined php.ini values, but will append the new value
; instead.

; Note: path INI options can be relative and will be expanded with the prefix
; (pool, global or /usr/local/php-fpm)

; Default Value: nothing is defined by default except the values in php.ini and
;                specified at startup with the -d argument
;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com
;php_flag[display_errors] = off
;php_admin_value[error_log] = /var/log/fpm-php.www.log
;php_admin_flag[log_errors] = on
;php_admin_value[memory_limit] = 32M
  • 以下设置可以将错误信息显示在页面上,把一个php页面改错了后,再设置为on,就会显示错误信息在页面上;
php_flag[display_errors] = off	;错误直接显示在页面上,一般是off;

在这里插入图片描述

  • 以下设置可以把错误信息记录在文件里,下图可以看到跟页面一样的错误信息;
php_admin_value[error_log] = /var/log/fpm-php.www.log	;将错误保存在文件里,需要touch文件,权限要改为777,因为php需要写入;
php_admin_flag[log_errors] = on	
php_admin_value[error_reportion] = E_ALL	;添加语名,错误级别,将所有错误都保存,ini里有说明;

在这里插入图片描述

ini配置文件 - phpinfo

  • php.ini路径:

/usr/local/php-fpm/etc/php.ini

  • 命令查找ini配置文件:
[root@draft php-fpm.d]# /usr/local/php-fpm/sbin/php-fpm -i |grep "Loaded"
Loaded Configuration File => /usr/local/php-fpm/etc/php.ini
libXML Loaded Version => 20901
  • phpinfo查找ini配置文件:
    新建一个phpinfo.php文件,写入如下内容,浏览器访问这个文件,会显示php所有设置信息,如图(可用于测试php环境和查看php配置);
<?php
phpinfo();
?>

phpinfo

  • 由于phpinfo显示内容很多,会有点危险,一般要把这个功能禁止;

vi /usr/local/php-fpm/etc/php.ini

添加phpinfo在语句里,如下:

disable_functions = phpinfo

/etc/init.d/php-fpm reload #重启或重新加载,php.info页面显示白页,是500错误;

slowlog

在www.conf里,添加以下slowlog的设置语句,重载后会记录slowlog;

slowlog = /tmp/php.slow
request_slowlog_timeout = 1	;php解释超过1秒就记录下来;

可以在php页面里,添加sleep函数测试slowlog,错误日志如图(显示哪里慢,哪一个语句有问题);

<?php
sleep (2);
?>

在这里插入图片描述

open_basedir和多个pool

  • nginx配置多个虚拟主机,但还是可以通过同一个端口通信(pool文件,如www.conf所定义),即多个网站都通过同一个pool实现php功能;
  • 当其中一个网站程序有问题的时候,而且是使用同一个pool时,所有网站都会出问题;
  • 为避免这种情况,应为每个虚拟主机配置独立的pool;
  • open_basedir可以限制php服务的活动范围,需要定义值为网站的数据路径;
  • open_basdir默认在ini文件里定义,但是ini作用影响所有pool, open_basedir的值要为所有网站的数据路径,这样php还是能访问多个网站,仍然有风险;
  • 进一步我们可以把open_basedir定义在每个网站的pool里,这样php就可以定义只访问一个网站的数据,提高安全系数;

综上所述可以为bbs.tany.com/ blog.tany.com生成独立的两个pool文件 - bbs.conf/ blog.conf,配置内容如下:

[bbs]
user = php-fpm
group = php-fpm
listen = /tmp/bbs.socket	;据此配置nginx虚拟主机文件;
listen.mode = 0666
pm = dynamic					
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
slowlog = /tmp/php.slow
request_slowlog_timeout = 1
php_flag[display_errors] = off
;以下设置在ini文件可定义,优先级比pool文件低,在pool文件定义时,需要在前面加php_admin_flag/ php_admin_value,flag for on/off;
php_admin_value[error_log] = /var/log/fpm-php.www.log
php_admin_flag[log_errors] = on
php_admin_value[error_reportion] = E_ALL
php_admin_value[open_basedir] = /data/wwwroot/bbs.tany.com:/tmp	;限制php服务的活动空间,/tmp目录也需要,会生成一些临时文件;
[blog]
user = php-fpm
group = php-fpm
listen = /tmp/esther.socket
listen.mode = 0666
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
slowlog = /tmp/php.slow
request_slowlog_timeout = 1
php_flag[display_errors] = off
php_admin_value[error_log] = /var/log/fpm-php.www.log
php_admin_flag[log_errors] = on
php_admin_value[error_reportion] = E_ALL
php_admin_value[open_basedir] = /data/wwwroot/www.estherdaily.com:/tmp

配置好需要重启php和nginx; 配置好以后,可以查看到两个pool各有两个子进程;

mariadb10.3.11密码重置

vi /etc/my.cnf  #增加 skip-grant; 保存;

在这里插入图片描述

/etc/init.d/mysqld restart
mysql -uroot		#可以不用密码登陆mysql;

登陆进mariadb后
use mysql;  #切换到mysql库;
desc user;  #查看user表的所有字段;
update user set authentication_string=password("aming-linux") where user='root';		
#修改了所有root的密码;
exit;

vi /etc/my.cnf  #注释 skip-grant; 保存;
/etc/init.d/mysqld restart
mysql -uroot -p	#用新密码登陆;

mysql在5.7.36版本之后把密码字段存到了authentication_string字段里,在之前版本存在password字段里, 旧版本修改密码命令如下:

update user set password=password("aming-linux") where user='root';

mariadb慢查询日志

  • 为什么要配置慢查询日志?

目的是为了帮助我们分析MariaDB的瓶颈点。

  • 配置
    查看slow相关的参数,%通配以slow开关的所有;
    show variables like ‘slow%’;
    在这里插入图片描述
    show variables like ‘long%’;
    在这里插入图片描述
    打开配置文件/etc/my.cnf,编辑,增加:
    slow_query_log = ON
    slow_query_log_file = /data/mysql/aminglinux01-slow.log
    long_query_time = 2
    在这里插入图片描述

重启
/etc/init.d/mysqld restart

  • 测试
    进入MariaDB;
    select sleep(5);
    在这里插入图片描述
    查看慢查询日志:
    cat /data/mysql/aminglinux01-slow.log
    在这里插入图片描述
  • 扩展
    show processlist; #查询所有查询;
    show full processlist; #查询所有查询,显示完整命令;
    在这里插入图片描述

查询量超过100,数据库就比较慢了;

mysql -uroot -pxxxx -e “show processlist” #不进去数据库,翻回查询结果;

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值