wordpress使用nginx-helper插件来清除 nginx缓存

有2种方式清除缓存,第一种使用ngx_cache_purge,第二种直接删除文件

推荐的清除方式为第二种,删除文件,这种不需要额外来对nginx增加模块

但是nginx-helper有一个bug 就是自定义参数:

define( 'RT_WP_NGINX_HELPER_CACHE_PATH', '/var/run/nginx-cache' );

放到wp-config.php 不起作用 (引号里的/var/run/nginx-cache 是你的缓存路径)

解决方法在https://www.moeox.com/76.html

可完美解决自定义清除路径不起作用

nginx使用fastcgi_cache来缓存wordpress

使用nginx缓存效率高,高并发无压力,等于别人访问的是html

缓存过后,你网站的速度将会坐飞机一样

1h1g的 不考虑网络带宽的情况下,并发100个人都是小意思 不会有太大波动

首先编辑nginx.conf

在http括号中加入 以下内容

fastcgi_cache_path /var/run/nginx-cache levels=1:2 keys_zone=WORDPRESS:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;

fastcgi_cache_path后面的是缓存的目录,内存大建议就这样(/var/run/ 代表内存下的一个目录),内存小建议缓存到/tmp目录下 使用硬盘,2者的差别 一个访问内存 一个访问硬盘,除非你页面访问量实在大,不然为了省内存还是/tmp下就行。

keys_zone参数后面的是 缓存名字:缓存大小 一会server里需要用到。

inactive 参数代表缓存多久,到达制定时间就删除缓存,可以用m或者d,一个代表分钟,一个代表天

其他参数不用管,没什么需要修改的


紧接着,关键的东西来了

在server括号里或者你的虚拟主机的server里

添加以下代码:

        set $skip_cache 0;

	# 不缓存post请求
	if ($request_method = POST) {
		set $skip_cache 1;
	}   
	if ($query_string != "") {
		set $skip_cache 1;
	}   

	# 不缓存后台以及一些不能缓存的东西
	if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") {
		set $skip_cache 1;
	}   

	# 不要为已登录的人开启缓存,这项建议注释掉,没什么用,除非你站注册的人特别多
	if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
		set $skip_cache 1;
	}

接下来找到你的php的location

在括号里增加以下缓存参数

fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
fastcgi_cache WORDPRESS;
fastcgi_cache_valid  60m;

前2行不用管,第三行代表你刚开始在http括号里的 keys_zone 的缓存名字

第四行 fastcgi_cache_valid 之后可以加网页状态码以及时间,意思就是针对此状态码缓存多久,如果不写状态码,那就是全部状态码都用此时间

到此nginx缓存wordpress教程就结束了。

当然,我们还需要自动清除缓存,不然写文章,更新文章 不刷新缓存都是看不到的,下一篇来告诉你 如何自动清除缓存

数据库常见管理命令

mysql数据库常见管理:

1.创建数据库

create database 数据库名;  <----库名不能以数字开头

查看建库语句

show create database 数据里名\G;     <----- 没有 ;

创建数据库并定义字符集和校对规则

create database 数据库名 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

字符集是:一套编码或者一套规则

校对规则:比较字符编码的方式

如果编译安装mysql的时候指定了字符集,则以后创建数据库会默认指定的字符集。

企业里怎么创建数据库:

1.根据开发的程序所使用的字符集

2.知道了所用的字符集后编译安装可以指定字符集,或者在安装好的mysql里

配置my.cnf指定字符集,这样以后创建数据库不需要定义

查看指定数据库

show database like '数据库名';          <----数据库名可以跟%  表示任意的意思 

显示当前所使用的数据库

select database();

如何删除数据库

drop database 数据库名;        

查看所以用户以及用户分配的host

select user,host from mysql.user;

如何创建用户:

create user '用户名'@'连接域';

创建用户并赋予密码:

create user '用户名'@'连接域' IDENTIFIED BY '密码;

如何删除用户

drop user '用户名'@'连接域';    <----连接域名指的是127.0.0.1或者localhost以及远程IP

无法删除用户的解决办法以及为什么

无法删除的原因是:保留用户名、特殊字符用户名,大写用户名

delete from mysql.user where user='root' and host='localhost';
flush privileges;

 给用户授权数据库所有权限

grant all on dbname.tables to 'user'@'localhost';     <---- dbname和tables可以使用通配符来进行匹配 比如 *.*

创建用户并赋予密码和数据库所有权限

grant all on dbname.tables to 'user'@'localhost' IDENTIFIED BY 'passwd';

刷新权限

flush privileges;

查看用户的数据库权限

show grants for 'test'@'localhost';     <----- 是grants 

查看用户的权限有哪些?

使用REVOKE

revoke insert on test.* to 'test'@'localhost';  <----使用revoke插入 可使用的权限

不登录数据库进行操作

mysql -uroot -p -e "执行的命令;"   <----使用-e 参数 传入命令 引号结尾需要带;

mysql 备份数据库的方式以及使用工具

说明:-uroot 是代表用户名为root

说明2:-pxxx 是代表密码为xxx


备份用的软件

1.mysqldump  <—–数据库自带备份工具

mysqldump基本使用命令

mysqldump -uroot -pxxx 数据库名 > mysql_back.sql    <------备份文件的路径以及名字最好带sql后缀

mysqldump就是将数据以sql语句导出 进行备份  恢复的时候重新执行sql语句进行导入

指定字符集导出数据

附带参数 –default-character-set=utf8

mysqldump -uroot -pxxx --default-character-set=utf8

恢复数据库数据

