程序员群体特别痴迷于工具,折腾来折腾去,就忘记了本来要做什么。

我看Ghost 1.0版出来很久了,但自己一直没有升级。于是周四的时候手贱了一下,升到了1.0版本,记录一下踩了哪些坑。

本来我是采用Docker镜像部署,但1.0的镜像还没出来(目前有一个PR 所以就采用了官方的Ghost-CLI工具进行安装部署。

结果我的2.5刀(512M内存)的小鸡完全吃不消NPM装包时所需的性能,我就顺手把洛杉矶的机器snapshot了一个,移到了东京,换成5刀的机型,网络还算稳定,机器配置(1G内存)也够了。

安装的时候就可以参考官方的Ghost-CLI安装指南,如果是从LTS版升级的话,也可以参考官方升级指南。默认会安装最新版的Ghost(目前是1.1.0)。他们这个新的安装工具也是挺厉害,还能帮你顺便把Nginx装了。另外这个安装工具默认你使用MySQL数据库,如果想装成SQLite数据库,需要在运行安装命令时加一些参数,我是使用下面的命令进行安装

ghost install --verbose --db sqlite3 --dbpath /path_to_your/ghost.db --dir /path_to_your_data

注意--db--dbpath需要同时指定,才能生效。后面--dir参数指定了ghost安装的位置。装的过程中会有一些选项可以选择,具体参考文档。

装好之后,就应该能够运行起来了,在前面设置的--dir参数路径下,可以找到config.production.json这个文件,可以用来修改Ghost的网址,端口,邮件配置等等参数,配置好后可以在这个路径下ghost restart就能重启ghost服务,使配置生效。

启动完成后,在浏览器上访问网站的/ghost页面,就可以创建帐号,初始化一些基本信息,并进入后台界面了。

然后我们可以从原来旧站的Labs里使用export content功能把旧版的数据导出来,然后在新站的Labs里把数据导入进去。(因为官方拒绝提供数据库直接migration工具,所以我们只能导着玩)另外要注意,不要把多个站导出的内容使用这种方式导入到一个站里,会出问题的,只能导一个。另外可以在导入前,先用Delete all content功能把新站里的sample页面都清理干净,再进行导入。

然后别忘了从原来的站把图片<ghost-dir>/content/images拷到新站的相应路径下。

全都导入好了你就可以开始享受新版Ghost了

注意你的LTS版(即目前0.11版本)的主题不一定完全兼容1.0版,所以要参考官方的主题升级指南对主题做些修改。

我装的是Ghost 1.0.0版本,在主题这里踩到了个很牛逼的坑,Disqus的评论全挂了。因为我们使用{{id}}作为disqus_identifier来判断评论对应哪个页面,这个变量在LTS中是一个自增的整数,而在新版中变成了一个ObjectID,所以Disqus再也找不到你文章的评论了。

话说Ghost团队的美女CTO在Ghost 1.0 Delay了好几个月终于发布之后,美滋滋地把自己的博客导入到了新版,突然发现后悬挂断了Disqus评论完全无法显示,一拍大腿,发了个Critical的Issue敦促小弟赶快修理,这个问题目前在1.0.2得到了修复。

目前的解决方案是引入了一个{{comment_id}}变量,来兼容旧版的自增id,但要注意目前LTS版中没有这个变量,所以在做兼容的主题时注意要做个判断。另外,如果你不幸和我一样在1.0.0这个版本导入过了,直接升到1.0.2是无效的,因为在导入的时候把自增id取出来这个逻辑也是修复了之后才有,所以需要升级后清空数据重新导入。

说起来作为一个没评论功能的博客平台,在发布重大更新时都不测一下导入过来的文章Disqus评论是否能正常使用,实在是不应该啊,美女CTO还是要学习一个。

1.0嘛貌似也没啥新功能,目前我发现的就是界面优化了一下,也提升了文章编辑器的使用体验,另外就是支持了完整的GitHub Flavored Markdown语法,这意味着你可以在新版里使用markdown画表格,而不需要手撸HTML了。

大概就是这些,祝大家身体健康。