多环境:
指同一套项目代码在不同的阶段需要根据实际情况来调整配置并且部署到不同的机器上。
为什么需要?
1. 每个环境互不影响
2. 区分不同的阶段:开发 / 测试 / 生产
3. 对项目进行优化:
1. 本地日志级别
2. 精简依赖,节省项目体积
3. 项目的环境 / 参数可以调整,比如 JVM 参数
针对不同环境做不同的事情。
多环境分类:
1. 本地环境(自己的电脑)localhost
2. 开发环境(远程开发)大家连同一台机器,为了大家开发方便
3. 测试环境(测试)开发 / 测试 / 产品,单元测试 / 性能测试 / 功能测试 / 系统集成测试,独立的数据库、独立的服务器
4. 预发布环境(体验服):和正式环境一致,正式数据库,更严谨,查出更多问题
5. 正式环境(线上,公开对外访问的项目):尽量不要改动,保证上线前的代码是 “完美” 运行
6. 沙箱环境(实验环境):为了做实验
前端多环境实战
请求地址
开发环境:localhost:8000
线上环境:user-backend.code-nav.cn
startFront(env) {
if(env === 'prod') {
// 不输出注释
// 项目优化
// 修改请求地址
} else {
// 保持本地开发逻辑
}
}
用了 umi 框架,build 时会自动传入 NODE_ENV == production 参数,start NODE_ENV 参数为 development
打包之后会自动生成静态的网页文件
启动方式
开发环境:npm run start(本地启动,监听端口、自动更新)
线上环境:npm run build(项目构建打包),可以使用 serve 工具启动(npm i -g serve)
项目的配置
不同的项目(框架)都有不同的配置文件,umi 的配置文件是 config,可以在配置文件后添加对应的环境名称后缀来区分开发环境和生产环境。参考文档:https://umijs.org/zh-CN/docs/deployment
开发环境:config.dev.ts
生产环境:config.prod.ts
公共配置:config.ts 不带后缀
后端项目区分环境:
指定使用的环境:
spring:
profiles:
active: dev
在配置文件后加-prod
可以在启动项目时传入环境变量:
java -jar .\user-center-backend-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod
提示:在连接线上数据库时可能报错:
javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
The following required algorithms might be disabled: SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, include jdk.disabled.namedCurves. Edit the list of disabled algorithms to include required algorithms. You can try to enable TLSv1 or TLSv1.1 first.
JDBC driver may have disabled TLS > 1.1.
解决办法:
在URL中添加在数据库后面添加?createDatabaseIfNotExist=true&useSSL=false
如:jdbc:mysql://192.168.2.2:3306/test?createDatabaseIfNotExist=true&useSSL=false
打包好后运行线上jar包
cd .\target\
java -jar .\user-center-backend-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod