配置中心说明
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
重点说明:
| 配置项 | 说明 |
|---|---|
url | sba-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: 数据库密码
重点说明:
| 配置项 | 说明 |
|---|---|
数据库IP | MySQL 所在服务器 IP |
数据库名 | 后端使用的业务数据库名称 |
username | MySQL 用户名 |
password | MySQL 密码 |
修改后如果 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
重点说明:
| 配置项 | 说明 |
|---|---|
host | Redis 所在服务器 IP |
port | Redis 端口,默认 6379 |
password | Redis 密码,没有密码时留空 |
database | Redis 数据库编号 |
4. RabbitMQ 配置
spring:
rabbitmq:
host: RabbitMQ服务器IP
port: 5672
username: RabbitMQ用户名
password: RabbitMQ密码
virtual-host: /
重点说明:
| 配置项 | 说明 |
|---|---|
host | RabbitMQ 所在服务器 IP |
port | RabbitMQ 端口,默认 5672 |
username | RabbitMQ 用户名 |
password | RabbitMQ 密码 |
virtual-host | RabbitMQ 虚拟主机,默认 / |
不建议生产环境继续使用默认
guest/guest。
5. Elasticsearch 配置
elastic-jest:
index-name: shoptnt
ssl: off
cluster-ips: Elasticsearch服务器IP
cluster-rest-port: 9200
username:
password:
重点说明:
| 配置项 | 说明 |
|---|---|
index-name | Elasticsearch 索引名称,需要和初始化索引名称一致 |
ssl | 是否使用 HTTPS,普通 HTTP 填 off |
cluster-ips | Elasticsearch 节点 IP,多个节点用英文逗号分隔 |
cluster-rest-port | REST 端口,默认 9200 |
username / password | Elasticsearch 开启认证时填写 |
6. 日志等级配置
logging:
level:
com.alibaba: ERROR
springfox.documentation: ERROR
io.searchbox: ERROR
org.springframework: ERROR
io.seata: ERROR
com.enation.app: DEBUG
开发环境可以使用 DEBUG 便于排查问题,生产环境建议改为 INFO 或 ERROR。
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-secret | Token 加密秘钥,生产环境必须替换为复杂随机值 |
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
重点说明:
| 配置项 | 说明 |
|---|---|
addresses | XXL-Job 调度中心地址 |
appname | 执行器名称,需要和 XXL-Job 后台创建的执行器一致 |
port | 执行器端口 |
logpath | 执行器日志目录 |
accessToken | XXL-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
重点检查:
/opt/source/config目录是否存在。application.yml是否存在。- 当前环境文件是否存在,例如
application-dev.yml。 - YAML 缩进是否正确。
2. API 服务读取不到配置
先验证配置中心地址:
curl http://127.0.0.1:8888/application/dev/master
然后查看对应服务日志:
bash start.sh logs buyer-api
重点检查:
config-server是否已经启动。- API 服务的
profile是否和配置文件一致。 application-dev.yml中的配置是否存在缩进错误。
3. 修改配置后不生效
常规部署修改本地配置文件后,需要重启服务:
bash start.sh restart
如果只修改了某个 API 相关配置,可以只重启对应服务。