部署指南
环境要求
| 组件 | 版本 | 用途 |
|---|---|---|
| JDK | 1.8 | 后端运行时 |
| Maven | 3.8+ | 后端构建 |
| Node.js | 16 LTS | 前端构建 |
| MySQL | 8.0+ | 数据库 |
| Redis | 6+ | 令牌与缓存 |
| Nacos | 2.1+ | 注册与配置中心 |
| Nginx | 1.20+ | 前端静态资源与 API 代理 |
| Docker(仅 Docker 部署) | 20.10+ | 容器化一键部署 |
数据库初始化
无论哪种部署方式,都需要先准备数据库。按顺序执行 platform-service/sql 下的三个脚本:
# 1. 系统库(用户、角色、菜单、租户、字典)
mysql -uroot -p < sql/witos_platform.sql
# 2. 需求响应业务表与虚拟电厂菜单
mysql -uroot -p < sql/vpp_dr.sql
# 3. Nacos 种子配置(网关路由、各服务配置,命名空间 vpp)
mysql -uroot -p < sql/witos_config.sql
witos_config.sql中的配置归属vpp命名空间。各服务bootstrap.yml已固定该命名空间,新建配置时不要误放 public。
方式一:普通部署
适合开发联调、生产环境或需要精细控制每台服务器的场景。
第一步:启动基础设施
分别安装并启动 MySQL、Redis、Nacos(Nacos 以 standalone 模式运行即可)。
第二步:导入数据库与检查配置
按上方“数据库初始化”章节执行三个 SQL 脚本。
导入后登录 Nacos 控制台(http://服务器IP:8848/nacos),进入命名空间 vpp,检查各服务配置中的:
- 数据库连接地址与密码
- Redis 连接地址与密码
- 网关路由目标地址
确保与实际环境一致。
第三步:构建后端
cd platform-service
mvn clean package -DskipTests
联调阶段可只构建需要的模块:
mvn -pl vpp-event-service -am package -DskipTests
mvn -pl vpp-dispatch-service -am package -DskipTests
第四步:启动后端服务
按以下顺序逐个启动(每个 jar 包在对应模块的 target 目录下):
1. vpp-gateway (端口 48080)
2. vpp-auth (端口 39200)
3. vpp-system (端口 39201)
4. vpp-event-service (端口 39310)
5. vpp-dispatch-service(端口 39320)
可选服务按需启动:vpp-file(39300)、vpp-gen(39202)、vpp-job(39204)、vpp-monitor(39100)。
第五步:构建并部署前端
cd pc_web
npm install
npm run build:prod
构建产物在 pc_web/dist 目录。将 dist 目录放到 Nginx 服务器上,Nginx 配置要点:
server {
listen 80;
server_name 你的域名;
# 前端页面
location / {
root /你的路径/dist;
try_files $uri $uri/ /index.html;
index index.html;
}
# API 代理到网关
location /prod-api/ {
proxy_pass http://网关地址:48080/;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
}
}
第六步:验证
浏览器访问 Nginx 地址,使用系统管理员账号登录,检查仪表盘数据、事件列表是否正常。
方式二:Docker 部署
适合演示、试点环境或快速搭建完整平台。一条命令拉起全部组件。
前置条件
- 已安装 Docker 和 Docker Compose
- 已完成“数据库初始化”中的 SQL 脚本准备(Docker 方式下由
copy.bat/copy.sh自动处理)
部署前必改配置
默认配置仅用于演示环境,上线前必须修改以下配置。
1. docker-compose.yml 中的数据库密码:
# witos-mysql 服务
environment:
MYSQL_ROOT_PASSWORD: password # ← 改成你的强密码
# witos-nacos 服务
environment:
MYSQL_PWD: password # ← 与上面保持一致
2. docker-compose.yml 中各服务的 Nacos 地址:
每个服务都有 NACOS_HOST 环境变量,默认指向容器内网 IP:
environment:
- NACOS_HOST=172.18.0.6 # ← 如果改了网络或独立部署 Nacos,需同步修改
- NACOS_PORT=8848
3. Nacos 配置中心的数据库连接:
witos_config.sql 导入后,在 Nacos 控制台(http://服务器IP:8848/nacos)检查命名空间 vpp 下的配置,确认:
- 数据库连接地址与密码是否与实际环境一致
- Redis 连接地址与密码是否正确
- 网关路由是否指向正确的服务地址
4. Redis 密码:
修改 redis/conf/redis.conf 中的 requirepass,并同步更新 Nacos 配置中对应的 Redis 密码。
第一步:打包并复制文件
Windows:
cd platform-service/docker
copy.bat
Linux:
cd platform-service/docker
sh copy.sh
该脚本会:
- 编译后端(
mvn clean package) - 编译前端(
npm install+npm run build:prod) - 将 SQL 脚本复制到 MySQL 初始化目录
- 将前端 dist 复制到 Nginx 目录
- 将各服务 jar 包复制到对应 Docker 构建目录
第二步:构建镜像
Windows:
cd platform-service/docker
build_image.bat
Linux:
cd platform-service/docker
# 逐个构建镜像(与 build_image.bat 等效)
cd nginx && docker build -t vpp/vpp-nginx:v1.0 . && cd ..
cd nacos && docker build -t witos/vpp-register:v1.0 . && cd ..
cd vpp/gateway && docker build -t witos/vpp-gateway:v1.0 . && cd ../..
cd vpp/auth && docker build -t witos/vpp-auth:v1.0 . && cd ../..
cd vpp/modules/system && docker build -t witos/vpp-system:v1.0 . && cd ../../..
cd vpp/modules/file && docker build -t witos/vpp-file:v1.0 . && cd ../../..
cd vpp/modules/job && docker build -t witos/vpp-job:v1.0 . && cd ../../..
cd vpp/modules/gen && docker build -t witos/vpp-gen:v1.0 . && cd ../../..
cd vpp/visual/monitor && docker build -t witos/vpp-monitor:v1.0 . && cd ../../..
cd vpp/demo && docker build -t witos/vpp-demo:v1.0 . && cd ../..
cd vpp/event-service && docker build -t witos/vpp-event-service:v1.0 . && cd ../..
cd vpp/dispatch-service && docker build -t witos/vpp-dispatch-service:v1.0 . && cd ../..
该脚本在复制文件基础上额外为每个服务构建 Docker 镜像。
第三步:启动全部服务
一键启动全部组件:
cd platform-service/docker
docker-compose up -d
Linux 分步启动(推荐,便于排查问题):
cd platform-service/docker
# 1. 开放防火墙端口(仅首次需要)
sh deploy.sh port
# 2. 启动基础环境(MySQL、Redis、Nacos)
sh deploy.sh base
# 3. 等待基础环境就绪后,启动全部业务服务
sh deploy.sh modules
其他运维命令:
sh deploy.sh stop # 停止全部
sh deploy.sh rm # 删除全部(需先 stop)
Docker Compose 会自动编排以下组件:
| 容器 | 端口 | 说明 |
|---|---|---|
| witos-mysql | 3306 | MySQL 8.0 |
| witos-redis | 6379 | Redis |
| witos-nacos | 8848 | Nacos 注册/配置中心 |
| witos-nginx | 80 | 前端与 API 入口 |
| vpp-gateway | 48080 | 网关 |
| vpp-auth | 39200 | 认证中心 |
| vpp-system | 39201 | 系统管理 |
| vpp-gen | 39202 | 代码生成 |
| vpp-file | 39300 | 文件服务 |
| vpp-job | 39204 | 任务调度 |
| vpp-event-service | 39310 | 事件服务 |
| vpp-dispatch-service | 39320 | 调度服务 |
| vpp-monitor | 39100 | 监控面板 |
第四步:验证
浏览器访问 http://服务器IP,检查登录、仪表盘与事件流程。
常用 Docker 命令
# 查看运行状态
docker-compose ps
# 查看某个服务日志
docker logs -f vpp-event-service
# 停止全部
docker-compose down
# 重启某个服务
docker-compose restart vpp-event-service
定时任务
事件服务内置多个定时任务,无需额外配置即可自动运行:
| 任务 | 频率 | 作用 |
|---|---|---|
| 事件状态流转 | 每分钟 | 按起止时间自动推进事件状态 |
| 执行监测刷新 | 每分钟 | 更新目标与实际功率对比 |
| 分钟功率采集 | 每 15 分钟 | 采集充电桩实时功率 |
| 日功率汇总 | 每日 00:10 | 汇总前一日功率数据 |
| 容量快照 | 每小时过 5 分 | 记录可调容量用于趋势展示 |
| 桩状态刷新 | 每小时整点 | 刷新设备在线状态 |
单实例部署无需额外配置。多实例部署前需为这些任务引入分布式锁防止重复执行。
健康检查
部署完成后至少检查以下项目:
- 网关、认证中心、系统服务与两个业务服务在 Nacos 全部注册
- 登录成功,菜单按角色正确显示
- 仪表盘有容量、结算与设备在线数据
- 创建测试事件后,状态能按起止时间自动流转
- 生成评估与结算后,金额与三方分账可复核
- 日志中没有输出明文密码或令牌
生产安全建议
- 数据库口令、Redis 口令通过环境变量或配置中心注入,替换默认值。
- 不在 Git、配置样例、构建日志中保存生产密钥。
- 所有服务器保持时间同步,事件状态流转依赖时钟准确。
- 对外入口使用 HTTPS,后端管理通道仅向受信网络开放。
- 发布前备份数据库、关键配置和当前前端静态目录。
- 日志按服务分文件落盘并定期归档,便于回溯状态流转与任务执行。
