LNMP---php-fpm配置、mariadb密码重置、MariaDB慢查询日志

php-fpm配置
mariadb密码重置
MariaDB慢查询日志php

 


查看php.ini路径:mysql

1)/usr/local/php-fpm/bin/php -i |head
2)用phpinfo 在站点目录建立,不建议使用

vi /usr/local/php-fpm/etc/php.ini
disable_functions = phpinfo  此处设置将不显示phpinfo的信息,可是会报错,能够打开:php_flag[display_errors] = on(页面显示报错信息) 或php_admin_value[error_log] = /var/log/fpm-php.www.log查看报错

补充:nginx

curl -k -H "host:discuz.tobe.com" https://127.0.0.1/phpinfo.php -I   能够测试报错,禁用phpinfo后

1、php-fpm配置sql

php-fpm配置文件路径:安全

/usr/local/php-fpm/etc/php-fpm.conf 文件中
包含了一个目录:  include=/usr/local/php-fpm/etc/php-fpm.d/*.conf
这个目录中  www.conf 就是其中子配置文件

www.conf配置讲解:curl

pool 名字: [www] 能够自定义,php-fpm启动后,ps aux |grep php-fpm 看最右侧,就是pool的名字

user = php-fpm    查看进程的最左侧就是该进程的用户名字
group = php-fpm

listen 指定监听的IP:port或者socket地址
       这个socket地址须要和nginx配置文件里面的那个fastcgi_pass所制定的地址一致,不然就会502
       若是监听的是socket文件,那么要保证nginx服务用户(nginx)对该socket文件有读写权限,不然502
listen.mode 指定socket文件的权限



fastcgi_pass   unix:/tmp/www.socket;    写socket的路径

在页面访问报错报错:socket

查看报错日志 : /var/log/nginx/error.log这里报错是由于权限不足函数

更改www.conf配置文件   listen.mode 指定socket文件的权限,而后重启php-fpm便可php-fpm

pm = dynamic 动态模式,启动服务的形式,静态:static
pm.max_children = 5 最大进程数
pm.start_servers = 2 启动时启动几个子进程
pm.min_spare_servers = 1  空闲时,最少不能少于几个子进程
pm.max_spare_servers = 3  空闲时,最多不能多于几个子进程
pm.max_requests = 500   单个子进程最多处理多少个请求,处理完成后进程会自动结束
关于php.ini的
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_reporting] = E_ALL  错误日志级别

针对php-fpm配置slow 日志测试

slowlog = /tmp/php.slow   定义php-fpm慢执行日志路径
request_slowlog_timeout = 1  超时时间(1秒)

/etc/init.d/php-fpm reload

在phpinfo.php中使用sleep函数睡眠2秒,此时会在tmp/php.slow记录日志

并会提示哪里存在问题,而且当网站访问慢的时候,能够经过此处排查

curl -k -H "host:discuz.tobe.com" https://127.0.0.1/phpinfo.php

配置open_basedir

定义php服务所能容许的活动路径,目录之间用冒号分割

vi /usr/local/php-fpm/etc/php-fpm.d/www.conf

添加下面这段配置

php-fpm.conf优先级比php.ini高

php_admin_value[open_basedir] = /data/wwwroot/discuz.tobe.com:/tmp

 

让多个网站相互不影响,配置多个pool,把多个站的资源独立出来

定义多个配置文件,在配置文件中指定不一样的listen地址  不一样的 [pool_name]

blog.conf

[blog]
user = php-fpm
group = php-fpm
listen = /tmp/blog.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_reporting] = E_ALL
php_admin_value[open_basedir] = /data/wwwroot/blog.tobe.com:/tmp    #/tmp目录有可能会写入临时文件,全部都要加上

discuz.conf

[discuz]
user = php-fpm
group = php-fpm
listen = /tmp/discuz.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_reporting] = E_ALL
php_admin_value[open_basedir] = /data/wwwroot/discuz.tobe.com:/tmp    #/tmp目录有可能会写入临时文件,全部都要加上

/usr/local/php-fpm/sbin/php-fpm -t   检查语法错误

/etc/init.d/php-fpm restart  重启服务

在/tmp下出现这两个socket

更改完成后,须要把/etc/nginx/conf.d/blog.tobe.com.conf  虚拟主机的fastcgi_pass更改

fastcgi_pass   unix:/tmp/blog.socket;

 

vi /usr/local/php-fpm/etc/php.ini    #不建议在此处更改open_basedir,当有多个网站的时候,会下降安全系数

 

若是只定义/home目录,访问时会报错,由于这个网站不在这个目录下,并在日志中能够查看到错误信息

/var/log/fpm-php.www.log

 

2、mariadb密码重置

当不记得密码时:

1)编辑/etc/my.cnf

增长:skip-grant
重启服务    /etc/init.d/mysqld restart
此时不输入密码也能够登录  mysql-uroot

2)登陆进MariaDB,执行

use mysql  切换到mysql库
desc user  查看user表的全部字段
update user set authentication_string=password("tobe123") where user='root';

3)退出MariaDB,删除/etc/my.cnf里面的skip-grant, 重启服务     /etc/init.d/mysqld restart
4)用新密码登陆便可

mysql在5.7.36版本以后把密码字段存到了authentication_string字段里,在以前版本存在password字段里。
update user set password=password("tobe123") where user='root';

3、MariaDB慢查询日志

配置

    1)进入MariaDB里面执行:

show variables like 'slow%';   
show variables like 'datadir';
show variables like 'long%';

long_query_time   超时时间, 该参数最好改成2秒,查询时间超过2秒就已经比较慢了

2)打开配置文件/etc/my.cnf,编辑,增长:

vi /etc/my.cnf

slow_query_log = ON
slow_query_log_file = /data/mysql/tobe04-slow.log
long_query_time = 2

3)重启服务         /etc/init.d/mysqld restart

生成日志文件

4)模拟慢查询

select sleep(5);

5)查看慢查询日志:

/data/mysql/tobe04-slow.log   日志中会显示出错误信息

 

扩展:

show processlist;    查看全部队列,info字段sql显示不完整
show full processlist;    info部分的语句彻底显示

mysql -uroot -ptobe123 -e "show processlist"

相关文章
相关标签/搜索