TrafficAudit 交通货运统计审核系统 —— 部署包({stamp})
|
========================================================
|
|
【目录结构】
|
backend/
|
traffic-audit-server-1.0.0-SNAPSHOT.jar 后端程序(含全部依赖,**已内嵌前端**)
|
docs/ 报表模板与运行数据目录(必需,勿删)
|
application.yml 外部配置(改这里即可,无需重新打包)
|
start-backend.cmd / start-backend.sh 前台启动脚本(人工调试用,关了窗口就停)
|
trafficAudit.exe WinSW 服务包装器(把 java 变成 Windows 服务,勿删勿改名)
|
trafficAudit.xml WinSW 服务配置(服务名/启动方式/日志/失败重启策略)
|
install-service.ps1 注册/查看/重启/删除 Windows 服务(开机自启,推荐)
|
start-backend-service.cmd 非交互启动器(无 pause、写 app.log,配合计划任务用)
|
install-autostart.ps1 备选:注册“计划任务”方式的开机自启
|
frontend/
|
dist/ 前端构建产物(备用:想用 nginx 托管时用)
|
nginx.conf.example nginx 配置示例
|
db/
|
init.sql 建库建表 + 预置账号(必须执行)
|
sql_city_bus.sql 城市客运-公交月度表(必须执行)
|
sql_city_taxi.sql 城市客运-出租月度表/出租授权表(必须执行)
|
sql_wyc.sql 网约车全省总量表/订单分市州表(必须执行)
|
sql_holiday.sql 专项统计-重要节假日表(旧库缺表时执行)
|
sql_holiday_decimal_migration.sql 节假日数值列精度迁移(旧库升级)
|
sql_holiday_comparison_base_migration.sql 节假日环比基期字段迁移(旧库升级)
|
README-部署说明.txt
|
|
【部署机环境要求】
|
JDK 8(必需)
|
MySQL 5.7 / 8.0(必需)
|
**不需要 Redis**(代码未使用;旧版说明里的 Redis 是遗留配置,可忽略)
|
**不需要 nginx**(前端已内嵌进 jar,访问 8090 即可;nginx 仅为备选方案)
|
|
【操作系统兼容性】
|
开机自启用的是 Windows 服务,而“自动启动 / 延迟启动 / 失败自动重启”是系统自带能力,
|
从 Win7 SP1 到 Win11、Server 2008 R2 到 Server 2022/2025 机制完全一样。差别只在服务包装器
|
trafficAudit.exe 依赖什么运行时:
|
- 本包内的 trafficAudit.exe 是 WinSW 2.12.0 的 x64 自包含构建(自带 .NET 6 运行时,已校验 SHA-256),
|
**不需要另外安装 .NET Framework**;推荐用于 64 位 Win10 / Win11 / Server 2016 及以上。
|
- Win7 SP1 / Server 2008 R2 / Server 2012(R2):自包含版通常也能跑(Win7 SP1 需先打 KB2533623);
|
若报缺少 api-ms-win-*.dll 之类,换成官方 thin 构建:把 WinSW.NET461.exe 下载后改名成
|
trafficAudit.exe 覆盖(配置 trafficAudit.xml 不用改),它需 .NET Framework 4.6.1+:
|
https://github.com/winsw/winsw/releases/download/v2.12.0/WinSW.NET461.exe
|
- 32 位系统:把包装器换成 WinSW-x86.exe(同一下载页)。
|
- Win7 / Server 2012 本身已过微软支持期,新服务器建议直接上 Server 2016 及以上。
|
- 脚本要求:install-service.ps1 在 Windows PowerShell 2.0+ 下可用(Win7 自带 2.0,已做兼容);
|
3.2 的计划任务脚本用到了 New-ScheduledTask* 命令,需要 Win8 / Server 2012 及以上。
|
|
【部署步骤】
|
1. 初始化数据库(4 个脚本都要执行,顺序如下)
|
mysql --default-character-set=utf8mb4 -u root -p < db/init.sql
|
mysql --default-character-set=utf8mb4 -u root -p traffic_audit < db/sql_city_bus.sql
|
mysql --default-character-set=utf8mb4 -u root -p traffic_audit < db/sql_city_taxi.sql
|
mysql --default-character-set=utf8mb4 -u root -p traffic_audit < db/sql_wyc.sql
|
注:全新库的 init.sql 已含节假日 4 张表;若是在早期版本库上补节假日模块,再执行 db/sql_holiday.sql,并按需执行两个迁移脚本。
|
预置账号:admin / admin123(首次登录后请改密码)
|
|
2. 改配置 backend/application.yml
|
- spring.datasource.url / username / password :改成部署机的 MySQL(默认端口 3306)
|
- jwt.secret :改成一串随机字符串(**必须是 Base64 合法字符且长度是 4 的倍数**,如 32 位十六进制;填中文会登录失败)
|
- deepseek.api-key :需要 AI 分析时填,不需要可留空
|
注:application.yml 与 jar 同级即生效,不用重新打包。
|
|
3. 启动后端(在 backend 目录下)
|
Windows:双击 start-backend.cmd
|
Linux: sh start-backend.sh
|
成功标志:出现 "Started TrafficAuditApplication" 与 "Tomcat started on port(s): 8090"
|
|
3.1 Windows 开机自启(推荐:注册成 Windows 服务,一次配置长期生效)
|
前提:backend 目录下的 trafficAudit.exe / trafficAudit.xml / install-service.ps1 都已随本部署包提供,
|
不需要另外下载 WinSW,也不需要给 java 装别的东西。
|
在 backend 目录下,用【管理员】PowerShell 执行:
|
powershell -NoProfile -ExecutionPolicy Bypass -File install-service.ps1
|
效果:注册 Windows 服务 TrafficAuditBackend,开机自动启动(延迟启动,先等 MySQL 就绪),
|
不需要任何用户登录;java 进程异常退出由服务管理器自动重启(10 秒 / 30 秒 / 60 秒递增重试,
|
1 小时后重试计数清零)。服务以 LocalSystem 身份运行。
|
脚本会自动定位 java.exe(JAVA_HOME → PATH → JavaSoft 注册表 → Program Files),
|
并把绝对路径写进 trafficAudit.xml(SYSTEM 服务的 PATH 与登录用户不同,写绝对路径更稳)。
|
常用参数:
|
-Status 查看服务状态(不需要管理员)
|
-Restart 重启服务 -Remove 停止并删除服务
|
-NoStart 只注册不启动 -JavaPath "D:\jdk8\bin\java.exe" 手动指定 JDK
|
日志:backend\logs\trafficAudit.out.log(运行输出)与 trafficAudit.err.log(错误输出),
|
单个文件 10MB,保留 10 个滚动文件。
|
验证:浏览器打开 http://<部署机IP>:8090 ,或
|
(Invoke-WebRequest http://127.0.0.1:8090 -UseBasicParsing).StatusCode
|
注意:
|
- 开机自启靠服务的“自动”启动类型;如果把它改成“手动”,就不会再随机器启动。
|
- 重复执行 install-service.ps1 是安全的:会先停服务再重新注册并启动。
|
- 同一台机不要同时启用下面的计划任务方式,两个进程会抢 8090 端口。
|
- 建议把部署包放在 D:\trafficAudit 这类简单路径;放在某些用户目录下时 LocalSystem
|
可能没有写权限,日志会报权限错误。
|
|
3.2 备选:计划任务方式(不想把后端装成服务时用,与 3.1 二选一)
|
在 backend 目录下,用【管理员】PowerShell 执行:
|
powershell -NoProfile -ExecutionPolicy Bypass -File install-autostart.ps1
|
效果:注册计划任务 TrafficAuditBackend,开机延迟 60 秒后以 SYSTEM 身份运行 start-backend-service.cmd,
|
不需要用户登录,失败自动重试 3 次,运行日志写在 backend\app.log。
|
常用参数:-DelaySeconds 90(改延迟秒数) -StartNow(注册后立即启动一次)
|
-Status(查看状态) -Remove(删除开机自启)
|
注:启动器优先用 JAVA_HOME\bin\java.exe,找不到时回退 PATH;检测到 8090 已在监听则直接退出。
|
|
4. 访问系统
|
浏览器打开 http://<部署机IP>:8090 (前端已内嵌,页面与接口同源)
|
账号:admin / admin123
|
|
【数据迁移(可选)】
|
想把本机数据一并搬到新机器,用 mysqldump(本机 MySQL 若不在 3306,按实际端口改):
|
mysqldump -h 127.0.0.1 -P 3306 -u root -p --databases traffic_audit > traffic_audit_full.sql
|
再在新机器执行:
|
mysql -u root -p < traffic_audit_full.sql
|
注意:全量 dump 会带上本机的账号密码,覆盖 init.sql 预置的 admin 账号。
|
|
【常见问题】
|
0. 启动报 java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: NO):
|
“using password: NO” = 后端拿到的数据库密码是空串(不是密码错)。
|
检查 backend/application.yml 是否与 jar 同级且 spring.datasource.password 已填真实密码;
|
若未改 application.yml,也可用环境变量 TRAFFIC_DB_PASSWORD 代替。改完重启即可,无需重新打包。
|
1. 启动报「未找到数据目录 docs」/ 导出报「未找到模板文件」:
|
必须在 backend 目录下启动(jar 与 docs 同级),不要只拷 jar。
|
2. 报表导出报「未找到汇总表母版《YYYY年M月道路运输量汇总表.xlsx》」:
|
docs/生成汇总大表 下缺少该月份母版;把源机器的该文件拷过去。
|
3. 8090 端口被占用:改 application.yml 的 server.port 后重启。
|
4. 页面打开是空白:确认访问的是 http://<IP>:8090 根路径,且浏览器强制刷新(Ctrl+F5)。
|
5. 上传大文件失败:后端限制 100MB,已配置;如前面还挂了 nginx,需同步放大 client_max_body_size。
|
6. 服务已注册但 8090 打不开:看 backend\logs\trafficAudit.err.log 的报错内容;
|
服务方式下用的是 backend\application.yml,password 必须是真实 MySQL 密码(占位文字会导致 using password: NO)。
|
7. 服务报“拒绝访问”或写不了日志:部署目录权限不足。
|
把部署包放到 D:\trafficAudit 这类简单路径,或给 LocalSystem 授予该目录的读写权限。
|
8. 想临时取消开机自启但保留服务:Set-Service TrafficAuditBackend -StartupType Manual
|
|
【停止服务】
|
服务方式: Stop-Service TrafficAuditBackend (重新启动:Start-Service TrafficAuditBackend)
|
彻底删除开机自启:install-service.ps1 -Remove
|
前台启动: 关闭 start-backend.cmd 窗口
|
计划任务: Stop-ScheduledTask -TaskName TrafficAuditBackend
|
Linux: Ctrl+C,或 kill 对应 java 进程(ps -ef | grep java)
|