Ghost 博客的 Node 版本升级到 18.xx.x 的解决方案

Ghost 5.71.0 及以上版本不支持 Node 16,要使用新版 Ghost CMS 需将 Node.js 升级至 18,Ghost 官方推荐使用 Node v18 Hydrogen LTS。生产环境建议使用官方推荐版本,经过严格测试。升级 Node.js 需配置 Nodesource GPG 密钥、创建 deb 存储库并安装/升级 Node.js。

主页 > 博客 > Ghost 博客的 Node 版本升级到 18.xx.x 的解决方案

从 Ghost 5.71.0版本开始,不再支持 Node 16 的环境。这意味着对于较新的 Ghost CMS 版本,你需要将 Node.js 版本升级到 18,Ghost 官方当前推荐的 Node 版本是 Node v18 Hydrogen LTS

Ghost 博客的 Node 版本升级到 18.xx.x 的解决方案

在生产环境中最好保持最新的 Ghost 官方推荐的 Node 版本,因为该版本也在 Ghost(Pro) 的生产中使用,这意味着它经过了严格的测试,并且 Ghost 核心团队正在积极修复问题。

如何升级 Node.js

Node 已经更改其分发方法,这意味着需要进行一些配置调整才能升级。请按照以下步骤进行升级:

1.下载并导入 Nodesource GPG 密钥

# Update local package index
sudo apt-get update
# Install necessary packages for downloading and verifying new repository information
sudo apt-get install -y ca-certificates curl gnupg
# Create a directory for the new repository's keyring, if it doesn't exist
sudo mkdir -p /etc/apt/keyrings
# Download the new repository's GPG key and save it in the keyring directory
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg

2.创建 deb 存储库

# Define the desired Node.js major version
NODE_MAJOR=18
# Add the new repository's source list with its GPG key for package verification
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_${NODE_MAJOR}.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list

3.安装/升级 Node.js:

# Update local package index to recognize the new repository
sudo apt-get update
# Install Node.js from the new repository
sudo apt-get install -y nodejs

更新你的 Ghost 版本

Ghost 官方不建议同时更新 Node 和 Ghost,重新安装当前版本的 Ghost 可确保 Node 首先正确更新,这将使 Ghost 更新过程顺利。

1.找出你当前的 Ghost 版本:

ghost version

2.要重新安装当前版本的 Ghost:

ghost update {your_version} --force

添加--force确保触发依赖项的重新安装。

错误“连接 ECONNREFUSED ::1:3306”

在 NodeJS 升级并尝试运行ghost update之后,即使更新过程成功,可能也会收到以下错误:

Message: Ghost was able to start, but errored during boot with: connect ECONNREFUSED ::1:3306
Help: Unknown database error

事实证明,这是因为 Node v18 更喜欢 ipv6 解析而不是 ipv4。根据你的 MySQL 配置,如果它没有侦听 ipv6 接口,那么节点将无法连接到它。有一个快速解决方案,通过在 Ghost 配置中将数据库主机从 localhost 更改为 127.0.0.1

1.打开你的config.production.js文件

  "database": {
    "client": "mysql",
    "connection": {
      "host": "localhost",
      "user": "your_user",
      "password": "your_pw",
      "database": "your_db"
    }
  },

2.在database部分中,更改host属性,然后保存文件

"host": "127.0.0.1"

3.重启 Ghost 项目

ghost restart

你的 Ghost 项目现在应该正在启动,并能正常运行。

总结

Ghost 5.71.0 及以上版本不支持 Node 16,要使用新版 Ghost CMS 需将 Node.js 升级至 18,Ghost 官方推荐使用 Node v18 Hydrogen LTS。生产环境建议使用官方推荐版本,经过严格测试。升级 Node.js 需配置 Nodesource GPG 密钥、创建 deb 存储库并安装/升级 Node.js。Ghost 更新前最好重新安装当前版本以确保 Node 正确更新。在 NodeJS 升级后可能遇到 ECONNREFUSED 错误,解决方法是将 Ghost 配置中的数据库主机从 localhost 改为 127.0.0.1。通过这些步骤,你的 Ghost 项目应能正常启动。

Ghost 博客的 Node 版本升级到 18.xx.x 的解决方案
从 Ghost 5.71.0版本开始,不再支持 Node 16 的环境。这意味着对于较新的 Ghost CMS 版本,你需要将 Node.js 版本升级到 18,Ghost 官方当前推荐的 Node 版本是 Node v18 Hydrogen LTS。 在生产环境中最好保持最新的 Ghost 官方推荐的 Node 版本,因为该版本也在 Ghost(Pro) 的生产中使用,这意味着它经过了严格的测试,并且 Ghost 核心团队正在积极修复问题。 如何升级 Node.js Node 已经更改其分发方法,这意味着需要进行一些配置调整才能升级。请按照以下步骤进行升级:2.下载并导入 Nodesource GPG

知识扩展: