Ghost博客2.x升级至3.x

一、升级对象

ghost博客更新非常快,其功能在不断完善,同时针对其应用会有开发者不断开发出一些好用的theme,现在准备将ghost 2.6升级到ghost 3.3,并更换主题

二、准备

  1. 下载目标镜像
    docker pull ghost:3.3.0
  2. 载目标主题
    git clone https://github.com/linuxwt/advant 下载3.x的主题

三、ghost应用升级

首先备份ghost重要文件
cp config.production.json config.production.json.bak
cp -r content content.bak
停掉应用
docker-compose down
更换docker-compose.yml文件中ghost应用使用的镜像版本为此次升级的版本
启动应用
docker-compose up -d

四、主题升级

更换主题有两种方式,一种是将拉取的主题代码放到相应的目录下,另外一种是将主题代码压缩成zip文件,然后通过ghost后台直接上传该文件
但是主题升级会有两个点需要注意
一:导航页里的contact是直接采用的formspree来实现的无需后台的邮件发送方式,登录formspree后注册账号,获取表单地址激活表单

二:在搜索文章关键字的时候,需要先生成content api对应的api key,具体的生成方式如下图所示
04api1
将上图的api key复制然后替换主题中文件api-key.hbs的内容,重启博客应用,报错,F12查看控制台发现是index里的一个变量searchApi的值出现数据格式错误,先看一看该变量在代码中的赋值语法
cat default.hbs

var searchApi = "{{@site.url}}/ghost/api/v3/content/posts/?key={{>api-key}}&limit=all&fields=id,title,excerpt,custom_
excerpt,url,published_at&formats=plaintext";

但是控制台中获取的变量值却是
var searchApi = "/ghost/api/v3/content/posts/?key=0e3770ce693eab6170df6b3d8d
&limit=all&fields=id,title,excerpt,custom_
excerpt,url,published_at&formats=plaintext";
但是正确的应该是

var searchApi = "/ghost/api/v3/content/posts/?key=0e3770ce693eab6170df6b3d8d&limit=all&fields=id,title,excerpt,custom_excerpt,url,published_at&formats=plaintext%22;

语法肯定是没问题的,应该是数据格式的问题,但一直也没有找出的问题所在,最后无奈直接将其写死
var searchApi = "{{@site.url}}/ghost/api/v3/content/posts/?key=0e3770ce693eab6170df6b3d8d&limit=all&fields=id,title,excerpt,custom_excerpt,url,published_at&formats=plaintext";