【HowTo】创建一个WordPress镜像站点的方法

应朋友的要求,帮他做了一个WordPress的镜像站点。一般的个人博客是用不着做镜像站点了,就我的观点来看,如果不是追求极致的访问速度,一般都没有必要做镜像站点。但是如果为了服务的稳定性,做镜像站点还是有必要的。比如,创业团队用廉价云服务器来提供Web服务的情况下,受到国内云服务质量的影响,会经常停服,如果对稳定性有极致要求,就需要多点、多机房去部署。也就有了镜像的需求。

如果对一个WordPress进行镜像,有如下一些事情要做:首先是数据库的镜像。之前,我没有研究过怎么配置MySQL的主从。从这次的操作来看,还不算太难。MySQL主从配置,要求Master和Slave都配置有唯一的Server ID,并且Master要开启binlog。配置的时候,注意先配置Master的binlog和Server ID,然后重启,再配置Slave的Server ID,然后重启Slave。接下来,在Master执行flush tables with read lock;,再执行show master status;可以取得binlog的文件名和position,最后在Slave的MySQL中执行change master to指令,具体语法查询文档。经过上面的配置后,可以在Slave执行show slave status,观察一下是否有错误,没有的话,基本上就代表主从配置完毕了。

一般进行这个需求的时候,主站应该已经存在一段时间了,所以,我做了一个操作,把主站的全部数据dump到一个sql文件中,然后重建了一个数据库,然后将主站的所有数据导入到新库,这样镜像站点的数据库中,就会根据数据库主从拷贝到所有主站的数据。

数据库镜像完毕后,要做的是磁盘文件的镜像。首先将主站的全部文件打包,scp到镜像服务器,然后解压缩。在镜像服务器配置rsyncd,相关配置我就不赘述了,看文档即可。然后,在主服务器配置crontab,每分钟,将主服务器的WordPress安装目录下的文件往从服务器同步一次。这样如果用户发表新文章,上传附件等等,都会在从服务器出现。

最后,就是DNS,一般如果使用类似DNSPod这样的服务的话,就可以域名同时指向主从服务器。这样访客就会根据自己所在的地区,自动路由到比较快的一台服务器上了。给站点编辑带来的麻烦,则是必须配置host,才能正确写入数据。因为为了防止主从数据混乱,我没有给从库开写权限,镜像站点是只读的。对于读者评论这类东西,确实有点麻烦的。我原本想到的解决方案,是用nginx的rewrite,将comment请求,重新pass回主站去,这样,镜像站点也可以发表评论了。不过,看到朋友在博客上嵌入了第三方评论插件,这到碰巧让我没有这个麻烦了。

以上就是部署一个镜像WordPress要考虑的东西,记录一下。