[TOC]
# 互联网项目发布环境:
反向代理+白名单控制策略,域名对外访问是403,公司内网可访问。不用代理,手机直接连接wifi访问
。环境分为开发——测试——预发布——正式(每个环境对应一个独立域名),任何角色(开发、测试、设计、产品)都可随时访问。
![流程](https://box.kancloud.cn/24d2aa82d8b031c6b8b901989283502a_640x402.png)
APP的debug包,可任意切换上面四种环境进行调试、测试、体验。
## 开发环境
一般就是我们自己的机器。
https://www.zhihu.com/question/28363179
## 测试环境
提供测试人员使用,代码分支除了可以使用`master`分支外,其他的分支也是可以的。
## 回归环境
如果同时有好几个人参与同一个项目,那么基于master分支可能拉出非常多的开发分支,那么当这些分支合并到master上后,master上的功能可能受到影响,这种情况下,会使用一个回归环境,部署master分支的代码。
## 预发布环境
从线上负载均衡集群里摘一台机器出来,这台机器就可以作为预发机了
预发机是跑在正式环境,连接正式数据库的一台机器,但是不在线上负载均衡集群内,也就是说这台机器,可以进行线上环境的测试,但是不影响用户访问。
预发布环境主要还是充当正式环境测试。
一般在开发环境中对项目进行功能测试后,公司要求必须在预发布环境上连接真实的线上环境的数据,进行回归测试。对于前端开发人员来说,也可能在预发布环境测试中遇到本地未曾遇到的问题。这时前端人员必须具备在预发布环境中,快速定位问题的能力。而预发布环境中压缩的文件无疑造成了极大的困难,必须将资源文件对应到本地未压缩的原始文件进行调试和问题排查。
https://www.zhihu.com/question/42160474?sort=created
## [灰度发布](https://baike.baidu.com/item/灰度发布)
预发布环境过后,就是灰度发布了。由于一个项目,一般会部署到多台机器,所以灰度1台至三台,看看新功能是否ok,如果失败则只需要回滚几台,比价方便。
注意:由于是灰度发布几种几台,所以一般会使用跳板机,然后进行域名绑定,这样才可以保证只访问有最新代码的服务器。
## 生产环境
1. 我们需要的是:运维搭建一个和生产服务器相同环境的测试环境,然后我们需要ip地址(通过切换ip地址进行环境模拟)进行本地开发。
2. 所有服务器上的代码都已经是最新的了。
3. 需要运维技术去部署一些服务器端问题。
## 反向代理
本地反向代理线上真实环境开发即可。(apache,nginx,nodejs均可实现)
https://www.baidu.com/s?ie=utf-8&wd=%E5%89%8D%E7%AB%AF%20%E6%9C%AC%E5%9C%B0%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%20%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86
[charles本地调试之map和rewrite功能](http://www.cnblogs.com/wonyun/p/5586746.html)
[在Windows 8.1上使用Fiddler重定向http请求进行前端调试](http://blog.csdn.net/tao_627/article/details/44899761)
## 参考
[成熟的Web开发团队开发、测试、上线的环境和流程是怎样的?](https://www.zhihu.com/question/20694803)
- 讲解 Markdown
- 示例
- SVN
- Git笔记
- github 相关
- DESIGNER'S GUIDE TO DPI
- JS 模块化
- CommonJS、AMD、CMD、UMD、ES6
- AMD
- RequrieJS
- r.js
- 模块化打包
- 学习Chrome DevTools
- chrome://inspect
- Chrome DevTools 之 Elements
- Chrome DevTools 之 Console
- Chrome DevTools 之 Sources
- Chrome DevTools 之 Network
- Chrome DevTools 之 Memory
- Chrome DevTools 之 Performance
- Chrome DevTools 之 Resources
- Chrome DevTools 之 Security
- Chrome DevTools 之 Audits
- 技巧
- Node.js
- 基础知识
- package.json 详解
- corepack
- npm
- yarn
- pnpm
- yalc
- 库处理
- Babel
- 相关库
- 转译基础
- 插件
- AST
- Rollup
- 基础
- 插件
- Webpack
- 详解配置
- 实现 loader
- webpack 进阶
- plugin 用法
- 辅助工具
- 解答疑惑
- 开发工具集合
- 花样百出的打包工具
- 纷杂的构建系统
- monorepo
- 前端工作流
- 爬虫
- 测试篇
- 综合
- Jest
- playwright
- Puppeteer
- cypress
- webdriverIO
- TestCafe
- 其他
- 工程开发
- gulp篇
- Building With Gulp
- Sass篇
- PostCSS篇
- combo服务
- 编码规范检查
- 前端优化
- 优化策略
- 高性能HTML5
- 浏览器端性能
- 前后端分离篇
- 分离部署
- API 文档框架
- 项目开发环境
- 基于 JWT 的 Token 认证
- 扯皮时间
- 持续集成及后续服务
- 静态服务器搭建
- mock与调试
- browserslist
- Project Starter
- Docker
- 文档网站生成
- ddd