在本地机器上安装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环境。
-
打开你的WSL终端(例如Ubuntu终端)。
-
通过运行
node --version、npm --version和python3 --version来检查你的工具是否已经安装完毕。 -
在WSL环境中全局安装Ghost CLI:
npm install -g ghost-cli@latest -
运行本地安装命令:
ghost install local -
启动服务器:
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内容管理系统环境,可以开始使用它来创建你的内容了。