Ghost版本4升级5/sqlite迁移MySQL
本博客站部署的阿里云ECS是性能约束实例,价格不算低,还要计积分,高CPU占用就会消耗积分,性价比比较低。正好最近快到期了,就打算迁移到性价比更高的轻量服务器,顺便把Ghost升级到5。而5默认以及推荐使用的db是MySQL,直接升级会出现连接不到db的错误,可以通过强制指定sqlite,但功能受限。官方升级建议也是推荐4.x的sqlite直接reinstall。于是决定从sqlite迁移到MySQL,从4升级到5。
官方的升级和重安装都是基于cli的教程,docker版本为社区维护,从网上找到的这篇教程还比较详细。前几步基本按照原文说明操作即可,为方便阅读,我搬运过来,补充了一些差异内容:
- 备份阶段
- 导出内容:登录管理后台,在
Settings > Labs > Export your content
下导出博客内容。 - 导出成员:如果博客站有开放订阅且有订阅用户,在
Members
里面Export all members
导出csv文件(我的博客站没开放此功能,不需要此步骤) - 导出主题:在
Settings > Design
点击底部Change theme
在Installed
中找到应用的主题,点击…
在下拉菜单中点击Download
这里注意,如果使用的是较老的主题,在5里面是不兼容的,只能从兼容版本重新编辑。我之前应用的casper2.7.0就不能再使用了
- 上述备份完成后,停止docker,
docker-compose stop
- 导出内容:登录管理后台,在
- 配置docker
- 七牛插件: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
- 宿主机下通过nvm安装node18,然后进入到qn-store插件目录执行
- 配置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
- 启动docker,
docker-compose up -d
后台启动,启动后可通过docker-compose logs -f
观察日志,如果没有报错就顺利启动起来了。
- 七牛插件:ghost4使用的node版本是14,而5使用的node是18,因此需要在18环境下安装npm依赖。方法有两种:
- 备份恢复
- 通过设置的后台url访问ghost管理后台,首先设置一个管理员账号密码,然后分别访问Lab、Members、Design将第一步备份的内容恢复回来。
- 其中Design如果有报错,那么就从新主题重新配置,之前的文章就介绍过一些,这里不在赘述了。