================================================================================
                    蚂蚁视频 CMS 安装部署指南
================================================================================
更新日期：2026-08-04
适用项目：蚂蚁视频CMS（Node.js + MySQL/MariaDB）


--------------------------------------------------------------------------------
一、推荐系统与环境版本
--------------------------------------------------------------------------------

【操作系统】
  推荐：Linux（宝塔面板部署）
    - CentOS 7 / CentOS Stream 8+
    - Ubuntu 20.04 / 22.04 LTS
    - Debian 11 / 12
  也可：Windows Server（本机开发调试可用）

【推荐配置】
  最低：1核 2G 内存，20G 硬盘
  推荐：2核 4G 内存，40G 硬盘以上
  带宽：3Mbps 以上（视频站建议更高）

【软件环境版本】
  项目         推荐版本              说明
  ----------   -------------------   --------------------------------
  宝塔面板     最新稳定版            Linux 面板
  Nginx        1.20+ / 1.22+         反向代理（宝塔自带即可）
  Node.js      v16.18+ / v18 LTS     推荐 v18；最低可用 v16.18.1
  npm          随 Node 自带          v8+
  MySQL        5.7 / 8.0             推荐 MySQL 8.0
  或 MariaDB   10.5+ / 10.6+         亦可（勿用过新本地版直接导库到旧服）
  PM2/Node项目 宝塔「网站→Node项目」  用于守护进程（勿用已下架旧PM2插件）

【本机开发（Windows）】
  Node.js      v18 LTS 或 v20 LTS
  MariaDB      10.6+ / 11.x          或 MySQL 8.0
  浏览器       Chrome / Edge


--------------------------------------------------------------------------------
二、云服务器安全组（必开端口）
--------------------------------------------------------------------------------

  方向：入站（进）
  协议 TCP，远程 0.0.0.0/0（或仅你的办公 IP）

  端口      用途
  ------    ----------------------------
  22        SSH（Linux）
  3389      远程桌面（仅 Windows）
  80        网站 HTTP
  443       网站 HTTPS
  8888      宝塔默认面板（若改过端口则开对应端口）
  888       宝塔 phpMyAdmin（按需）
  20/21     FTP（按需）
  3306      MySQL（一般不要对公网开放，仅本机）

  说明：
  - Cloudflare 橙色云只回源 80/443，不会走自定义端口（如 66）
  - 宝塔面板端口以安装完成提示为准（例如 32265），安全组需同步放行


--------------------------------------------------------------------------------
三、安装宝塔面板（Linux）
--------------------------------------------------------------------------------

# CentOS
yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec

# Ubuntu / Debian
wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh ed8484bec

安装完成后终端会显示：
  - 面板地址（含端口）
  - 用户名、密码
请立即保存。若忘记可执行：
  bt default


--------------------------------------------------------------------------------
四、宝塔里安装运行环境
--------------------------------------------------------------------------------

1. 软件商店 → 安装：
   - Nginx（推荐）
   - MySQL 5.7 或 MySQL 8.0（推荐 8.0）
   - Node.js 版本管理器

2. 打开「Node.js 版本管理器」
   - 安装 Node v18（若列表只有 v16，安装 v16.18.1 亦可）
   - 设为「命令行版本」

3. 验证（宝塔终端或 SSH）：

   node -v
   npm -v

   若提示 command not found，关闭终端重开；或：
   ls /www/server/nodejs/
   export PATH=/www/server/nodejs/v18.x.x/bin:$PATH
   （把 v18.x.x 换成实际目录名）


--------------------------------------------------------------------------------
五、创建网站与数据库
--------------------------------------------------------------------------------

【1】创建数据库
  宝塔 → 数据库 → 添加数据库
  - 记下：数据库名、用户名、密码
  - 编码：utf8mb4

【2】上传程序
  将整个项目上传到例如：
    /www/wwwroot/你的域名或目录/

  目录内应包含：
    server.js
    package.json
    config/
    lib/
    public/
    scripts/
    ...

【3】创建/绑定网站
  宝塔 → 网站 → 添加站点
  - 域名：填你的域名（可先用 IP 测试）
  - 根目录：指向上面的项目目录
  - PHP：可纯静态或不选（本项目是 Node，不依赖 PHP）


--------------------------------------------------------------------------------
六、配置 MySQL 连接
--------------------------------------------------------------------------------

编辑文件：
  /www/wwwroot/你的站点/config/mysql.json

示例（请改成你在宝塔创建的真实信息）：

{
  "host": "127.0.0.1",
  "port": 3306,
  "user": "你的数据库用户名",
  "password": "你的数据库密码",
  "database": "你的数据库名",
  "charset": "utf8mb4",
  "connectionLimit": 10
}

注意：
  - host 用 127.0.0.1（同机 MySQL）
  - 密码大小写必须与宝塔完全一致
  - 这是「数据库账号」，不是后台登录账号


--------------------------------------------------------------------------------
七、安装依赖并启动（命令）
--------------------------------------------------------------------------------

# 进入项目目录（按实际路径修改）
cd /www/wwwroot/www.example.com

# 安装生产依赖
npm install --production

# 临时前台启动（测试用，关掉终端会停）
node server.js

# 成功时应看到类似：
#   [db] MySQL 已连接 ...
#   蚂蚁视频CMS 已启动: http://127.0.0.1:3000
#   后台管理: http://127.0.0.1:3000/admin  (admin / admin123)

# 本机检测（不要用 curl -I，本程序对 HEAD 可能返回 404）
curl -s -o /dev/null -w "%{http_code}\n" http://127.0.0.1:3000/
curl -s -o /dev/null -w "%{http_code}\n" http://127.0.0.1:3000/admin
# 正常应返回 200

