在本地机器上安装Ghost内容管理系统,是开发主题和测试新功能的好方法。但如果你使用的是Windows系统或Docker,可能会遇到一些阻碍你进展的错误,而调试这些错误又会占用你原本用于开发的時間。

在本指南中,你将了解到三种常见的Ghost CMS部署错误的根本原因及相应的解决方法:

  • 错误1: 在Windows系统中安装SQLite时出现故障。

  • 错误2: Docker容器因内存限制而崩溃,显示代码137。

  • 错误3: 在ActivityPub网络选项卡中出现“加载中断”错误。

读完这篇文章后,你将能够搭建出一个稳定、可正常使用的本地Ghost环境。你也会知道如何正确使用WSL来运行Node.js应用程序,如何管理Docker资源,以及如何成功配置Ghost的新社交网络功能。

错误1:在Windows系统中安装SQLite失败

故障现象

当你在Windows机器上运行命令ghost install local时,安装过程会失败。你会在终端中看到一长串红色文本,内容大致如下:

错误:无法找到模块'sqlite3'
...
node-pre-gyp ERR! 错误信息:执行失败…
...
MSB4019:导入的项目“C:\Microsoft.Cpp.Default.props”未找到。

这个错误通常会提到“sqlite3”,并说明“执行失败”或“该模块缺失”。

故障原因

Ghost使用SQLite来存储博客数据。SQLite是一种“原生模块”,这意味着它需要一段特定的代码,这段代码必须根据你的计算机系统进行定制编译才能正常使用。

由于Ghost最初是为在Linux服务器上运行而设计的,因此它期望能够找到Linux系统的构建工具来生成这些必要的文件。而Windows系统使用的工具和文件组织方式与Linux不同,因此当Ghost CLI试图在Windows上生成SQLite相关文件时,会找不到所需的工具,从而导致安装失败。使用WSL可以为Ghost提供它所需要的Linux环境。

解决方法

你可以使用Windows Subsystem for Linux(WSL)来搭建一个可正常使用的Ghost环境。

  1. 打开你的WSL终端(例如Ubuntu终端)。

  2. 通过运行node --versionnpm --versionpython3 --version来检查你的工具是否已经安装完毕。

  3. 在WSL环境中全局安装Ghost CLI:

    npm install -g ghost-cli@latest
  4. 运行本地安装命令:

    ghost install local
  5. 启动服务器:

    ghost start

如何验证安装是否成功

打开你的网页浏览器,访问http://localhost:2368。你应该能够看到Ghost的默认欢迎页面正常加载,而不会出现任何错误。

错误2:Docker容器以代码137退出

症状表现:

当您使用Docker Compose运行Ghost时,相关容器会崩溃。终端日志中会出现“Ghost管理容器以代码137退出”或“由于内存限制,管理服务被终止”这样的信息。

原因分析:

为什么会发生这种情况呢?其实,错误代码137表示您的计算机内存不足,因此系统停止了相关容器的运行。通常情况下,如果在普通的电脑上尝试运行完整的Ghost开发环境(其中包含15种以上的工具),就会遇到这种问题。

解决方法:

要解决这个错误,您可以改用官方提供的Ghost Docker镜像来进行简单配置。

首先,需要停止并删除那些出现问题的容器:

docker-compose down -v
docker system prune -a

然后创建一个新的`docker-compose.yml`文件,其中只包含Ghost和数据库这些基本组件:

services:
  ghost:
    image: ghost:latest
    restart: always
    ports:
      - "2368:2368"
    environment:
      database__client: mysql
      database__connection__host: mysql
      database__connection__user: root
      database__connection__password: yourpassword
      database__connection__database: ghost
      url: http://localhost:2368
    volumes:
      - ghost_content:/var/lib/ghost/content

  mysql:
    image: mysql:8.0
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: yourpassword
      MYSQL_DATABASE: ghost
    volumes:
      - mysql_data:/var/lib/mysql

volumes:
  ghost_content:
  mysql_data:

最后,重新启动这些容器即可。

docker-compose up -d

如何验证修复效果:

在终端中输入`docker-compose ps`,应该会看到`ghost`和`mysql`这两个容器都处于“运行中”状态。

错误3:网络分析功能出现“加载中断”错误

症状表现:

当您在本地Ghost管理面板中点击“分析 → 网络”选项卡时,页面会显示“加载中断”的错误信息。同时,终端日志中也会出现404错误以及Webhook调用失败的相关记录:

INFO "GET /.ghost/activitypub/v1/feed/reader/" 404 52ms
ERROR 未找到Webhook密钥——无法初始化服务

原因分析:

“网络”选项卡实际上是一个用于处理ActivityPub数据的工具,而非常规的分析面板。出现这种错误的原因在于,系统并未为本地使用环境配置好ActivityPub相关功能。要使该功能正常工作,需要额外的工具(如Caddy、Redis),并且必须使用不包含端口号的完整网址。

解决方法:

要解决这个错误,只需运行Ghost并安装所需的Docker工具,然后更新本地配置文件以启用社交网络功能。

首先,从Ghost文件夹中启动所需的工具(Caddy、MySQL、Redis):

SSH_AUTH_SOCK=/dev/null docker compose up -d caddy mysql redis

接着打开config.local.json文件,将URL设置为纯localhost地址(删除:2368端口号),并启用开发者功能:

{
    "url": "http://localhost",
    "social_webenabled": true,
    "enableDeveloperExperiments": true
}

停止当前运行的Ghost进程:

pkill -f "yarn dev:ghost"

然后使用新的配置重新启动Ghost:

yarn dev:ghost

如何进行验证:

再次登录Ghost管理面板,点击分析 → 网络。错误信息将会消失,此时你会看到ActivityPub数据流。

总结

在本地环境中进行配置设置可能会遇到很多困难,尤其是当需要同时使用Windows系统、Docker以及像ActivityPub这样的新功能时。

通过解决这三个问题,你不仅成功让Ghost正常运行,还学会了如何利用WSL绕过Windows系统的限制、如何管理Docker的内存资源,以及了解Ghost是如何处理社交网络请求的。

现在,你已经拥有一个稳定、快速且功能完备的Ghost内容管理系统环境,可以开始使用它来创建你的内容了。

让我们保持联系吧!你可以在我的技术写作作品集中查看我的最新成果,或者通过LinkedIn

Comments are closed.