• 如果您想对本站表示支持,请随手点击一下广告即可~
  • 本站致力于提供原创、优秀的技术文章~
  • 有任何疑问或建议 均可以在站点右侧栏处 通过各种方式联系站长哦~
  • 加速访问WordPress:Redis部署笔记

    WordPress EXP 532阅读 1评论

    1. 前言

    通过缓存加速 WordPress 站点访问的方法有很多,从软件层面来说,主要有两种方式

    • 生成静态页面缓存(如通过 WP Super Cache 插件实现)
    • 动态对象缓存(如通过 Redis Object Cache 插件实现,详见本文

    对于一般的站点来说(例如WordPress博客,但需保证其大部分页面都没有随机化查询),如果不是刚需,使用WP Super Cache插件进行静态页面缓存加速是够用的,方便且暴力。

    当然也可使用Redis Object Cache(基于Redis的动态对象缓存),但这更适用于那些经常需要动用数据库查询的站点(例如WordPress论坛)。


    那么究竟什么时候用静态缓存,什么时候用动态缓存?可以参考下面两个例子:

    ① 假设一个日IP大于2万的WordPress站点,虽然这个站的流量很高,但是站点本身不需要开放用户注册的功能,那么站长最好的加速方案就是用各种类似WP Super Cache的插件生成静态页面。因为这类站点本身就不大需要动用数据库查询,所以自然也就不太需要Redis做对象缓存。

    ② 假设还是一个日IP大于2万的WordPress站点,但是这个站点必须要开放用户注册,并且用户注册的数量也相当之多,每天登录的用户也相当之多,那么这个时候一个生成静态页面的缓存插件可能就达不到理想的效果了。因为用户登录的这种行为,插件是无法静态化的,那么这种本身就需要经常动用数据库查询的操作,该如何提高效率呢?这个时候就需要用到Redis的对象缓存了。从本质上看,对象缓存就是缓存那些经常需要在数据库中查询的数据,当这种数据再次需要查询的时候,就可以通过Redis直接从内存中读取,而不需要再到MySQL中反复查询。这样就达到了一个加速、优化的效果。

    下面则针对 WordPress + Redis 的部署方式进行详细说明

    2. Redis 部署环境声明

    本文是基于Centos7系统中LAMP环境下的WordPress站点(详见《LAMP环境 + WordPress 部署笔记》),进行Redis缓存加速服务的部署。

    3. Redis 数据库服务端安装

    到官网下载最新版,本文下载的版本是 redis-4.0.10.tar.gz

     
    中文官网:http://www.redis.cn/
    英文官网(需翻墙):https://redis.io/

    上传到WordPress所在的服务器,本文上传位置为(注意这个位置就是最终的安装目录):

    /usr/local/redis-4.0.10.tar.gz

    解压安装包:

    tar -zxvf redis-4.0.10.tar.gz

    由于Redis需要编译安装,先安装gcc编译环境:

    yum install gcc

    进入Redis安装目录

    cd /usr/local/redis-4.0.10/

    编译:

    make MALLOC=libc

    编译完成后,进入src目录:

    cd /usr/local/redis-4.0.10/src/

    把 src 目录下的文件安装到 /usr/local/bin :

    make install

    至此Redis数据库服务端安装完成

    4. Redis配置

    默认情况下,Redis是通过这种方式启动的,非但无法在后台运行,而且也不符合使用习惯:

     
    cd /usr/local/redis-4.0.10/src/   (切换到启动脚本目录)
    ./redis-server ../redis.conf    (启动Redis)
    Ctrl + C        (停止Redis)

    另外Redis也不直接支持开机自启,为此要对其进行改造


    4.1. 设置Redis为后台进程启动模式

    通过vi修改redis.conf文件:

    vi /usr/local/redis-4.0.10/redis.conf

    修改为支持后台启动,找到关键字 daemonize no,修改为:

    daemonize yes

    这里 顺便修改 最大内存为512M(根据实际情况配置,建议为当前空闲内存的50%左右),找到关键字maxmemory,修改为(注意单位是byte):

    maxmemory 536870912


    4.2. 设置Redis开机自启动

    在/etc目录下新建redis目录:

    mkdir /etc/redis

    拷贝redis.conf配置文件到/etc/redis目录下,并重命名为6379.conf(取的是Redis默认端口名称,Redis启动脚本里的变量会读取这个名称,因此若redis的端口号改了,这个文件名也要修改):

    cp /usr/local/redis-4.0.10/redis.conf /etc/redis/6379.conf

    拷贝Redis的启动脚本到/etc/init.d目录下,并重命名为redisd

    cp /usr/local/redis-4.0.10/utils/redis_init_script /etc/init.d/redisd

    通过vi修改redisd文件:

    vi /etc/init.d/redisd

    首行 #!/bin/sh 下面添加两行(其含义是Redis服务必须在运行级2,3,4,5下被启动或关闭,启动的优先级是90,关闭的优先级是10):

     
    #!/bin/sh
    # chkconfig: 2345 90 10
    # description: Redis is a persistent key-value database

    切换到/etc/init.d目录:

    cd /etc/init.d

    设置为开机自启:

    现在可以直接以服务的形式启动和停止Redis了

     
    启动:service redisd start
    停止:service redisd stop

    5. Redis Object Cache 插件安装

    直接在WordPress插件中心搜索安装即可,不需要也无法改动Redis配置。只要Redis服务没有修改过端口和密码,就可以使用默认值。

    理论上通过修改WordPress的设置文件wp-config.php,可以添加并修改Redis Object Cache的配置,但实测无效(即使重启过服务器也不生效):

     
    define('WP_REDIS_CLIENT', 'pecl'); // 指定用于与Redis通信的客户端, pecl 即 The PHP Extension Community Library
    define('WP_REDIS_SCHEME', 'tcp'); // 指定用于与Redis实例进行通信的协议
    define('WP_REDIS_HOST', '127.0.0.1'); // Redis服务器的IP或主机名
    define('WP_REDIS_PORT', '6379'); // Redis端口
    define('WP_REDIS_DATABASE', '0'); // 接受用于使用该SELECT命令自动选择逻辑数据库的数值
    define('P_REDIS_PASSWORD', ''); // Redis密码
    define('WP_CACHE_KEY_SALT', 'wp_'); // 设置所有缓存键的前缀(Wordpress多站点模式下使用)
    define('WP_REDIS_MAXTTL', '86400');

    6. 站点使用Redis后的变化

    • 页面访问几乎秒开(部署Redis前后加速非常明显)
    • 后台编辑文章时保存变慢(可能需要做缓存同步)

    附:Redis的密码问题

    默认情况下,Redis是不需要密码登陆的,而且若是用于WordPress的Redis Object Cache插件加速,也不建议配置Redis密码,因为不知道是不是当前Redis Object Cache插件版本的BUG,无法为其配置Redis密码,只能使用Redis的默认配置(无密码)进行数据库连接。

    若非要设置Redis密码,可修改redis.conf文件,找到关键字requirepass,修改为:

    requirepass 密码

    资源下载

    本文全文下载


    转载请注明:EXP 技术分享博客 » 加速访问WordPress:Redis部署笔记

    喜欢 (4) 分享 (0)
    发表我的评论
    取消评论

    表情

    Hi,您需要填写昵称和邮箱!

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址
    (1)个小伙伴在吐槽
    1. 学习了,确实快了不少
      喵星狗2018-07-10 22:13 回复