1. 概述

本产品有四个地方可以进行参数配置,分别是:

  • 环境变量:docker 中使用 docker-compose.yaml 进行配置。变量名采用大写下划线形式;
  • config 模块:平台等引用的子模块。不同文件名代表了不同环境下的配置。变量名采用驼峰形式;
  • 自定义配置文件:Platform/custom/custom.config.json 文件。变量名采用驼峰形式;
  • backend 中的设置。直接在 http://127.0.0.1:8009/operation/setting 中的 开发后台管理-设置 中进行配置。注意有两个 tab,外观和平台。

2. 配置优先级

backend 中的设置 > 自定义配置文件 > 环境变量 > config 模块

3. 参数解析方法

  • 环境变量:使用 envParser 进行解析;
  • config 模块:通过 require('config') 进行解析。参考 https://www.npmjs.com/package/config
  • 自定义配置文件:通过解析 custom.config.json 文件;

4. envParser 调用方法

envParser 解析 node 环境变量,并为对应的系统配置进行赋值。它接收四个参数,分别是

  • configJSON:模块的配置对象
  • ev:node 环境变量
  • appPath:Platform 模块所在路径
  • envList:需要解析的环境变量数组。各模块根据实际情况决定数组内容。数组中包括多个对象。每个对象中的属性包括:
    • name:环境变量中的变量名。大写下划线格式。
    • type:变量的类型。目前包括 String、Bool、Json、smtp、Array、Store、Custom。其中,Array 类型的变量,各元素之间用英文逗号 , 隔开,不要加多余的空格。
    • path(可选):envParser 会直接把大写下划线形式的环境变量参数映射成系统配置中的驼峰形式。如果直接映射的结果不符合预期,就在 path 中放入期望的系统配置变量名。支持映射为对象中的属性,用 . 隔开。
    • keyMap(可选):对于对象(Json)类型的变量,需要传入该参数指明需要解析的属性。对于变量 LOG_DBDBREDISCAPTURECACHE_CAPTURECHROME,envParser 提供了默认的 keyMap,故上述环境变量可以不传 keyMap 参数。
    • fn(可选):对于无法使用 envParser 提供的统一方法进行映射的配置,在 fn 中进行处理。

envList 的样例:

[
    //把环境变量中的 PLATFORM_LINK 赋值给系统配置中的 platform
    {name: 'PLATFORM_LINK', type: 'String', path: 'platform'},
    //把环境变量中的 BACKEND_LINK 赋值给系统配置中的对应驼峰形式的 backendLink
    {name: 'BACKEND_LINK', type: 'String'},
    //把环境变量中的 COMPANY_NAME 赋值给系统配置中 customAssets 的属性 companyName
    {name: 'COMPANY_NAME', type: 'String', path: 'customAssets.companyName'},
    //把环境变量中的 WATERMARK 解析成布尔类型,赋值给系统配置中 customAssets 的属性 watermark
    {name: 'WATERMARK', type: 'Bool', path: 'customAssets.watermark'},
    //把环境变量中的 LOG_DB 解析成一个对象,赋值给系统配置中的 logDatasource。keyMap = {database: 'title', host: 'host', port: 'port', user: 'user', password: 'password'} 在这里省略了因为 envParser 提供了对 LOG_DB 默认的 keyMap
    {name: 'LOG_DB', type: 'Json', path: 'logDatasource'},
    // 把环境变量中的 PAY_MODULES 解析成一个数组,并赋值给系统配置中的对应驼峰形式的 payModules
    {name: 'PAY_MODULES', type: 'Array'},
    // 把环境变量中的 STORE 解析成一个 store 对象,赋值给系统配置中的 ydStore。keyMap 在这里省略了因为 envParser 提供了对 LOG_DB 默认的 keyMap
    {name: 'STORE', type: 'Store', path: 'ydstore'},
    // 无法统一处理的配置,在这里的函数中进行自定义配置
    {
        name: '',
        type: 'Custom',
        fn:function (configJSON) {
             configJSON.from = _.get(configJSON, 'smtp.from') || configJSON.from;
        }
    }
]

5. 参数说明

