ContiNew

环境与配置

汇总 ContiNew Admin 后端环境变量、profile 差异与前端 .env 配置项,供部署与本地开发时逐项对照。

本文是 4.x 的归档文档(冻结于 v4.2.0)。该分支只接收勘误修正, 内容基本不再变动;文中的源码路径、配置项与版本号均以 4.2.x 为准,不建议用于新项目。

新项目请查看 5.x 最新文档。已在 4.2.x 上运行的项目,本文仍是可靠依据。

ContiNew Admin 的配置分两侧。后端在 continew-server/src/main/resources/config/ 下按 profile 拆分 YAML,前端在仓库根目录按 .env.<mode> 拆分环境变量。本页把两侧需要注入的变量和关键配置块列全,默认值与源码保持一致。各配置块的语义讲解见 配置说明,本页只做对照参考。

后端配置

配置文件组织

application.yml 放环境无关的通用配置,application-dev.yml 与 application-prod.yml 放环境差异配置,application-generator.yml 放代码生成器配置。启用的 profile 由 spring.profiles.active 决定,默认经环境变量 PROFILES_ACTIVE 注入,未设置时回退到 dev。

spring:
  profiles:
    active: ${PROFILES_ACTIVE:dev}
    include:
      - generator

端口不写死在通用配置里。dev 为 8000,prod 为 18000。

环境变量

dev 环境的必需变量都有默认值,不注入也能启动。prod 环境的核心凭据没有默认值,缺失即启动失败;可选能力(第三方登录)默认关闭,只在开启后要求对应平台凭据。

变量作用dev 默认值prod
PROFILES_ACTIVE启用的 profiledev需设为 prod
DB_HOSTMySQL 主机127.0.0.1有回退,按需注入
DB_PORTMySQL 端口3306有回退
DB_USER数据库用户root有回退
DB_NAME数据库名continew_admin有回退
DB_PWD数据库密码123456必填,无默认值
REDIS_HOSTRedis 主机127.0.0.1有回退
REDIS_PORTRedis 端口6379有回退
REDIS_PWDRedis 密码123456必填,无默认值
REDIS_DBRedis 数据库索引0有回退
ACCESS_TOKEN_JWT_SECRETAccess Token 的 JWT 密钥dev 有固定示例值必填,无默认值
REFRESH_TOKEN_SECRETRefresh Token 签名密钥dev 有固定示例值必填,无默认值
FIELD_ENCRYPT_PASSWORD字段加密 AES 密钥dev 有示例值必填,无默认值
FIELD_ENCRYPT_PUBLIC_KEY字段加密 RSA 公钥dev 有示例密钥对必填,无默认值
FIELD_ENCRYPT_PRIVATE_KEY字段加密 RSA 私钥dev 有示例密钥对必填,无默认值
SCHEDULE_HOSTSnail Job 服务端主机127.0.0.1有回退
SCHEDULE_PORTSnail Job 服务端通讯端口17888有回退
SCHEDULE_USERNAMESnail Job OpenAPI 用户名admin有回退
SCHEDULE_PASSWORDSnail Job OpenAPI 密码dev 为 admin必填,无默认值
SCHEDULE_NAMESPACESnail Job 命名空间内置默认值有回退
SCHEDULE_GROUPSnail Job 接入组名continew-admin有回退
SCHEDULE_TOKENSnail Job 接入组 tokendev 有示例值启用任务调度时必填,无默认值
JUSTAUTH_ENABLED是否启用第三方登录dev 为 true,prod 为 false默认 false
JUSTAUTH_<平台>_CLIENT_ID第三方平台 Client ID空启用该平台时必填
JUSTAUTH_<平台>_SECRET第三方平台 Client Secret空启用该平台时必填

REFRESH_TOKEN_SECRET 必须是独立的高熵随机值,禁止与 ACCESS_TOKEN_JWT_SECRET 复用。dev 配置里的示例密钥只用于本地联调,生产环境必须全部替换。

通用配置块速查

以下配置块定义在 application.yml,两个环境共用。配置项本身的语义属于 ContiNew Starter,完整定义见 ContiNew Starter 文档;这里列的是 admin 填的值。

