Files
jcgl/docs/08-部署与配置.md

7.8 KiB
Raw Permalink Blame History

08 部署与配置

1. 构建与运行

1.1 环境要求

组件 要求
JDK 8
Maven 3.6+
数据库 KingbaseES 8(部分 Profile 仍接 Oracle)
缓存 Redis(Session)
电话 Asterisk + AMI 账号 + 会议桥 Conf-01
串口 广播/话机控制串口(默认 COM1,Linux 下为 /dev/ttyS0 等)
文件 照片、离寓抓拍、录音的可读写目录

1.2 构建

cd yktgl
mvn clean package -DskipTests
  • pom.xml 未声明 <packaging>,默认生成 jar。
  • 入口继承 SpringBootServletInitializer,如需部署到外部 Tomcat,可改为 <packaging>war</packaging> 并排除内嵌容器。
  • 构建前注意 pom.xml 中 Boot 3.x 依赖版本与 Boot 2.6.13 的兼容问题(见 09)。

1.3 启动

java -jar yktgl-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod

或:

java -Dspring.profiles.active=prod -jar yktgl-0.0.1-SNAPSHOT.jar

默认端口 8081,上下文路径 /yktgl。

2. Profile 对照

Profile 公寓 gyid / gymc 数据源 备注
local TMXC 图们行车公寓 Kingbase 127.0.0.1:54321/gygl 本机调试,Redis/AMI/串口均本机
dev 未启用(注释为 TLXC) Kingbase 10.32.209.76:54321/gygl 开发环境
prod TLNXC 通辽南行车公寓 Kingbase 10.33.165.41:54321/gygl 生产
tl TLXC 通辽行车公寓 Kingbase 10.32.209.76:54321/gygl 通辽
sjt SJTXC 苏家屯行车公寓 Kingbase 10.32.209.76:54321/gygl 苏家屯
byq BYQXC 鲅鱼圈行车公寓 Oracle 10.32.116.45/db3 仍在 Oracle
cc SJTXC 苏家屯行车公寓 Oracle 10.32.5.175/rlxt 仍在 Oracle,注意与 sjt 同名不同库
dl DLXC 大连行车公寓 Oracle 10.32.116.45/db3 仍在 Oracle
pj PJXC 盘锦行车公寓 Oracle 10.32.116.45/db3 仍在 Oracle

所有 Profile 中的数据库口令、AMI 口令、devicePassword 目前均为明文,且已提交到仓库。生产使用前应改为环境变量/配置中心,并轮换口令。

3. 关键配置项

3.1 服务

配置 说明
server.port 默认 8081
server.servlet.context-path /yktgl
spring.profiles.active 默认 local
spring.mvc.pathmatch.matching-strategy ant_path_matcher(兼容 Springfox)

3.2 数据源与连接池

配置 说明
spring.datasource.url Kingbase 需带 currentSchema=gygl
spring.datasource.driver-class-name com.kingbase8.Driver
spring.datasource.hikari.* 最小空闲 5、最大 15、连接超时 60s、最大生命周期 600s

3.3 Redis / Session

配置 说明
spring.redis.host/port Redis 地址
spring.session.store-type redis
spring.session.timeout 默认 30m

3.4 公寓与业务开关 baseConfig

配置 说明
gyid / gymc 当前公寓(单公寓/默认兜底)
centerServerUrl 中心服务器地址(照片前缀等)
serverUrl 服务自身地址
synJcXxIp 运安推送来源 IP 白名单(逗号分隔)
devicePassword 设备心跳返回的设备密码
centralPhoneIp 中心电话 IP
serverOS windows / linux,影响照片与抓拍路径
modifyyasj 是否允许调整运安叫乘时间
allowRouteChangeAfterCompletedCall 默认 true;叫乘完成后是否允许运安匹配继续变更交路
syncMatchWaitSeconds 默认 900;抓取/匹配等待同步锁的最长秒数
fjgydbs 分公寓/终端所属公寓段的交互标识(按需配置)

3.5 电话与录音 callcontrol

配置 说明
callcontrol.ami.host/port AMI 地址
callcontrol.ami.user/pwd AMI 账号
callcontrol.ami.console 值班台分机/控制台号
callcontrol.ami.callduration 呼叫时长上限(秒)
callcontrol.console.port/baudrate/... 串口参数
callcontrol.recording.base-url 录音回放根地址;为空时默认 http://<ami.host>/conf/
RECORDING_BASE_URL 环境变量覆盖录音地址