环境变量 配置参数 类型 含义 使用模块 备注
PLATFORM_LINK platform String 平台运行的地址 platform schedule backend survey website 供外部用户访问
PLATFORM platformInner String 平台运行的地址 platform schedule backend 供内部容器访问
BACKEND_LINK backendLink String backend 模块的外部域名 platform 5.8 版本以后可不配置,与 PLATFORM_LINK 公用同一个域名,根据 path 区分
SCHEDULE schedule String schedule 模块的调用地址 platform
INSIGHT insight String insight 模块的调用地址 platform
DE de String DE 模块的调用地址 platform
WEBSITE website String website 模块的调用地址 platform
SURVEY survey String survey 模块的调用地址 platform
DC dc String DC 模块的调用地址 platform
CAPTURE capture Json capture 模块的调用地址 schedule
CACHE_CAPTURE cacheCapture Json cacheCapture 模块的调用地址 schedule 用于执行 capture 的预加载任务
HA_COMPUTE haCompute String 高性能计算模块的调用地址 platform
COMPANY_NAME customAssets.companyName String 公司名 platform 系统左上角显示的公司名;系统邮件中的发件人处也显示该变量内容
USER_LIMIT userLimit String 最大账号数量 platform
LOGIN_TYPE loginType String 用户登录方式 platform '':通过用户名密码的普通登录形式;'customLogin':企业单点登录;'openId':使用 openId 登录(单点登录的一种)
OPENID_SECRET_ID openId.secretId String 私有部署的域名的 secretId,用于单点登录 platform 只有 loginType = 'openId' 时才会使用
OPENID_CLIENT_ID openId.clientId String 私有部署的域名的 clientId,用于单点登录 platform 只有 loginType = 'openId' 时才会使用
PASS_KEY passKey String 各模块共有的一个秘钥 platform backend website schedule
PUBLIC_PATH customAssets.publicPath String 前端公共域名 platform
GLOBAL_LANGUAGE customAssets.globalLanguage String 全局语言 platform 默认中文 'zh-cn',可改为英文 'en',可以在 backend 中进行配置
DEPLOY_TYPE deployType String 部署类型 platform schedule backend survey website 'private':私有部署;'netease':内部环境 'online':线上环境
DEFAULT_USER_PWD defaultUserPwd String 默认的用户密码 platform
MOBILE_DEPLOYED mobileDeployed Bool 是否部署了移动端 app platform backend
WATERMARK customAssets.watermark Bool 是否开启报告界面的水印 platform 可以在 backend 中进行配置
OPEN_HUBBLE customAssets.openHubble Bool 是否在哈勃进行埋点 platform
PUSH_MAMMUT pushMammut Bool 是否调用猛犸接口 platform 若开启,数据产生变化时放入消息队列,数据准备好后通知本产品,可执行预加载,需要部署 SyncExtract 模块
SQL_LOG sqlLog Bool 后台日志是否打印业务查询 SQL platform 可以在 backend 中进行配置
REDIS_LOG redisLog Bool 后台日志是否打印有关 redis 的日志 platform
LANGUAGE_SWITCH customAssets.languageSwitch Bool 用户是否可以切换自己的系统语言 platform 可以在 backend 中进行配置
HIDE_HELP_CENTER customAssets.hideHelpCenter Bool 是否需要隐藏帮助中心 platform 帮助中心是界面右上角的问号图标,其中包括新手引导、用户手册、常见问题等。可以在 backend 中进行配置
ENABLE_EMAIL enableEmail Bool 是否开启电子邮件服务 platform 开启的话需要配置邮箱服务 SMTP
ENABLE_MESSAGE enableMessage Bool 是否开启短信服务 platform 私有部署用户开启的话需要在 custom/customSMS.js 文件下进行外挂脚本适配开发,自己提供短信服务。可以在 backend 中进行配置
TR_INPUT_LOG trInputLog Bool 是否打印大屏 input 日志 platform 可以在 backend 中进行配置
NETWORK_ACCESS_ENABLE networkAccessEnable Bool 是否开启网络拦截 platform 开启后,具体的白名单需要在 backend 的设置中进行配置。网络拦截配置有两个选项:若选择 user,开启后只有在白名单中的 IP 才能访问,如果有某些特殊用户想使用非白名单 IP 来访问,需要调用 user/batchImport 接口修改用户 networkConfig 属性;若选择 mobile,开启后 web 端只有在 IP 白名单中才可以访问,移动端在非白名单中也可以访问。具体白名单和拦截类型如何配置请看 backend 的配置页面
PICTURE_NO_LINK smtp.pictureNoLink Bool 发送邮件是否带跳转连接 platform schedule backend 可以在 backend 中进行配置。
SERVICE_DOWNGRADE serviceDowngrade Bool 是否开启服务降级 schedule 开启后 schedule 中只有表单填写提醒邮件和 kill Chrome 会如期运行,其他任务将不再运行
PAY_MODULES payModules Array 用于指定用户购买的模块 platform 'report': 报告, 'mpp': mpp, 'cockpit': 驾驶仓, 'screen': 大屏, 'survey': 数据填报, 'gis': gis 地图
TR_INPUT_API_LIST trInputApiList Array 用于指定必须打日志的 API 列表 platform
LOG_DB logDatasource Json backend 查询的系统日志所存放的数据库的配置 backend 环境变量中配置成 mysql://<user>:<password>@<host>:<port>/<database> ,例 mysql://youdata:password@127.0.0.1:3306/youdata_log
REDIS redis Json redis 相关配置,用于缓存设置和存储 session 等 platform backend survey website 环境变量中配置成 redis://<password>@<host>:<port> ,例 redis://password@127.0.0.1:6379
CHROME chrome Json Chrome 相关的配置 capture 需包含 host、port 属性
DB datasource Json Platform 模块的数据库相关配置 platform schedule backend survey website 环境变量中配置成 mysql://<user>:<password>@<host>:<port>/<database> ,例 mysql://youdata:password@127.0.0.1:3306/youdata
SMTP smtp smtp 发邮件相关的配置 platform schedule backend 环境变量中配置成 smtp://<user>:<password>@<host>:<port>, 例 smtp://youdata@corp.com:password@corp.com:25。可以在 backend 中进行配置
STORE ydstore Store 对象存储服务的配置 platform schedule capture 环境变量中配置成 <protocol>://<user>:<password>@<host>:<port>/<bucket> ,例 minio://PJ99D7K3OAFS732PS1PZ:password@store.ydqa:80/yd-bucket