博客程序由Typecho迁移到WordPress的原因分析

在前面的博文中,我提到,由于插件的原因我将博客程序从Typecho换成Wordpress,今天我具体分析一下这件事。并讲述一下这几年使用其他博客程序的情况,分析一下为何庆幸没有用其他博客程序,为各位博友提供参考,也为我的折腾史画上句号。

(1)

Typecho程序的主题有很多,虽然不像Wordpress那样拥有海量的主题,但还是给博主们提供了可选择的空间。然而,Typecho的插件就不那么完善了。

2013年我的博客数据丢失时,只有唯一的一个数据库备份在我邮箱里,是Wordpress自动备份数据库的插件发送的。之前邮箱里有上百封数据库备份邮件,被我全删了,而最后一封邮件发过去以后,主机就崩了,因此只有这一个数据库备份。数据丢失让我长了记性,数据库一定要及时备份。不能依赖本地备份,因为几年前的移动硬盘损坏事件也让我长了记性。

Typecho有个插件叫Autobackup,用于数据库自动备份并发到邮箱。我下载到的是1.1.0版本,于2012年6月15日发布,从此以后再无更新。目前没有其他插件可以实现这个功能。

插件是这样实现功能的:在博客后台对该插件备份的数据表、备份间隔时间、发送邮件的方式和接收邮箱进行设置;插件包含一个config.xml文件,里面记载上次发送邮件的时间,当博主发表或更新一篇文章,或有访客在前台提交评论,则会触发插件计算此时的时间与上次发送邮件的时间之差是否超出了备份间隔时间,如果是,则插件会压缩数据库并发送到指定的邮箱。这样有个缺点,博主提交文章或访客提交评论时,需要等待10-15秒的时间。

这个插件在php7.x下是可以运行的,但会产生如下5种报错信息,每次插件被执行时都会被记录:

PHP Deprecated: Non-static method AutoBackup_Plugin::SendMail() should not be called statically in /usr/plugins/AutoBackup/Plugin.php on line 172

PHP Deprecated: Non-static method AutoBackup_Plugin::create_sql() should not be called statically in /usr/plugins/AutoBackup/Plugin.php on line 112

PHP Notice: Undefined variable: config in /usr/plugins/AutoBackup/Plugin.php on line 212

PHP Notice: Trying to get property 'pass' of non-object in /usr/plugins/AutoBackup/Plugin.php on line 222

PHP Notice: A non well formed numeric value encountered in /usr/plugins/AutoBackup/pclzip.lib.php on line 1972

尽管报错,但能用。如果将主机的php版本升级到8.x,则彻底无法运行。Typecho程序会直接在网站主页显示:

Error: Non-static method AutoBackup_Plugin::create_sql() cannot be called statically in Plugin.php:112

要想博客在php 8.x下能正常运行,就必需禁用该插件。我想向作者反馈这个问题,但是作者的博客早就打不开了。我通过web archive查看,发现该插件发布时作者使用的是静态博客,且他的博客在2015年以后就再也打不开了。

在迁移到Wordpress之前,我利用测试站进行了相关测试。Wordpress下的同类插件有很多,我测试了三个:UpdraftPlusWP-Db-BackupBackWPup。UpdraftPlus太过于复杂,不推荐使用;WP-Db-Backup依赖wp-cron定时任务进行数据库备份,但当前2.4版本不支持php 8.x;BackWPup可用来备份数据库、网站文件、已安装的插件列表、Wordpress XML输出等,可使用wp-cron备份,也可以访问特定的链接备份,我使用后者,将链接添加到免费的海外网站监控服务中,每24小时监控一次,相应的数据便定时发送到了我的邮箱中。

当主博客使用的程序迁移到Wordpress以后,我便直接利用BackWPup进行相应备份,心里踏实多了。

(2)

由于Wordpress相对Typecho来说臃肿很多,因此有必要进行一些优化。我使用的虚拟主机是Cloudlinux+Cpanel+litespeed,针对Wordpress有专门的优化,可安装Litespeed cache插件进行优化设置,加快wordpress网站的访问速度。目前,本博客的访问速度和之前使用Typecho时相差无几,而且后台速度也是很快的。

另外,在迁移至wordpress以后,smtp异步发送评论提醒邮件再也没有失败过。

(3)

