Ghost版本4升级5/sqlite迁移MySQL

Ghost版本4升级5/sqlite迁移MySQL
Photo by JESHOOTS.COM / Unsplash

本博客站部署的阿里云ECS是性能约束实例,价格不算低,还要计积分,高CPU占用就会消耗积分,性价比比较低。正好最近快到期了,就打算迁移到性价比更高的轻量服务器,顺便把Ghost升级到5。而5默认以及推荐使用的db是MySQL,直接升级会出现连接不到db的错误,可以通过强制指定sqlite,但功能受限。官方升级建议也是推荐4.x的sqlite直接reinstall。于是决定从sqlite迁移到MySQL,从4升级到5。

官方升级建议

官方的升级和重安装都是基于cli的教程,docker版本为社区维护,从网上找到的这篇教程还比较详细。前几步基本按照原文说明操作即可,为方便阅读,我搬运过来,补充了一些差异内容:

  • 备份阶段
    1. 导出内容:登录管理后台,在Settings > Labs > Export your content下导出博客内容。
    2. 导出成员:如果博客站有开放订阅且有订阅用户,在Members里面Export all members导出csv文件(我的博客站没开放此功能,不需要此步骤)
    3. 导出主题:在Settings > Design点击底部Change themeInstalled中找到应用的主题,点击在下拉菜单中点击Download

      这里注意,如果使用的是较老的主题,在5里面是不兼容的,只能从兼容版本重新编辑。我之前应用的casper2.7.0就不能再使用了

    4. 上述备份完成后,停止docker,docker-compose stop
  • 配置docker
    1. 七牛插件:ghost4使用的node版本是14,而5使用的node是18,因此需要在18环境下安装npm依赖。方法有两种:
      • 宿主机下通过nvm安装node18,然后进入到qn-store插件目录执行npm i。如果要保持宿主机纯净,则通过下面方法在docker中安装
      • 执行docker run -it -v ${你的qn-store目录地址}:/qn ghost:5-alpine bash进入到ghost环境,并将qn-store地址映射到容器/qn下。进入qn,执行npm i
    2. 配置docker-compose,基本上没什么要特别说明的,主要就是多加了一个MySQL的container,然后env中设置好db的账号密码、库名,ghost就能正常使用了。
      version: '3.5'
      services:
        ghostpi:
          image: ghost:alpine
          restart: unless-stopped
          environment:
            - database__client=mysql
            - database__connection__host=ghostpi-db
            - database__connection__user=ghost
            - database__connection__password=yourSecurePasswordGoesHere
            - database__connection__database=ghost
            - NODE_ENV=production
            - url=https://${DOMAIN}
          volumes:
            - /location/of/your/volume/folder/content:/var/lib/ghost/content
          depends_on: ## This ensures your Ghost blog waits for the database conatiner to run
            - ghostpi-db
      
        ghostpi-db:
          image: mysql:8.0
          restart: unless-stopped
          container_name: ghostpi-db
          cap_add:
            - SYS_NICE
          environment:
            - MYSQL_ROOT_PASSWORD=YourSecureRootPasswordGoesHere
            - MYSQL_DATABASE=ghost
            - MYSQL_USER=ghost
            - MYSQL_PASSWORD=YourSecurePasswordGoesHere
          volumes:
          ## You'll need to create a new folder on your system for the Docker volume
            - /location/of/your/volume/folder/db:/var/lib/mysql
      
    3. 启动docker,docker-compose up -d后台启动,启动后可通过docker-compose logs -f观察日志,如果没有报错就顺利启动起来了。
  • 备份恢复
    1. 通过设置的后台url访问ghost管理后台,首先设置一个管理员账号密码,然后分别访问Lab、Members、Design将第一步备份的内容恢复回来。
    2. 其中Design如果有报错,那么就从新主题重新配置,之前的文章就介绍过一些,这里不在赘述了。