当前位置: 首页 > news >正文

SkeyeVSS开发日志:环境变量 .env 配置项详解

试用安装包下载 | SMS | 试用安装包下载 | 在线演示

项目源码地址https://github.com/openskeye/go-vss


1. 关于.env.prod

在 Skeyevss 中,.env.prod(或.env.prod.d)是生产环境的总开关

  • 服务端口、IP、日志路径都来自它
  • SIP/媒体联动参数来自它
  • 数据库、Redis、etcd 连接来自它
  • 各服务配置文件(etc/.xxx.yaml)通过${SKEYEVSS_*}占位符引用它

配错 env,服务可能“能启动但不可用”


2. 配置加载机制

2.1 配置链路

  1. 启动命令读取-env参数(如.env.prod
  2. 变量注入进进程环境
  3. etc/.vss.yamletc/.backend-api.yaml等读取${SKEYEVSS_*}
  4. 服务按替换后的最终值运行

2.2 常见文件角色

  • .env.prod:本地/单机/非容器生产配置示例
  • .env.prod.d:容器部署场景示例(含___INTERNAL_IP___占位符)

建议:上线前保留一份最终生效的 env 备份,便于回滚和审计。


3. 配置项分组详解

以下按“最常改、最容易出问题”的顺序说明。

3.1 基础运行与环境标识

配置项作用典型值
SKEYEVSS_SERVER_ENV_MODE运行环境标识pro
SKEYEVSS_ROOT服务根目录/app或实际部署目录
SKEYEVSS_SEV_BIND_IP服务绑定地址0.0.0.0
SKEYEVSS_INTERNAL_IP内网访问地址10.x.x.x/192.168.x.x
SKEYEVSS_EXTERNAL_IP公网访问地址公网 IP
SKEYEVSS_CONTAINERIZED_STATE是否容器化模式标记true/false

注意

  • 同局域网部署可将EXTERNAL_IPINTERNAL_IP设为同值
  • 跨网/公网接入时必须准确区分内外网 IP

3.2 服务启用与数据存储

配置项作用典型值
SKEYEVSS_DATABASE_TYPE数据库类型mysqlsqlite
SKEYEVSS_ENABLED_MYSQL是否启用 MySQL 依赖true/false
SKEYEVSS_ENABLED_REDIS是否启用 Redis 依赖true/false
SKEYEVSS_ENABLED_ETCD是否启用 etcd 依赖true/false
SKEYEVSS_SAVE_VIDEO_DIR录像目录.../video-records
SKEYEVSS_SAVE_VIDEO_SNAPSHOT_DIR抓拍目录.../video-snapshot
SKEYEVSS_SAVE_SQL_DIRSQL 输出目录.../source/sql

注意

  • 生产优先mysql
  • 视频/日志目录建议挂载到独立数据盘

3.3 日志与排障开关

配置项作用建议
SKEYEVSS_SERVER_LOG_PATH日志根目录指向可持久化目录
SKEYEVSS_LOG_MODE输出方式生产用file
SKEYEVSS_LOG_ENCODING日志格式json便于采集
SKEYEVSS_LOG_LEVEL日志级别errorinfo
SKEYEVSS_PRINT_REQUEST_LOGHTTP 请求日志排障时临时开
SKEYEVSS_PRINT_SAVE_SIP_LOG_FILESIP 文件日志建议开启

SIP 日志路径
$SKEYEVSS_SERVER_LOG_PATH/$SKEYEVSS_VSS_NAME/sip/

3.4 鉴权与密钥

配置项作用
SKEYEVSS_AES_KEY对称加密基础密钥
SKEYEVSS_U_KEY_BACKEND_APIBackend 鉴权密钥
SKEYEVSS_U_KEY_VSSVSS 服务密钥
SKEYEVSS_U_KEY_DBDB RPC 密钥
SKEYEVSS_U_KEY_WEB_SEVWeb 服务密钥
SKEYEVSS_U_KEY_JWTJWT 相关密钥

注意

  • 如果需要针对访问DB做鉴权可根据SKEYEVSS_U_KEY_*做详细配置,示例代码中目前未使用

3.5 MySQL / Redis / etcd

MySQL

  • SKEYEVSS_MYSQL_HOST
  • SKEYEVSS_MYSQL_PORT
  • SKEYEVSS_MYSQL_USERNAME
  • SKEYEVSS_MYSQL_PASSWORD
  • SKEYEVSS_MYSQL_DB_NAME_BASE

Redis

  • SKEYEVSS_REDIS_HOST
  • SKEYEVSS_REDIS_PORT
  • SKEYEVSS_REDIS_PASSWORD

etcd

  • SKEYEVSS_ETCD_HOST
  • SKEYEVSS_ETCD_CLIENT_PORT
  • SKEYEVSS_ETCD_PEER_PORT

注意

  • DB RPC 连不上时,80% 先查 etcd 地址和端口

3.6 Web 代理(前端入口)

配置项作用
SKEYEVSS_WEB_SEV_PORTWeb 服务端口
SKEYEVSS_WEB_SEV_PROXY_API_BACKEND后端 API 代理前缀
SKEYEVSS_WEB_SEV_PROXY_FILE静态资源代理前缀
SKEYEVSS_WEB_SEV_PROXY_FILE_URL文件访问基础 URL
SKEYEVSS_WEB_SEV_CONFWeb 配置文件路径

3.7 媒体服务SMS联动(播放链路核心)

关键项:

  • SKEYEVSS_MEDIA_SERVER_PORT
  • SKEYEVSS_MEDIA_SERVER_CONF_DEF
  • SKEYEVSS_MEDIA_SERVER_NOTIFY_ON_PUB_START
  • SKEYEVSS_MEDIA_SERVER_NOTIFY_ON_PUB_STOP
  • SKEYEVSS_MEDIA_SERVER_NOTIFY_ON_SUB_START
  • SKEYEVSS_MEDIA_SERVER_NOTIFY_ON_RTMP_CONNECT

这些回调 URL 若不可达,会导致“设备在线但播放异常”。

3.8 VSS(GB28181 核心)

最关键参数:

  • SKEYEVSS_VSS_PORT(SIP)
  • SKEYEVSS_VSS_HTTP_PORT(HTTP 回调)
  • SKEYEVSS_VSS_SSE_PORT(SSE)
  • SKEYEVSS_VSS_SIP_ID
  • SKEYEVSS_VSS_SIP_DOMAIN
  • SKEYEVSS_VSS_SIP_PASSWORD
  • SKEYEVSS_VSS_SIP_USE_EXTERNAL_WAN
  • SKEYEVSS_VSS_USE_EXTERNAL_IP

公网接入建议

  • 设备跨公网时,确认EXTERNAL_IPUSE_EXTERNAL_WAN和防火墙端口策略一致

3.9 各微服务端口与配置文件绑定

服务关键端口变量配置文件变量
DB RPCSKEYEVSS_DB_GRPC_PORTSKEYEVSS_DB_GRPC_CONF
VSSSKEYEVSS_VSS_PORTSKEYEVSS_VSS_CONF
Backend APISKEYEVSS_BACKEND_API_PORTSKEYEVSS_BACKEND_API_CONF
CronSKEYEVSS_CRON_PORTSKEYEVSS_CRON_CONF
WebSKEYEVSS_WEB_SEV_PORTSKEYEVSS_WEB_SEV_CONF
GuardSKEYEVSS_GUARD_PORTSKEYEVSS_GUARD_CONF

4. 上线前必查清单

  1. SKEYEVSS_INTERNAL_IP/EXTERNAL_IP与实际网络一致
  2. SKEYEVSS_DATABASE_TYPE与实际依赖一致
  3. SKEYEVSS_VSS_SIP_*与设备侧平台参数一致
  4. 媒体回调SKEYEVSS_MEDIA_SERVER_NOTIFY_*可达
  5. SKEYEVSS_SERVER_LOG_PATH、录像目录有写权限
  6. 所有服务端口无冲突,防火墙已放行

5. 三个最常见误配案例

案例 1:后台正常,视频黑屏

原因:媒体回调地址错误或 VSS SIP 参数不一致
排查:检查SKEYEVSS_MEDIA_SERVER_NOTIFY_*SKEYEVSS_VSS_SIP_*

案例 2:DB RPC 启动成功但业务报错

原因:etcd 配置错误,服务发现失败
排查:检查SKEYEVSS_ETCD_HOSTSKEYEVSS_ETCD_CLIENT_PORT

案例 3:公网设备注册不上

原因SKEYEVSS_VSS_SIP_USE_EXTERNAL_WAN=false或外网地址错误
排查:检查SKEYEVSS_EXTERNAL_IP、公网端口放行策略


6. 推荐配置策略

6.1 开发环境

  • 日志可用plain + info
  • 可启用sqlite
  • 内外网 IP 可先同值(纯内网)

6.2 生产环境

  • 日志建议file + json + error/info
  • 使用mysql
  • 开启 SIP 文件日志,做日志轮转与归档
  • 禁止默认密码与空密钥

7. 变更流程建议

.env.prod变更建议按以下流程执行:

  1. 变更前备份旧文件
  2. 按模块修改并复核
  3. 灰度环境验证
  4. 低峰时段发布
  5. 发布后做播放链路与设备注册回归测试
http://www.jsqmd.com/news/652606/

相关文章:

  • RS232、RS485与Modbus:工业通信协议与接口标准的深度解析
  • Linux内存管理(六): 伙伴系统与alloc_pages的分配策略
  • 【Windows】使用启动U盘重装Windows10系统
  • 微信小游戏广告接入避坑指南:从1000用户门槛到Banner广告精准定位(附完整代码)
  • Matplotlib 怎么设置坐标轴刻度?
  • 别再让机器人原地打转了!详解Gazebo中skid_steer_drive_controller插件与URDF坐标系设置的避坑指南
  • Windows远程桌面mstsc命令的隐藏玩法:从编辑RDP文件到多显示器适配
  • Linux基础开发工具(git篇)
  • 告别Windows和TwinCAT:用树莓派+开源IgH搭建低成本EtherCAT主站测试平台
  • 基于STM32与TEA5767的FM收音机硬件系统设计:从原理图到模块选型
  • 【项目实战】Kubernetes 排障指南:如何高效查询 Pod 日志
  • 终极Autosub快速入门:5分钟学会为视频添加自动字幕的完整指南
  • Linux_01(基础命令)
  • DICOM WSI标准:从金字塔结构到像素矩阵的病理图像数字化实践
  • 利用x-anylabeling与Labelme格式互转,提升数据标注效率
  • 别再死记硬背UVM框图了!用PHPStudy+ModelSim手把手搭建你的第一个验证平台(附完整代码)
  • 解锁Simple Transformers的终极潜能:多模态分类与对话AI实战指南
  • 终极Gradle Play Publisher认证指南:Service Account配置与权限设置全攻略
  • 拆解T265视觉定位:除了给PX4发数据,树莓派上的ROS节点还能怎么玩?
  • 大模型 kimi / deepseek /豆包/元宝 网页版登录
  • P数据库链接包使用指南,jsp连接数据库包科普,轻松掌握数据交互基础
  • Chart.js项目实战:AI技术发展轨迹监控系统
  • CANFD数据帧解析实战:从示波器波形到STM32代码,一步步看懂那64个字节怎么传
  • SkeyeVSS开发日志: Skeyevss日志采集方案落地实践
  • Win Docker ClickHouse 数据卷挂载方案:解决本地目录写入权限与Inode限制
  • 从FreeRTOS转战Zephyr:一个老嵌入式工程师的Ubuntu环境搭建与初体验笔记
  • DownKyi:5步掌握B站视频下载与管理的终极技巧
  • React Native Spinkit跨平台兼容性指南:iOS与Android差异处理
  • BLIP2实战:从零到一,手把手教你部署多模态视觉语言模型
  • LLM编排层事务断裂真相,深度拆解向量数据库与微服务协同中的Saga补偿盲区