跳到主要内容

配置中心说明

config-server 是后端服务的配置中心。后端 API 启动时,会先连接 config-server,再按当前环境读取配置文件,例如 application-dev.yml

常规部署时,推荐把配置文件放在源码同级的 config 目录:

/opt/source
├── shoptnt
│ └── start.sh
└── config
├── application.yml
└── application-dev.yml

一、配置中心目录

进入源码目录并下载配置文件:

cd /opt/source
git clone https://gitee.com/bbc-se/config.git

常规部署使用 start.sh 启动时,脚本默认会查找 /opt/source/config,并用本地文件模式启动 config-server

cd /opt/source/shoptnt
bash start.sh

如果配置文件不在默认目录,需要启动时指定:

bash start.sh --config-dir /data/shoptnt/config

二、配置文件说明

文件名说明是否必须
application.yml公共配置,所有环境都会读取
application-dev.yml开发环境配置,会覆盖 application.yml 中相同配置dev 环境必须
application-prod.yml生产环境配置,会覆盖 application.yml 中相同配置prod 环境必须
application-test.yml测试环境配置test 环境必须

默认启动环境是 dev,所以首次部署重点修改:

/opt/source/config/application-dev.yml

修改命令:

vim /opt/source/config/application-dev.yml

三、环境选择

后端服务读取哪个配置文件,由启动参数中的 profile 决定。

默认读取:

application.yml + application-dev.yml

如果需要读取生产环境配置:

bash start.sh --profile prod

此时需要存在:

/opt/source/config/application-prod.yml

四、验证配置中心

启动后,先验证 config-server 是否可以正常读取配置。

本机访问:

curl http://127.0.0.1:8888/application/dev/master

服务器外部访问:

http://服务器IP:8888/application/dev/master

如果能返回配置内容,说明配置中心启动正常。若访问失败,先查看日志:

bash start.sh logs config-server

五、application-dev.yml 配置说明

下面按常用配置块说明。示例中的 IP、账号、密码、域名都需要替换为实际环境值。

1. SBA 监控配置

用于把各后端服务注册到 sba-server 监控中心。

spring:
boot:
admin:
client:
enabled: true
url: http://127.0.0.1:7006
username: admin
password: admin
instance:
service-host-type: ip
prefer-ip: true

重点说明:

配置项说明
urlsba-server 的访问地址,分开部署时要改成 sba-server 所在服务器 IP
username连接监控中心的用户名
password连接监控中心的密码
prefer-ip使用 IP 注册服务,服务器部署建议保持 true

如果开启 Spring Security,需要保证服务端和客户端账号密码一致:

spring:
security:
user:
name: admin
password: admin

2. MySQL 配置

spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://数据库IP:3306/数据库名?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false
username: 数据库用户名
password: 数据库密码

重点说明:

配置项说明
数据库IPMySQL 所在服务器 IP
数据库名后端使用的业务数据库名称
usernameMySQL 用户名
passwordMySQL 密码

修改后如果 API 启动失败,优先检查数据库 IP、端口、库名、账号密码是否正确。

3. Redis 配置

spring:
data:
redis:
host: Redis服务器IP
port: 6379
password: Redis密码
database: 10
timeout: 20000
connect-timeout: 10000
lettuce:
pool:
enabled: true
max-active: 1000
max-idle: 10
min-idle: 5
max-wait: -1

重点说明:

配置项说明
hostRedis 所在服务器 IP
portRedis 端口,默认 6379
passwordRedis 密码,没有密码时留空
databaseRedis 数据库编号

4. RabbitMQ 配置

spring:
rabbitmq:
host: RabbitMQ服务器IP
port: 5672
username: RabbitMQ用户名
password: RabbitMQ密码
virtual-host: /

重点说明:

配置项说明
hostRabbitMQ 所在服务器 IP
portRabbitMQ 端口,默认 5672
usernameRabbitMQ 用户名
passwordRabbitMQ 密码
virtual-hostRabbitMQ 虚拟主机,默认 /

不建议生产环境继续使用默认 guest/guest