mysql -uroot -pxxx 数据库名 < /root/mysql_back.sql   

备份数据库以及备份库名和创建库所使用的命令

mysqldump -uroot -pxxx -B 数据库名 > /root/mysql_back_B.sql            <-----------参数 -B 的作用就是将创建数据库时候的操作进行备份 并使用use切换到目标库    所以带上-B不需要提前创建数据库

建议一般备份的时候加上-B  如果你只需要数据可以自行编辑sql文件删除不需要的2步操作

-Bmysqldump恢复方法

mysql -uroot -pxxx < /root/mysql_back_B.sql     <--------注意这里不需要加数据库名,它会自动创建数据库

mysqldump减少输出选项 -compact 

作用:

减少数据    适用于debug 调试模式来查看数据  减少不必要的输出

不适合于备份还原回去

mysqldump备份的原理

实际上就是将数据从mysql库里 以逻辑形式使用sql语句进行导出

mysqldump备份单个或多个表

mysqldump -uroot -pxxx 库名 表名 表名 > /root/mysql_back_tables.sql   <------如果不加-B 默认识别 库名 表名 表名 …      默认库名后面全部识别为表名    如果加了-B 那就是库名 库名

mysqldumo 只备份表结构 不备份表值

使用-d参数

mysqldump -uroot -pxxx -d 库名 > mysql_back_d.sql       <-----默认只有库名的话 则备份所有表结构
mysqldump -uroot -pxxx -d 库名 表名 > mysql_back_d.sql   <-----备份多个指定表的结构

mysqldump 只备份表数据 不备份表结构

使用-t参数

mysqldump -uroot -pxxx. -t 库名 > mysql_back_t.sql 

以上都是myisam引擎的备份

innodb数据库备份

使用参数single-transaction

原理 设定本次会话级别为 REPEATABLE READ 来保持数据一致性

在进行备份的时候可以进行访问和写入数据,但是备份的数据是本次会话的数据,备份过程中的写入数据不进行备份

完整备份mysql所有数据:

mysqldump备份数据库里的所有数据,保护mysql的用户以及其他

mysqldump -uroot -pxxx -A -B --events > /root/mysql_back_all.sql 

使用-F选项  刷新binlog数据

不这么做 完整备份 恢复的时候会报错

mysqldump -uroot -pxxx -A -B -F --events > /root/mysql_back_all.sql

使用–master-data=1 自动找到全库恢复开始的binlog初始位置

mysqldump -uroot -pxxx -A -B -F --events > /root/mysql_back_all.sql

mysqldump关键参数说明:

-B 指定多个库,增加建库语句和use语句

–compact  去掉注释 适合调试输出 生产不用

-A 备份所有库

-F 刷新binlog日志

如果不刷新binlog可以用以下参数

–master-data=1

-x或者–lock-all-tables 锁表  全局读锁,保持数据一致性,建议只用这个

-l或者–lock-tables READ LOCAL锁定表以允许MyISAM表并行插入

-d 只备份表结构

-t 只备份表值

single-transaction 适合innodb事物数据库备份

生产过程中使用的命令总结:

myisam

可以使用-x完全锁表或者有读取访问需求的使用-l只读锁表来进行备份   每次都必须带这2个参数之1

1.单个库备份:

mysqldump -uroot -pxxx -x 库名 > /root/mysql_back.sql

2.多个库备份:

mysqldump -uroot -pxxx -x -B 库名 库名> /root/mysql_back_B.sql

3.单库单表或多表:

mysqldump -uroot -pxxx -x 库名 表名 > /root/mysql_back.sql
mysqldump -uroot -pxxx -x 库名 表名 表名 > /root/mysql_back.sql

4.备份数据库所有数据

mysqldump -uroot -pxxx -A -B --master-data=1 -x --events > /root/mysql_back_all.sql

innodb:

innodb备份的好处:热备份,不需要锁表备份,不影响业务访问

mysqldump -uroot -pxxx --single-transaction 库名 >    /root/mysql_back_innodb.sql

其他命令跟myisam基本一样

innodb备份数据库所有数据

mysqldump -uroot -pxxx -A -B --master-data=1 --single-transaction --events > /root/mysql_back_all.sql

专职DBA所使用的备份命令:

myisam:

mysqldump -uroot -pxxx --all-database --flush-privileges --lock-all-tables \
--master-data=1 --flush-logs --triggers --routines --events \
--hex-blob > $BACKUP_DIR/full_dump_$BACKUP_TIMESTAMP.sql 

innodb:

mysqldump -uroot -pxxx --all-database --flush-privileges --single-transaction \
--master-data=1 --flush-logs --triggers --routines --events \
--hex-blob > $BACKUP_DIR/full_dump_$BACKUP_TIMESTAMP.sql 

备份工具2:xtrabackup

xtrabackup 对于MyISAM只支持温备,不支持增量备份;支持innodb的物理热备份,支持完全备份,增量备份,而且速度非常快,支持innodb存储引起的数据在不同数据库之间迁移,支持复制模式下的从机备份恢复备份恢复,为了让xtrabackup支持更多的功能扩展,可以设立独立表空间,打开 innodb_file_per_table功能,启用之后可以支持单独的表备份。xtrabackup可以实现完全备份,增量备份,以及部分备份,其支持在线热备与恢复,在大数据量的时候,备份恢复都比较快。

xtraBackup基于InnoDB的crash-recovery功能。它会复制innodb的data file,由于不锁表,复制出来的数据是不一致的,在恢复的时候使用crash-recovery,使得数据恢复一致。