2016年底博客重建时,考虑到Wordpress已经没有新鲜感,我让主机商客服帮我安装的zblog php。安装的当晚和第二天上午,zblog经常出问题,我的博客没办法正常运行。随后,我看到有博主用typecho,我便删掉zblog安装了typecho,一直用到2021年6月8日。在前面的博文中我提到,这几年,为折腾Typecho及其插件,我付出了很多精力,付出了很多心血。学到了很多东西,也付出了很多代价。这里就不讲述这些年的折腾史了。

这几年,除了zblog,我也测试过emlog、flatpress、movabletype等程序。emlog几乎已死,flatpress是文本数据库,movabletype不开源,因此我还是以zblog来说一下吧。

让我庆幸的是,幸亏我没有坚持用zblog。如果我用zblog,即便不考虑数据备份到邮箱的问题、不考虑其他任何意外情况,zblog的数据迁移问题也早晚会被我遇上。

将数据迁入zblog,可以用插件进行,相关的插件有好几个,网上也有大量的帖子介绍如何将wordpress迁移到zblog,尽管我测试失败了。然而,zblog迁移到wordpress的帖子极少。2009年之前的帖子说,可以使用zblog迁移到movabletype的插件,导出movabletype格式的文件,再利用movabletype导入wordpress的插件(wordpress后台可以一键安装)导入wordpress,但是,2009年之前的帖子中所说的插件在zblog应用中心已经搜索不到了,这个方法已经不能再使用。除了插件以外,只能对数据库进行操作,这需要非常专业的知识和能力,我看不懂。印象当中我看过一个博主说,他从zblog转移到wordpress时,zblog交流群里的人可以提供数据库转换操作,几十篇文章收费大概五百元,于是他放弃了所有的数据。

前几天安装zblog进行研究时发现,在2020年11月5日,开发者沉冰浮水发布一个插件可以将zblog数据导出为Movabletype 格式。这样便可以用Wordpress后台的Movabletype导入插件将数据导入wordpress。这可能是2020年11月以后唯一能将zblog数据转移到其他平台的插件。但经过我的测试,数据转移不完全,页面、评论、分类是无法被转移的。

zblog上至今还未发现数据库自动备份并发送到邮箱的插件。

所以,幸亏博客重建伊始安装zblog以后总出问题导致我换成了typecho,我非常庆幸一开始没有用zblog。

当然,这里有必要再提一个问题。我知道有些博主用VPS,上面安装的某些面板可以将数据库备份到需要你提供隐私信息的对象存储平台上。但我用的不是VPS,我的VPS被我用来建独立邮箱了,我也不考虑把主博客放在VPS上,原因在前面的博文中说过,这里不再赘述。

就这样吧。多思考、少折腾。

40 条回复

Unee Wang 2021年6月19日 回复

你的倒数第二段,把天聊死了😂

林海草原 2021年6月23日 回复

因为我不想再回复这样的留言了,累了😂

老麦 2021年6月19日 回复

只要适合自己就好,就好像数码产品,每年更新一代,普通老百姓哪跟着上这节奏啊?
我对这个东西比较随意,喜欢就考虑换一下,前提是我有这个时间和精力去折腾。可又说回来,好像已经没什么好折腾的了,静态动态都在使用,至于程序,感觉都差不多。
当然除了往深一层次的技术发展,要不然写个文章,记下日常这种,用什么都差不多。

林海草原 2021年6月23日 回复

说的对,满足自己的基本要求就可以了。我的要求就简单:数据自由互通,备份无压力。那现在就非wp莫属了😂

wys 2021年6月19日 回复

都用用,才有个比较,才知道那个是自身所好。
也谗言过wp臃肿,而如今用着挺好!

林海草原 2021年6月23日 回复

臃肿的程度实际上是可以接受的,程序轻的话也意味着功能的缺失,有些问题比较隐形但遇到了也就头疼了我看有博友就遇到过。

陈攀 2021年6月20日 回复

今天看了你这篇文章,我也开始折腾了一下网站备份。
我目前的备份是用DigitalOcean付费提供的,但总觉得如果有免费可靠的方式,会是一个更好的选择。
于是乎,我想到了用vps写自动运行的script,来push到GitHub。这样还可以根据commit回滚哈哈哈。就是不知道这算不算滥用GitHub。

