香菇肥牛的博客

欢迎您来到我的博客https://qing.su 且听我慢慢倾诉……

香菇肥牛的博客

联用WP Super Cache与Memcache为WordPress提速——以阿里云OCS为例 | 香菇肥牛的博客

02/02/2015

Wordpress技巧>

联用WP Super Cache与Memcache为WordPress提速——以阿里云OCS为例

用过Wordpress的朋友们都知道,这款程序是建立在大量的数据库动态查询的基础上的;通常,为了提高访问速度,我们都会采用一些缓存手段。最常用的缓存手段莫过于WP Super Cache插件,其本质是生成静态页面储存在硬盘上,并提供给客户端访问以提升访问速度。Memcache亦是一个更高效的缓存手段。作为对象缓存系统,Memcache在内存中缓存和读取数据和对象,从而大幅减少对于数据库的读取次数。因此,我们有理由联合使用这两种缓存技术,为Wordpress提速。

本文以阿里云OCS(相当于Memcache)为例,详细介绍WP Super Cache插件如何与Memcache协同作用,为Wordpress提速。本文的操作环境是阿里云ECS, Debian 6 32bit系统,Nginx/PHP-Spawn-CGI/MySQL,其他环境请参照执行。

 

一,安装WP Super Cache 与Memcached

既然同时用到了这两个缓存手段,我们显然应当安装Wordpress官方提供的这两个插件,WP Super Cache与Memcached. 这里,安装的要点在于务必首先安装WP Super Cache并启用,再安装Memcached.

这时应该有朋友会问了,"我的wordpress上安装好Memcached并启用时为啥报错?不仅报错,而且还是fatal error? "

报错是当然的,因为我们需要将这个插件升级为Drop-in方式插件才可以与WP Super Cache配合使用。登录SSH,进入Wordpress根目录,执行:

1
cp  wp-content/plugins/memcached/object-cache.php  wp-content/

这样就安装好了Memcached. 此时我们可以登录Wordpress后台,将刚才安装的Memcached删除;当然你也可以不删掉它,毕竟我们没有启用这个插件原件,所以它不会被加载进内存占用资源。

 

二,配置OCS

OCS(Open Cache Service, 开放缓存服务)是阿里云提供的类似Memcached的服务。阿里云ECS用户可以免费申请一个容量为128MB的OCS实例, 而这对于一个十万PV以下的Wordpress应当绰绰有余了。在阿里云后台申请OCS后,进入控制台,在左侧”免密码访问设置“中为你的服务器打开免密码访问设置,这一步尤为关键。实际上这一步不会带来丝毫的不安全性;而一旦没有开启免密码访问,则需要通过阿里云提供的配置文件连接OCS,实测会出现各种超出预期的错误。

下面我们配置Wordpress配置文件用来连接OCS。在SSH上进入Wordpress根目录,编辑文件wp-config.php, 在文件末尾(快捷键Shift + G)添加下面两行:

1
2
global $memcached_servers;
$memcached_servers = array('default' => array('xxxxxxxxxx.ocs.aliyuncs.com:11211'));

其中xxxxxxxxx.ocs.aliyuncs.com是你的OCS实例的地址。保存后关闭文件。

 

三,安装PHP-Memcached模块

如果这时,你的网站还可以访问,那么恭喜你,下面这一步最麻烦的操作你可以直接跳过了。但是大多数情况下,按照上述两步骤操作完毕后访问网站,会发现网站变成了一片空白。不用着急,这是因为服务器的PHP没有安装Memcached模块。如果你是通过包管理器在服务器上安装的默认设定的PHP,那么Memcached模块是肯定没有安装的,我们需要手动安装。

首先,我们去PHP官网上下载Memcached模块源文件。依次执行:

1
2
3
wget http://pecl.php.net/get/memcached-2.2.0.tgz
tar zxvf memcached-2.2.0.tgz
cd memcached-2.2.0

PHP拓展的安装方式与其他软件有些差异。源文件需要首先用phpize程序处理生成configure才能继续编译。如果是在CentOS/Fedora上,安装PHP的时候应该已经自带了phpize; 在Debian/Ubuntu上,PHP默认不自带phpize,需要独立安装。phpize集成在php5-dev包中,因此我们依次执行:

1
2
apt-get install php5-dev
phpize

这时,我们可以看到,目录中生成了configure文件,于是可以编译安装了。请确保您的服务器安装了需要的库和编译器。接下来,依次执行:

1
2
3
./configure
make
make install

这样,就安装好了memcached拓展。接下来,编辑php配置文件php.ini(如果你不知道这个文件在哪儿,请执行find / -name php.ini搜索),在文件末尾添加如下两行:

1
2
[memcache]
extension = memcache.so

保存并关闭文件,然后重启Nginx服务器与fastcgi:

1
2
/etc/init.d/nginx restart
/etc/init.d/php-fastcgi restart

这时再登录网站,我们可以看到,网站已经可以访问了。

 

四,WP Super Cache与Memcache联用

这一部分是这篇文章要实现的目标,但这也是最简单的操作,因为高级的WP Super Cache插件本身已经提供了这样的功能,只不过平时并没有显示出来而已。我们进入Wordpress后台的WP Super Cache设置页面,点击”高级“选项卡,发现里面突然多出来了一个选项:”使用对象缓存系统来存储缓存文件“。没错,就是突然多出来的选项;如果没有把object-cache.php这个文件放在Drop-in plugin的位置上就不会出现这个选项。将这里勾选上并保存,就实现了WP Super Cache与Memcache的联用。

此时,我们可以登录阿里云OCS的后台,如果一切配置无误,你就可以看到实时的OCS实例监控信息,包括数据量,hit rate(命中率), miss rate等信息,如下图。

OCS

本文作者为香菇肥牛,原文链接https://qing.su/article/116.html,未经允许不得转载,谢谢。

    1. 香菇肥牛

      恩,我也发现连接出问题了,好像跟换了Nginx有关。。。插件用zend加密了我也判断不出来哪里出的问题。。

来一发吐槽