博客加速与维护记录

独立博客相较于托管博客,优势在于有更宽的自由度及更强的自主性。在搞定域名、主机后,麻烦事儿就在于日常管理、维护和内容的更新。cnblogs和CSDN的后台编辑都不能让我感到满意,虽然百度SEO对自家产品有绝对的偏袒,但最终也没能在HI长久地落脚。 “原谅我这一生不羁放纵爱自由”吧,不管墙多高,我也会“不折手段”地翻过去!

在经济受限的学生时代,用过国内外的一些免费主机,限定容量的网络空间和数据库,一般情况下都会赠送1到2个二级域名。当时最大的用处,是拿来测试各种PHP+MySQL的网站源码、论坛模板,用来应验“三分钟建站”的神奇。

申请这个域名的想法,是12年在研究红帽PaaS云计算平台Openshift的时候萌生的。Openshift提供的是带SSL安全证书的HTTPS链接,安全的同时也带来了不便。解决方法是绑定域名,301跳转至HTTP的URL。设置域名解析之后,剩余的操作步骤也很简单:使用“rhc alias add”命令行或者在Openshift的WebConsole上直接添加域名,最后在WordPress后台的Settings里设置Site Address/WordPress Address。

Openshift现在使用的IaaS层是Amazon AWS的EC2,主机在美国,所以国内备案的事就甭考虑了。值得一提的是红帽在IaaS云计算平台OpenStack上也投入了大量的人力、物力,为OpenShift社区做出了极大的贡献。从另一个细微角度看红帽,严谨工整的文档风格也在一定程度上反映出其员工乃至公司的做事风格。

CDN加速

生活在一个神奇的天朝上国,不可避免地会遇上各种神奇的破事儿。换句话说,在这里我们能够学习到在其他地方学不到(但也用不着)的知识,比如“科学上网”。Openshift提供的SSH连接是很多人“科学上网”的通道之一,免费的空间、简便的管理更是吸引了大批建站者,当然就少不了“很黄!很暴力!”的内容。这一切都是天朝统治者不愿意看到的,所以,Openshift很不幸地就被潜规则了。GFW针对rhcloud.com域名及EC2的部分IP进行封杀,不同地区不同线路封杀的范围也会稍有差异。

兵来将挡水来土掩,世上从来就没有攻不破的城墙。除了VPN或者其他代理之外,CDN是另一大利器。将部分静态资源或整站内容分发到世界各地的CDN节点,不同线路的DNS解析就近选择CDN节点。国内线路可以选择香港、日本或新加坡的节点,尽量冗余多个IP,防止单节点IP被墙。

应用重建

前段时间会出现Mysql数据库无法连接的错误:

Database connection error

起初并没有太在意,重启应用就可以正常访问。但是后来出错的频率越来越高了,搜索了一番,原因可能是临时文件占用了过多的空间,超过了Gear的配额,最终导致Mysql挂掉。SSH登录上应用,从SHELL界面上看到一句

If worse comes to worst, destroy your application with 'rhc app delete' 
and recreate it

当输完“rhc app delete”并“yes”确认后,看到了

RESULT:
Application 'wordpress' successfully deleted

正准备recreate的时候,我才想起上一次把定时备份数据库的任务暂停了,尼玛最近的一次备份还是2月份的数据。文件系统是在本地用Git管理的,所以文件、插件、主题什么的都好说,但是文章内容是保持在数据库里啊!

文章恢复

真是百般无奈,最坏的打算是重新写一遍。

值得庆幸的是,我有使用google-sitemap-generator的插件,会通知Google爬虫来抓取网站内容,所以Google把大部分的页面都收录了,通过cached可以找到最近缓存的内容。 cached功能需要翻墙,再次鄙视一下万恶的墙!

内容不需要重新写,但还是得一篇一篇的新建,调整格式,再发布。我使用的Permalink格式是”/archive/123″,发布之后的新URL和Google上收录的原有URL不同,为了友好地面对搜索引擎,还需要把每一篇文章改回原来的URL。

修改方法是通过phpMyAdmin手动运行SQL:

update wp_posts set id = 200 where id = 100;
update wp_term_relationships set object_id = 200 where object_id = 100;
update wp_postmeta set post_id = 200 where post_id = 100;
update wp_comments set comment_post_ID = 200 where comment_post_ID = 100;

OK,几近完美,哈哈!

插件扩展

以前安装过的扩展插件都有备份在本地,而且本地的Git版本库里也找得到plugins,所以重新安装一遍扩展插件并不费劲。

这次对插件重新筛选了一下:

+添加百度分享 baidushare_wp
+添加内容目录 table-of-contents-plus
+添加主题拓展 twenty-eleven-theme-extensions
+添加Markdown支持 WP-Markdown
-停用防垃圾评论 Akismet
-停用代码高亮 Crayon Syntax Highlighter
-停用wordpress.com功能 Jetpack

加上原有的几个,一共启用了10个插件。停用后面三个插件是出于性能的考虑,插件的加载会花费一定的时间。停用“Crayon Syntax Highlighter”后,页面加载速度提升得特别明显。

前车之鉴,安装完插件的第一件事就是启用备份插件“wponlinebackup”,每周发送数据库备份到邮箱。

加速效果

经过一阵摸索和一番原本不必要的折腾,博客的加速算是告一段落。下面是域名的Ping检测,解析到pagespeed.googlehosted.com,IP物理地址是美国加利福尼亚州山景市谷歌公司。

wrongfan.com超级Ping

经验教训

  • 定期创建应用快照
  • 定期备份数据库
  • 适当选用wordpress插件
  • 使用More标签,减少首页内容
  • 使用Markdown编辑文章,本地备份




Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>