# 后台常驻启动（推荐）：
# 宝塔 → 网站 → Node 项目 → 添加项目
#   项目目录：/www/wwwroot/你的站点
#   运行选项：自定义命令 → server.js
#   端口：3000
#   Node 版本：已安装的 v16/v18
#   用户：可先选 www，失败再改 root


--------------------------------------------------------------------------------
八、Nginx 反向代理（解决外网 404 / 502）
--------------------------------------------------------------------------------

网站设置 → 反向代理 → 添加：

  代理名称：mayi
  目标URL：http://127.0.0.1:3000
  发送域名：$host
  代理目录：/

说明：
  - 外网 80/443 → Nginx → 本机 3000 Node
  - 出现 502：Node 没运行或端口不对
  - 出现 nginx 404：反代未配或未生效
  - 改库/改配置后务必重启 Node 项目


--------------------------------------------------------------------------------
九、数据库初始化 / 导入本地数据
--------------------------------------------------------------------------------

【方式 A：空库自动建表（推荐新站）】
  配好 mysql.json 后直接启动 Node，程序会自动建表。
  若无管理员，可在 phpMyAdmin 执行：

INSERT INTO meta (meta_key, meta_value) VALUES
('admin', '{"username":"admin","password":"0b7cefcaa28b290d0f9c24b6df2d3abaf758bc007d23dad150cfbf57760a4c7c"}')
ON DUPLICATE KEY UPDATE meta_value=VALUES(meta_value);

  然后重启 Node。
  后台账号：admin
  后台密码：admin123
  （登录后请立即修改密码）

【方式 B：从本地覆盖导入】
  1）本机（已装 Node + 能连本地库）在项目目录执行：
       node scripts/export-for-bt.js
     生成：mayi_cms_bt_import.sql

  2）宝塔 → 数据库 → 导入 → 上传该 SQL → 导入

  3）重启 Node 项目

  注意：
  - 不要直接用 MariaDB 12 原始 mysqldump 往旧版 MySQL 导，易不兼容
  - 请使用 scripts/export-for-bt.js 导出的兼容 SQL
  - schema 参考：scripts/mysql-schema.sql（仅结构，不含业务数据）


--------------------------------------------------------------------------------
十、域名与 Cloudflare
--------------------------------------------------------------------------------

【解析】
  类型 A，主机 @ 和 www，记录值 = 服务器公网 IP
  例：107.x.x.x

【宝塔】
  网站 → 域名管理 → 添加你的域名（含 www）

【Cloudflare】
  - 源站 A 记录必须指向真实服务器 IP
  - 若源站只有 HTTP：SSL/TLS 先用「灵活 Flexible」
  - 安全组必须放行 80、443
  - 出现 Error 522：源站连不上（IP错 / 未开80·443 / SSL模式不对）
  - 可先把小云改「灰色仅DNS」验证源站是否正常


--------------------------------------------------------------------------------
十一、常用命令速查
--------------------------------------------------------------------------------

# 宝塔面板默认信息
bt default

# 查看 3000 端口是否在听
ss -lntp | grep 3000
# 或
netstat -lntp | grep 3000

# 测试本机站点
curl -s -o /dev/null -w "%{http_code}\n" http://127.0.0.1:3000/admin

# 查看 Node 临时日志（若用 nohup）
nohup node server.js > /tmp/mayi.log 2>&1 &
tail -f /tmp/mayi.log

# 结束占用 3000 的进程（慎用）
# fuser -k 3000/tcp

# 进入项目并重装依赖
cd /www/wwwroot/你的站点
npm install --production

# 导出兼容宝塔的 SQL（在开发机执行）
node scripts/export-for-bt.js


--------------------------------------------------------------------------------
十二、默认账号与路径
--------------------------------------------------------------------------------

  前台：     http://你的域名/   或  http://服务器IP/
  后台：     http://你的域名/admin
  默认账号： admin
  默认密码： admin123

  配置文件： config/mysql.json
  静态资源： public/
  素材库：   public/素材库/


--------------------------------------------------------------------------------
十三、常见问题
--------------------------------------------------------------------------------

1）npm: command not found
   → 未装 Node 或未设命令行版本；装好后重开终端

2）外网 502 Bad Gateway
   → Node 没启动；或反代不是 http://127.0.0.1:3000

3）外网 nginx 404
   → 未配反向代理，或网站根目录/域名绑错

4）后台 admin/admin123 进不去
   → 新库未写入管理员；执行第九节 SQL 重置并重启 Node

5）导入 SQL 报 Unknown column / CHECK / uca1400
   → 用 node scripts/export-for-bt.js 重新导出再导入

6）改完数据库仍无旧数据
   → 必须重启 Node 项目（内存缓存）

7）域名打不开、IP 可以
   → DNS 未指向本机 IP；或 Cloudflare 522（见第十节）

8）只开 VPN 反而连不上服务器
   → VPN 改分流/直连该服务器 IP，或管理时临时关 VPN


--------------------------------------------------------------------------------
十四、安装检查清单
--------------------------------------------------------------------------------

  [ ] 系统已安装宝塔
  [ ] 安全组已放行 80/443/面板端口
  [ ] 已装 Nginx + MySQL + Node（v16.18+ / v18）
  [ ] 已创建数据库并配置 config/mysql.json
  [ ] npm install --production 成功
  [ ] Node 项目常驻运行，本机 curl 3000 返回 200
  [ ] 网站已配置反向代理到 127.0.0.1:3000
  [ ] 能打开 /admin 并修改默认密码
  [ ] 域名解析正确（如需）
  [ ] 建议关闭 MySQL 3306 对公网访问


================================================================================
                         安装完成，祝使用顺利
================================================================================
