XAMPP环境部署Ghost博客 XAMPP反向代理Nodejs教程

云丽小哥_8887

云丽小哥_8887

2026-05-10

847人浏览

原创

ghost不能跑在xampp上,因其是node.js应用而非php,需全局安装ghost-cli、独立node环境及mysql手动配置,apache仅可反向代理,不可直接托管。

xampp环境部署ghost博客 xampp反向代理nodejs教程

Ghost 不能跑在 XAMPP 上,也绝不能放进 htdocs 目录用 Apache 直接访问——它根本不是 PHP 应用,Apache 压根不会执行它。你看到的 404、白屏或下载 index.html 文件,不是配置错了,是架构根本不匹配。

ghost install local 报错 “command not found” 或启动失败

这是最常卡住的第一步:你以为装了 XAMPP 就万事大吉,但 ghost 命令依赖全局安装的 ghost-cli,而 CLI 又强依赖系统级 node 和 npm。XAMPP 自带的环境完全不参与这个链路。

  • XAMPP 控制面板里的 Shell 不会读取你的系统 PATH,node -v 在 CMD 里能运行,在 Shell 里报错是常态
  • 别改 C:\xampp\shell.bat —— 升级 XAMPP 后会被覆盖,且易引发路径混乱
  • 正确做法:用 Windows Terminal / PowerShell / CMD(非 XAMPP 自带 Shell)执行 npm install -g ghost-cli,再进项目目录跑 ghost install local
  • 验证是否真可用:which node(macOS/Linux)或 where node(Windows),输出必须指向 C:\Program Files\nodejs\ 或类似真实安装路径,而非 XAMPP 目录

想用 XAMPP 的 MySQL 存 Ghost 数据,但 ghost install local 总连 SQLite

ghost install local 是开发快捷模式,硬编码用 SQLite,跳过数据库交互环节。它不读 config.production.json,也不理你 XAMPP 里 MySQL 开没开。要切 MySQL,必须绕过一键流程。

Json Schema Toolkit
Json Schema Toolkit

使用 JSON Schema 验证 JSON 数据,从示例 JSON 生成 schema,并将其转换为 TypeScript 接口、Python 数据类或 Markdown 文档。

下载
  • 先确保 XAMPP 中 MySQL 已启动(控制面板点 Start),默认 root 密码为空;若设过密码,记下来
  • 用浏览器打开 http://localhost/phpmyadmin,新建数据库,字符集选 utf8mb4,库名如 ghost_prod
  • 在 Ghost 项目根目录手动创建 config.production.json,填入 MySQL 连接参数,关键字段不能漏:
{
  "database": {
    "client": "mysql",
    "connection": {
      "host": "127.0.0.1",
      "user": "root",
      "password": "",
      "database": "ghost_prod",
      "charset": "utf8mb4"
    }
  }
}
  • 删掉 content/data/ghost.db(避免 Ghost 启动时误读 SQLite)
  • 运行 ghost setup --no-setup-linux-user --no-stack --no-prompt(跳过用户/服务/交互检查),再 ghost start

Apache 反向代理 Ghost 到 80 端口,但访问 localhost 显示 Apache 默认页

这说明 ProxyPass 规则根本没生效。Apache 默认监听 80 端口,Ghost 默认监听 2368 端口,两者本可共存,但代理配置错一个字母就会失效——不是 Ghost 没起来,是请求压根没转发过去。

  • 先确认模块启用:编辑 C:\xampp\apache\conf\httpd.conf,取消以下四行注释(删掉开头 #):
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule ssl_module modules/mod_ssl.so
  • 重启 Apache 后,终端进 C:\xampp\apache\bin,运行 httpd -M | findstr proxy,必须看到 proxy_module (shared) 和 proxy_http_module (shared)
  • 别在 httpd.conf 里写全局 ProxyPass —— 容易污染主配置。改 C:\xampp\apache\conf\extra\httpd-vhosts.conf,加完整虚拟主机块:
<virtualhost>
  ServerName ghost.local
  ProxyPreserveHost On
  ProxyPass / http://127.0.0.1:2368/
  ProxyPassReverse / http://127.0.0.1:2368/
</virtualhost>
  • 最后一步别漏:修改系统 C:\Windows\System32\drivers\etc\hosts,加一行 127.0.0.1 ghost.local
  • 验证顺序:先 curl http://127.0.0.1:2368 确认 Ghost 跑着;再 curl http://ghost.local 看是否返回相同内容

ghost start 成功但浏览器打不开,或提示 ERR_CONNECTION_REFUSED

Ghost 启动日志里写着 Running in development mode 或 Ghost is running... 并不等于它对外可访问。端口被占、防火墙拦截、或配置里写了 127.0.0.1 而不是 0.0.0.0,都会导致“能启不能连”。

  • 检查 Ghost 是否监听了通配地址:看日志末尾有没有 Listening on http://127.0.0.1:2368/ —— 如果是 127.0.0.1,那只有本机命令行能 curl,浏览器通过 localhost 访问也可能失败(尤其某些 Windows DNS 解析异常)
  • 临时解决:编辑 config.development.json,把 host 字段从 "127.0.0.1" 改成 "0.0.0.0"
  • 检查端口占用:netstat -ano | findstr :2368(Windows),看 PID 是否属于 node.exe;若有冲突,改 Ghost 端口:在 config 里设 "port": 2369,并同步更新 ProxyPass 目标地址
  • Windows 防火墙有时会静默拦截 Node.js 出站连接,尤其是首次运行。临时关掉防火墙测试一次,确认是不是它拦的

真正麻烦的从来不是配置项本身,而是每个环节都依赖前序环节的精确就位:Node.js 版本对得上、PATH 没被覆盖、MySQL 库存在且字符集正确、Apache 模块加载成功、hosts 文件改了、Ghost 的 host 和 port 与代理规则严丝合缝——漏掉任意一环,表现都是“打不开”,但原因天差地别。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

xampp nodejs js node

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2023.09.01

9864

6

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

5881

5

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

2075

5

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

2023.10.23

3668

4

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

2023.10.23

4374

6

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.03

3431

9

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.09

4877

8

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.13

3822

8

sprintf函数用法详解
sprintf函数用法详解

sprintf函数的用法:1、格式化字符串;2、指定输出宽度和精度;3、返回值。更多关于sprintf函数用法详解的内容,大家可以阅读下面的文章。

2023.11.27

11802

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程