Skip to content

从 PJBlog3 迁移到 WordPress 3.7

蛋疼的 WordPress 不能行首空格。。

这篇文章早在 2014 年 1 月就该发了。

迁移后一直懒得动,始初选的免费空间有点坑:看介绍说没有广告,搭建完发发现页面底部会有广告。

后来过了没几个月,因为垃圾评论的问题还直接被关了。数据都不让你备份,坑。一切都是坑。

被关了一段时间,刚好看到 GoDaddy 有 WordPress 的优惠,也就把它迁移到 GoDaddy 上去了。

迁移后也就没管了,一直到了这个月。收到 GoDaddy 的邮件说我的 WordPress 要过期了。

想想,也 2 年没继续写了。懒懒懒~~~哈哈哈。

现在把它迁移到 VPS 上了。有空就写写吧。

这次的迁移发现导入的数据和以前不一样了,应该是导入插件升级所致。

导入后发现行首空格没了。我还特地修改了导入插件,重新导入。

现在发文章时才发现,WordPress 原生不让你行首空格。也不知道是基于什么考虑。。。国人的习惯啊。。你们都不考虑吗??

好久没有搞博客程序了,或许因为懒,或许因为累。无从说起。

事发因由?

上个月发现顶级域名无法直接访问博客,需要跳转到 www 域名。由于习惯了顶级域名 MyvNet.com 访问博客,所以进行了一些调整。主要是把 MyvNet.com 的 DNS 解析 IP 改成 WEB 站点的 IP 地址。
我使用的是 dns.com.cn 的域名服务和 WEB 空间。于是我登录了 WEB 空间的管理后台,把 MyvNet.com 的域名绑定删除了再重新添加。发现还是不行。

经过多番尝试之后还是没有解决,最后只能手工修改 DNS 记录。把 MyvNet.com 指向的 IP 改成 www.MyvNet.com 的 IP 。

经过调整以为是完事了。直到上周,我突然收到了 dns.com.cn 发给我的邮件。说我的网站备案信息有误,叫我重新上传备案信息。

我一下子懵了,我这个博客早在几年前就已经备案了。一直没有问题,现在怎么就说我备案信息有问题了?我们生活在天朝,也没办法。叫你更新就更新呗。由于手头上还有很多工作要做,所以也没有立即处理。只能等两天再看看。

过了两天,有空处理这个事情。想了一下最近就上个月修改过 DNS 解释,更新了网站的绑定。这个调整是更换了 IP ,可能是这个操作导致 IP 和原来备案的 IP 不一样。这样的话就好办,更新一下备案信息的 IP 地址就等两三个月。

打开通知我更新备案信息的邮件,按里面的提示登录更新备案信息的后台。一看之下我再次懵了。

原来事情不是我想像的那样,更新的不是 IP 地址,而是一堆的信息。包括联系方法、核验信息、核验单、照片等一系列东东。

我就挂个小博客,偶尔写点东西罢了。这么搞法我容易么我。于是我萌发把博客挂到国外的想法,刚好前段时间也看了在 GitHub 挂博客的文章。再加上之前也想过转到 WordPress 下,只是当时懒得搞。又是懒惹得祸~~好吧,这次一并迁移了,反正 PJBlog 也好久没更新了。 PJ4 一直流产不给力。

这个事情也持续了几天时间才搞得差不多。

确定迁移方案

问了一下朋友,对比了一下再上网搜了一下。决定先用着 foreverhost.us 的免费空间。 支持 PHP ,正好可以跑 WordPress ,10,000MB 空间,100,000MB 流量,10 个 MySQL 数据库,没有广告(官网是这么说的,这是后话)。反正我目前是够用了。 速度只能算一般吧 ping 值在 300ms 以上。

空间选择好就要考虑导数据。这个从前几天决定迁移到国外之后一直在搜。刚开始找到的是这个方案 http://www.black-xstar.com/blog/626.html 后来发现这个方案的程序比较旧,需要从 WordPress 3.0 开始转。比较麻烦,详情看这里 http://wordpress.org.cn/thread-69036-1-1.html 。这个方案是把 PJBlog 的数据导出成 SQL ,然后利用 MySQL 导入数据。这样和 WordPress 的版本关联大,不同的版本数据库结构可能发生改变。

当时也没有找到更好的方案,直到实施数据迁移的那天晚上。我找到了这个方案:http://maie.name/511.html 和 http://www.ileewei.com/pjblog-to-wordpress.html 。这个是目前比较好的方案,支持 WordPress 3.7 版本。这个方案是把 PJBlog 的数据导出成 Movable Type 的通用类型,然后在 WordPress 通过导入插件把数据导入进去。这样对数据库结构的依赖就没了。另外还有访问次数和友情链接,这个是导出成 SQL 再到 MySQL 里执行。这方面操作的数据表比较少,就算数据库结构改变了需要修改的地方也比较少。