林海草原 2021年6月23日 回复

哇你厉害啊,只要占用空间不超过1G应该就不算滥用吧,你控制好一下空间

陈攀 2021年6月23日 回复

我现在已经800多MB了。
我后来又加了另一层备份,备份到Google Drive。每日检查是否有新内容产生(取决于我是否有上传新的图片),有的话就会传到Google Drive上面去。
感谢看了你这篇文章,引发了蝴蝶效应让我去研究怎么备份,每个月还省了DigitalOcean备份的费用哈哈哈,也觉得自己的网站数据现在是固若金汤了。

SKYue 2021年6月20日 回复

我用sqlite数据库,一个文件,备份很方便。不过,也不常备份。
我现在用obsidian本地写博客,python脚本发布,本地文件会用dropbox同步备份,安全性非常高了。唯一的就是,博客的评论没有本地备份,感觉也还好。正文在,主体结构就在。

林海草原 2021年6月23日 回复

你是直接备份文件,这样还挺好。你用的插件应该都是不需要写入数据表的吧,当然有的typecho插件可以写入sqlite,有的不行。你用的方法挺高级的,对我来说有点难,好像用过bitcron的人都觉得这些高级的方法挺过瘾的,而我缺钱缺精力就没法研究它们了。

橘子书 2021年6月20日 回复

论备份的重要性。
其实很多时候,换程序不是因为多么高大上的理由,而是一个小小的功能突然无法得到满足,就变成了压倒骆驼的最后一根稻草!

程序于自己实用就是好程序。

林海草原 2021年6月23日 回复

说的对,真的是这样。
你有博客吗?好像一直没看你留过链接,我还是挺想看看你的博客的。

橘子书 2021年6月25日 回复

有博客,你曾去过。我比较佛系,不仅更博随性,去其他独立博客评论也一般不留链接。

Mr.Chou 2021年6月20日 回复

关于备份这一块,我之前倒是想过找个类似的插件能定时备份数据到邮箱;
后来不了了之,现在都是每间隔一段时间自己想起就随后备份..手机端电脑端都可以。

林海草原 2021年6月23日 回复

只要主机稳定就行。我用的主机也稳定,但就怕自己万一啥时候手贱就把数据搞坏了。你如果不用php 8,可以考虑下载我提到的autobackup插件,文章里有链接你可以去下载安装一下。

苏周 2021年6月20日 回复

现在这个模板也很简洁,目前我博客都是每周备份到对象存储,只保留最新三份,应该不会再出现之前丢失数据的事情了

林海草原 2021年6月23日 回复

我去看了你的模板,定制的吧?之前去看的时候发现模板换了,我似乎没见过,然后一看原来是定制的哈哈哈,花了多少钱?😂
只要你主机稳定应该没啥问题,你之前丢数据是主机商跑路了吧。还是得选择那种规模大一点的,个体主机商除了篱落主机别的我现在都不敢相信了。
我现在不仅备份到邮箱,今天还增加了备份到dropbox,而且已安装的插件目录和xml导出也备份一个,这下心里更踏实了。

大峰 2021年6月21日 回复

备份确实很重要,当初在用typecho时,由于自己不会操作,丢失了内容,后来转到wordpress,用了插件一键备份,省心多了,还有宝塔也能定期备份。
现在用hexo静态的,文件都在本地了,相比要心里踏实一些,现在也不想折腾了

林海草原 2021年6月23日 回复

备份太重要了,2013年那次丢数据让我现在多多少少都有点心理阴影。我今天增加了dropbox备份,主机在海外这个不成问题,这样的话就是邮箱里一份、dropbox一份,还增加了已安装插件目录和xml导出的备份,发到另一个邮箱里。然后心里更踏实了。hexo博客我也有一个,是给身边的人炫耀的😂😂这个只要不手残就没事😂

Andy烧麦 2021年6月21日 回复

用户不会因为你的模版有多漂亮而经常来看,内容才是关键吧?

林海草原 2021年6月23日 回复

那是肯定的,只有少数年纪很小的人才会在意你的模板多漂亮,而我们写的文字是入不了这部分年轻博主的法眼的。我们要多生产优质内容😂

静水流深 2021年7月5日 回复

文章不错,以后我多来看看

回复 大峰 取消回复