配置块关键值
server.undertowmax-http-post-size: -1、buffer-size: 512、io: 8、worker: 256
spring.servlet.multipartmax-file-size: 10MB、max-request-size: 20MB,与分片上传阈值 10MB 配套
springdoc / nextdoc4j接口文档路径 /v3/api-docs 与 /swagger-ui,NextDoc4j 增强开启
continew-starter.web.responsedefault-success-code: 0、default-error-code: 1,响应类 top.continew.starter.web.model.R
continew-starter.log记录请求/响应头、请求/响应体、IP、浏览器、OS 等
continew-starter.trace链路头 X-Trace-Id,日志经 TLog 输出
continew-starter.tenantisolation-level: LINE,租户头 X-Tenant-Id,默认租户 0
continew-starter.rate-limiter开启,key 前缀 RateLimiter
sa-tokentoken 名 Authorization,jwt-secret-key: ${ACCESS_TOKEN_JWT_SECRET},持久层 dao.type: REDIS
mybatis-plusid-type: ASSIGN_ID,逻辑删除字段 deleted(未删除 0,已删除取 id),ID 生成器 COSID
cosid雪花算法,epoch 1577203200000,开启时钟回拨同步;租户编码生成器前缀 T
continew-starter.refresh-tokencookie-name: refresh_token、cookie-path: /、cookie-secure: false、cookie-same-site: Lax
auth.password.excludes密码过期拦截放行 /auth/user/route、/auth/user/info、/auth/logout、/system/user/password

Sa-Token 的 timeout、active-timeout 等参数不在 YAML 里维护,改由「系统管理 → 系统配置 → 客户端配置」页面按客户端动态管理,application.yml 中对应配置已注释。

profile 差异

配置devprod
server.port800018000
application.urlhttp://localhost:5173https://admin.continew.top
数据源驱动com.p6spy.engine.spy.P6SpyDriver(SQL 日志)com.mysql.cj.jdbc.Driver
continew-starter.web.cors.allowed-origins*仅 ${application.url}
continew-starter.log.access-log.enabledtruefalse
logging.level.top.continew.*DEBUGINFO
continew-starter.refresh-token.cookie-securefalsetrue,且 cookie 名改为 __Host-refresh_token
nextdoc4j.production关闭随 application.production 屏蔽接口文档
snail-job.enabledfalsetrue

Snail Job 配置

任务调度默认在 dev 关闭、prod 开启,开关是 snail-job.enabled。客户端连服务端的通讯端口、OpenAPI 地址、命名空间、接入组 token 都走 SCHEDULE_* 环境变量,见上表。关闭时调度相关接口由一个兜底 Controller 返回未启用提示。

前端配置

环境变量文件

前端用 Vite 的 mode 机制,仓库根目录放 .env.development、.env.test、.env.production 三份文件,分别对应 pnpm dev、pnpm build:test、pnpm build。vite.config.ts 里 envPrefix: ['VITE', 'FILE'],以 VITE 或 FILE 开头的变量都会暴露给客户端代码(import.meta.env.<KEY>),两个前缀下都不能放敏感信息。

变量作用developmentproduction
VITE_API_PREFIX接口前缀,dev 下由 Vite 代理转发/dev-api不设置
VITE_API_BASE_URL后端接口地址http://localhost:8000https://api.continew.top
VITE_API_WS_URLWebSocket 地址。.env.test 未预置,test 模式需自行补上,否则登录后消息通知不可用ws://localhost:8000wss://api.continew.top
VITE_BASE部署基础路径//
VITE_CLIENT_ID登录时上报的客户端 ID,对应后端「客户端配置」ef51c9a3e9046c4f2ea45142c8a8344a同左
VITE_APP_SETTING控制配置抽屉内的外观区块,不隐藏齿轮入口truetrue
VITE_OPEN_DEVTOOLS是否加载 Vue DevTools 插件false不设置
VITE_BUILD_MOCK打包时是否启用 Mock不设置false(test 为 true)

变量在代码里的落点

VITE_API_PREFIX 与 VITE_API_BASE_URL 决定 axios 实例的 baseURL(src/utils/http.ts),dev 下优先取前缀,由 vite.config.ts 的 server.proxy 把前缀代理到 VITE_API_BASE_URL 并去掉前缀,生产构建没有代理,直接取 VITE_API_BASE_URL。VITE_API_WS_URL 在 src/layout/components/HeaderRightBar/index.vue 拼接 /websocket 建立连接。VITE_CLIENT_ID 在 src/stores/modules/user.ts 的各登录请求里作为 clientId 上报。

VITE_CLIENT_ID 必须与后端「系统管理 → 系统配置 → 客户端配置」里某条客户端记录的 ID 一致,否则登录时会匹配不到客户端策略。默认值对应初始脚本里的 PC 端配置。

相关源码

目录