迁移数据

迁移数据的过程也是漫长的。原因呢?下载回来的导出程序并不是基于我这个 PJBlog 的版本开发的,而且我这个 PJBlog 经过自己的修改。有些地方并不适用。

整个迁移过程也是漫长的,因为需要调试数据导出的程序。这里我总结一下步骤:

1、搭建好你的 WordPress 。
2、先把 PJBlog 整站备份一下(妈妈说注意备份的孩子是好孩子)
3、把 mt.asp 上传到 PJBlog 的根目录(下载链接下面给)。
4、打开 mt.asp 的地址(上面提到 WP-PostViews ,所以你的 WordPress 也应该安装这个插件,显示访问人数的)。
5、按你搭建的 WordPress 情况选择页面的选项,然后分别点击下面的两个按钮。
6、第 5 步会得到 mt-export.txt 和 pjtowp.sql 两个文件。
7、登录你的 WordPress 后台,到工具->导入->Movable Type 和 TypePad 。还没安装这个插件的就安装一下。
8、把刚刚得到的 mt-export.txt 填里面上传,WordPress 会把你的数据导入进去(这里建议把你的 mt-export.txt 上传到提示的 wp-content 目录下)。
9、如果你发现导入的数据不完整的话重复第 8 步。直到你的数据导入完为止,我的 400+ 篇文章跑了 3 次才导入完。或许是导入插件一个 BUG 吧,提示导入成功,其实只导入了部分。
10、通过 phpMyAdmin 或者你的 MySQL 管理工具把 pjtowp.sql 导入进去。
11、到这一步已经完成所有数据的迁移。

mt.asp 的下载地址(原创作者已经不提供下载了,下面提供的两个地址是使用者上传的):
http://www.kuaipan.cn/file/id_41144511090393793.htm
http://pan.baidu.com/share/link?shareid=2744836181uk=3557069307

迁移过程

当然,上面所说的只是步骤。实际操作中会遇到很多问题,主要原因是导出程序可能并不是你当前使用的 PJBlog 版本开发的。你需要作适当的修改以适应你当前的 PJBlog 版本。

这里需要懂一些 ASP 的代码编写能力和调试能力。因为你必须读懂 mt.asp 里面的代码并且作出修改。

我这里列一下迁移过程中遇到的问题吧:

1、我使用的 PJBlog 版本评论里没有 Email (需要注释掉导出评论里的 Email 代码)。
2、导出评论数据部分字段名不一致(基于不同版本的 PJBlog ,数据库结果不一样)。
3、UBBCode 函数修改过,原程序导出的数据有很多 #64、& 等转义字符(我发现不同的 PJBlog 版本 UBBCode 函数的代码是不一样的,所以建议你使用你 PJBlog 里的 UBBCode 函数,而不要使用 mt.asp 里的 UBBCode 函数。这个问题导致我重新搭建了 3 次 WordPress)。
4、mt.asp 里没有 pinyin 这个函数(我是上网找了一个修改后补上的)。
5、pjtowp.sql 里对应的 WordPress 版本并非最新的,我这里修改了导出分类注释的 sql 语句(版本不一样,数据库结构也不一样)。
6、碰巧我文章数据也有两个问题。第一个是标题前后有空格,第二个是有两篇文章标题一样(第一个问题需要修改一下 mt.asp 输出标题的地方 Trim 一下,第二个问题需要修改一篇文章的标题或者删除一篇文章再重新导出数据。第二个问题在导入 mt-export.txt 的时候不会有问题,导入 pjtowp.sql 的时候会报错)。

这个过程需要你耐心修改代码、调试 mt.asp 。

主要方法是:

1、修改 mt.asp 上传到服务器。
2、打开 mt.asp 地址,点击下面两个按钮运行程序。
3、出现问题修改 mt.asp ,再回到第 1 步继续。
4、如果服务器返回 500 也不要心急,在函数入口增加 Response.Write “xxx” Response.End ,刷新一下页面。再把这两行代码往下移,再上传再刷新。慢慢你就会找到出问题的代码是哪一行。

总结

不同的博客平台迁移数据还真是痛苦,除非是两个平台提供了相应支持。迁移前先做一次整站备份,防止损坏数据。修改并调试导出程序一定要细心耐心,大意很难找到问题所在。

这篇文章我也写了一段时间,迁移博客的时候正是公司比较忙的时候。当然也有懒的因素。

Be First to Comment

发表评论

电子邮件地址不会被公开。 必填项已用*标注

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax