Files
hometown/docs/部署说明.md
2026-03-07 23:35:08 +08:00

3.2 KiB
Raw Permalink Blame History

前后端分离部署说明

项目支持前后端分离部署:前端为纯静态资源,后端为独立 Node API便于分别部署到静态主机与 API 服务器。


一、目录与职责

类型 目录/文件 说明
前端(静态) index.html, config.json, api.config.json, lib/, image/ 可部署到 Nginx、OSS、Vercel、GitHub Pages 等
后端API server/(含 server.js, db.js, index.js, package.json 单独部署到 Node 主机,仅提供 /api/* 接口

二、前端部署

  1. 构建静态包(在项目根目录):

    npm run build
    

    产出目录 dist/,内含:index.html, config.json, api.config.json, lib/, image/

  2. 配置 API 地址
    dist/ 部署到你的静态站点后,修改 dist/api.config.json(或部署前在根目录改好再 build

    {
      "apiBase": "https://你的API域名"
    }
    
    • 不填或空字符串 "" 表示与当前页面同源(例如 Nginx 反向代理了 /api 到后端时可用 "")。
    • 前后端不同域时填后端根地址,例如 https://api.example.com(不要以 / 结尾)。
      前端会请求 apiBase + '/api/config'apiBase + '/api/stats' 等。
  3. 上传:将 dist/ 内所有文件上传到静态主机或 CDN。


三、后端部署

  1. 只部署 API:进入后端目录并安装依赖、启动:

    cd server
    npm install
    npm start
    

    默认端口 3000可通过环境变量 PORT 修改。
    数据文件为 server/data/store.json(首次运行自动创建,纯 JSON无原生依赖

  2. 生产环境建议

    • 使用 pm2、systemd 等保活。
    • 如需限制跨域,设置环境变量 CORS_ORIGIN 为前端域名,例如:
      CORS_ORIGIN=https://你的前端域名

四、弹幕配置(后端)

弹幕默认不显示,由后端配置控制。

  • 接口:GET /api/config 返回示例:
    {
      "danmakuEnabled": false,
      "danmakuPosition": "top"
    }
    
  • 数据来源:server/data/store.json 中的 settings 对象:
    • danmaku_enabled"1" 开启弹幕,"0" 关闭(默认)。
    • danmaku_position:弹幕区域位置,目前仅使用 top(顶部)。

开启弹幕:在部署后端的机器上任选一种方式:

  1. 直接编辑 server/data/store.json,将 settings.danmaku_enabled 改为 "1"
  2. 或执行(需在 server 目录下):
cd server
node -e "
const fs=require('fs'),path=require('path');
const p=path.join(process.cwd(),'data','store.json');
const s=JSON.parse(fs.readFileSync(p,'utf8'));
s.settings.danmaku_enabled='1';
fs.writeFileSync(p,JSON.stringify(s,null,0));
console.log('已开启弹幕');
"

前端会周期性/首次请求 /api/config,收到 danmakuEnabled: true 后显示顶部弹幕并拉取留言。


五、本地联合运行(不分离)

在项目根目录:

npm install
npm start

会同时提供静态资源与 /api 接口(根目录 server.js 挂载 server/ 的 API适合本地开发。此时 api.config.jsonapiBase 保持为 "" 即可。