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

原创
2019/10/22 17:50
阅读数 86

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

 

一、php-fpm配置

php-fpm配置文件路径:

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

刚装完时,把www.conf.default模板配置文件拷贝成了www.conf,所以最终生效的配置文件是www.conf。

www.conf配置讲解:

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。更改权限:vim www.conf中的listen.mode = 0666
listen.mode 指定socket文件的权限

listen.allowed_clients = 127.0.0.1   安全配置,定义允许访问php-fpm服务的客户端,一般默认为127.0.0.1就可以。



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

在页面访问报错报错:

查看报错日志 : /var/log/nginx/error.log这里报错是因为权限不足

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

 

www.conf配置文件:

php-fpm进程:

php-fpm: master process  为master  主进程

下面的为work  子进程,提供服务的

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.ini中查看到规定,E_ALL把全部的错误信息都会记下来

更改完成后需要重启php-fpm

查看php.ini路径:

1)/usr/local/php-fpm/bin/php -i |head
2)用phpinfo 在站点目录创建phpinfo.php,然后用浏览器到对应的站点访问phpinfo.php,不建议使用

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查看报错

curl -k -H "host:discuz.tobe.com" https://127.0.0.1/phpinfo.php -I   可以测试报错,禁用phpinfo后,此处是访问的https,443端口,所以使用-k

 

www.conf配置文件中:

针对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

在php.ini中配置open_basedir

open_basedir定义php服务所能允许的活动路径,能够到达的目录范围,目录之间用冒号分割,需要在加一个tmp目录,因为网站需要到tmp目录生成临时文件,配置open_basedir时,一定要加tmp目录

如果在php.ini中按照如下设置多个网站,在被黑客攻击时会把设置的所有网站都获取到,不安全,所以可以到www.conf进行设置

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]

在/usr/local/php-fpm/etc/php-fpm.d/目录下创建   blog.conf

把两个或多个网站相互独立出来

[blog]   #名字区分开
user = php-fpm
group = php-fpm
listen = /tmp/blog.socket  #这里也要区分开,不能监听同一个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   #这里在生产环境中要设置成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

 

二、mariadb密码重置

更改root密码

记得密码:

mysqladmin -uroot -ptobe password "tobe"

当不记得密码时:

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';  所有的root的密码都改为tobe123
flush privileges;

 

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';

三、MariaDB慢查询日志

配置慢查询日志目的:

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

配置:

    1)进入MariaDB里面执行:

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

slow_query_log 需要配置为on,开启慢查询日志

slow_query_log_file  日志存放路径,可以show variables like 'datadir'; 获取

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"   使用-e,不进入数据库,在外部就可以查询sql

展开阅读全文
php
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部