3.6 离寓抓拍 leaveSnapshot

配置 默认 说明
enabled true 是否保存抓拍
requiredForDevice false 设备未传抓拍是否失败(兼容旧设备)
retentionDays 7 保留天数
cleanupCron 0 30 2 * * ? 每日清理
rootDirectory 见 Profile 抓拍保存目录
urlPrefix /yktgl/photo/leave-snapshots 访问前缀

3.7 静态资源与文件

配置 说明
spring.web.resources.static-locations classpath:/static/ + 文件目录(Linux 常见 /home/gygl/resouce/)
人员照片 .../resouce/photo/{ryid}.png(代码中写死,Windows 为 C:\project_doc\resouce\photo\)
离寓抓拍 .../resouce/photo/leave-snapshots/{gyid}/{eventId}.jpg

照片路径在 RegistService 中按 serverOS 硬编码,迁移环境时需同步修改代码或改为配置项。

4. 数据库升级

手工脚本位于 yktgl/src/main/resources/db/,按日期顺序执行:

  1. GY_SYN_JCXX_STATUS.sql(首次部署)
  2. manual/V20260921_01__leave_snapshot_evidence_kingbase.sql
  3. manual/V20260922_01__call_duty_notice_dedup_kingbase.sql
  4. manual/V20261008_01__syn_jcxx_write_time_kingbase.sql
  5. manual/V20261008_02__call_duty_match_lock_kingbase.sql
  6. manual/V20261009_01__jcxx_history_archive_kingbase.sql
  7. manual/V20261023_01__cash_request_state_kingbase.sql
  8. manual/V20261029_01__reconcile_tlxc_room_occupancy_preview.sql(先预览)
  9. manual/V20261029_01__reconcile_tlxc_room_occupancy.sql(确认后执行)

注意:

  • 脚本不会随应用启动自动执行。
  • 执行前备份;先跑 preview 核对影响行数。
  • 若数据库仍为 Oracle,需确认脚本语法是否兼容(现有 manual 脚本以 Kingbase 为主)。

5. 多公寓部署

两种方式:

  1. 一套服务一个公寓:通过 baseConfig.gyid/gymc 指定;设备 IP 仍参与解析。
  2. 一套服务多个公寓:依赖 GY_SB.ip / GY_GYZD.ip 做 IP→公寓映射;同一 IP 命中多个公寓会直接拒绝。

部署检查:

  • 每个公寓的设备 IP 必须唯一归属。
  • 反向代理必须透传真实客户端 IP(X-Forwarded-For),否则所有请求会被识别为代理 IP。
  • WebSocket 需允许 Upgrade/Connection 头,并适当延长超时。

6. 上线检查清单

  • JDK 8、时区 Asia/Shanghai、服务器时间与 NTP 同步(叫乘精确到秒)。
  • Kingbase 可连,schema gygl 正确,升级脚本已执行。
  • Redis 可连,Session 能写入。
  • baseConfig.gyid/gymc 与当前公寓一致。
  • synJcXxIp 包含运安推送源 IP。
  • devicePassword 与设备端一致。
  • Asterisk AMI 可连,Conf-01 存在,值班台/房间分机可呼通。
  • 串口设备可打开(Linux 检查权限与设备名)。
  • 照片/抓拍目录存在且可写,静态资源映射正确。
  • 反向代理透传真实 IP,WebSocket 可升级。
  • 启动日志无 Mapper/Bean 初始化错误;WakeupJobRecoveryRunner 已恢复任务。
  • 用一个测试人员走通:入住 → 叫乘 → 应答 → 离寓 → 归档。

7. 运行期维护

事项 建议
日志 现有 System.out 与业务日志混杂,建议接入统一日志文件与轮转
归档 每日 00:00 自动归档 7 天前离寓记录;数据量大时关注执行耗时
抓拍清理 每日 02:30 清理过期抓拍;确认磁盘余量
同步 运安每 5 分钟抓取;观察 JWDATA_SYNC_LOG 与同步状态
备份 数据库 + 照片/抓拍目录 + 录音目录
口令 尽快外置并轮换数据库/AMI/设备口令