[TOC]
# 互聯網項目發布環境:
反向代理+白名單控制策略,域名對外訪問是403,公司內網可訪問。不用代理,手機直接連接wifi訪問
。環境分為開發——測試——預發布——正式(每個環境對應一個獨立域名),任何角色(開發、測試、設計、產品)都可隨時訪問。

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