5. Elasticsearch 配置

elastic-jest:
index-name: shoptnt
ssl: off
cluster-ips: Elasticsearch服务器IP
cluster-rest-port: 9200
username:
password:

重点说明:

配置项说明
index-nameElasticsearch 索引名称,需要和初始化索引名称一致
ssl是否使用 HTTPS,普通 HTTP 填 off
cluster-ipsElasticsearch 节点 IP,多个节点用英文逗号分隔
cluster-rest-portREST 端口,默认 9200
username / passwordElasticsearch 开启认证时填写

6. 日志等级配置

logging:
level:
com.alibaba: ERROR
springfox.documentation: ERROR
io.searchbox: ERROR
org.springframework: ERROR
io.seata: ERROR
com.enation.app: DEBUG

开发环境可以使用 DEBUG 便于排查问题,生产环境建议改为 INFOERROR

7. ShopTNT 系统配置

javashop:
product: stand
runmode: cluster
debugger: off
license[0]: 授权码
token-secret: Token加密秘钥
timeout:
accessTokenTimeout: 120000
refreshTokenTimeout: 180000
captchaTimout: 120
smscodeTimout: 120
isDemoSite: no
messageToken: 微信公众号服务器消息Token
ssl: on
sign: no
domain:
buyer: pc.example.com
mobileBuyer: m.example.com
callback: https://api.example.com/buyer
referer:
- 'servicewechat.com'
- 'unitradeprod.alipay.com'
- '*.weixin.qq.com'
- '*.example.com'
component:
o2o: false

重点说明:

配置项说明
product产品模式,标准版一般为 stand
runmode运行模式,集群部署填 cluster
debugger是否开启调试,生产环境建议 off
license[0]授权码,可按 license[1]license[2] 继续追加;如果使用开源产品,可不填写
token-secretToken 加密秘钥,生产环境必须替换为复杂随机值
ssl站点是否使用 HTTPS,使用 HTTPS 填 on
domain.buyer买家端 PC 域名
domain.mobileBuyer买家端移动端域名
domain.callback买家端 API 回调域名,支付、登录回调会用到
referer允许访问 API 的来源域名或 IP

8. XXL-Job 配置

xxl:
job:
admin:
addresses: http://XXL-JOB服务器IP:8080/xxl-job-admin
executor:
appname: shoptnt
ip:
port: 6999
logpath: /opt/xxl-serverlogs
logretentiondays: -1
accessToken: xxl-job访问Token

重点说明:

配置项说明
addressesXXL-Job 调度中心地址
appname执行器名称,需要和 XXL-Job 后台创建的执行器一致
port执行器端口
logpath执行器日志目录
accessTokenXXL-Job 访问 Token,需要和调度中心一致

9. Actuator 暴露配置

management:
endpoints:
web:
exposure:
include: '*'
endpoint:
health:
show-details: ALWAYS

该配置用于 SBA 监控读取服务健康状态。生产环境如需收紧安全策略,可按实际情况减少暴露端点。

六、修改配置后的操作

修改 application-dev.yml 后,建议重启后端服务:

cd /opt/source/shoptnt
bash start.sh restart

如果只想重启某个服务:

bash start.sh restart buyer-api

七、常见问题

1. config-server 启动失败

查看日志:

bash start.sh logs config-server

重点检查:

  1. /opt/source/config 目录是否存在。
  2. application.yml 是否存在。
  3. 当前环境文件是否存在,例如 application-dev.yml
  4. YAML 缩进是否正确。

2. API 服务读取不到配置

先验证配置中心地址:

curl http://127.0.0.1:8888/application/dev/master

然后查看对应服务日志:

bash start.sh logs buyer-api

重点检查:

  1. config-server 是否已经启动。
  2. API 服务的 profile 是否和配置文件一致。
  3. application-dev.yml 中的配置是否存在缩进错误。

3. 修改配置后不生效

常规部署修改本地配置文件后,需要重启服务:

bash start.sh restart

如果只修改了某个 API 相关配置,可以只重启对应服务。