升级到Ghost 3.x

虽然Ghost 2以及现在的3版本都出来很久了,我却一直迟迟没有升级。但昨天这个对CJK用户非常不友好的3年都没修复编辑器bug总算被修好了,我们中文用户也终于能顺畅地跟上新版Ghost,我也终于能从万年1.x升级了。

bug的详情可以看下最新的这个issue。Ghost从版本2开始使用mobiledoc-kit作为编辑器,这个库一直存在这个问题:用输入法的时候还没选中字,打上去的英文字母就被编辑器捕获保存,导致没法正确选字以及英文字母乱蹦,结果就是打汉字的时候基本没法用。Ghost官方就很辣鸡,一堆人用着费劲每年都要跑来提issue,他们还觉得上游库的问题不是自己的问题,也不去修,简直甩锅达人。

由于我是用docker部署的,所以更新步骤非常的简单粗暴。

  1. 先把旧的整个目录备份一下
  2. 在旁边别的端口部署另外一个新版Ghost
  3. 直接开网页进去初始化,新建用户,删掉所有样例的文章,Staff里面把无关的示例用户删掉
  4. 旧的图片数据直接搬到新的下面,路径在/var/lib/ghost/content/images/
  5. 主题搬过去,路径在/var/lib/ghost/content/themes/,也可以先确认下主题是否兼容新版,做相应的修改
  6. 在旧的Labs里使用导出功能,把所有数据导成json
  7. 在新的那边Labs里把json导进去
  8. 旧的config.production.json直接复制到新的里面挂上去,容器里面的话应该是/var/lib/ghost/config.production.json这个路径,这个文件我测下来是直接兼容的,如果有报错再看看报错修改下应该就行
  9. 重新配置前面的Nginx或者Caddy,指向新的Ghost实例
  10. 把旧的停了

如果像我一样用/2020/11/11/some-article这样带日期的路径的,需要在Labs里面更新一下routes.yaml,否则默认只是有个文章名,可以参考如下配置。

routes:

collections:
  /:
    permalink: /{year}/{month}/{day}/{slug}/
    template: index

taxonomies:
  tag: /tag/{slug}/
  author: /author/{slug}/

最后我想说,新的这个编辑器真是就算没bug也很难用。(摊手

参考