成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

當我們談部署時,我們在談什么?

運維 服務器運維
互聯網讓我們能夠用手機、PC 等終端訪問任何一臺服務器的資源、服務。而提供這些資源、服務就是我們開發者做的事情。把資源上傳到服務器上,并把服務跑起來,就叫做部署。

計算機網絡把各地的計算機連接了起來,只要有一臺可以上網的終端,比如手機、電腦,就可以訪問互聯網上任何一臺服務器的資源(包括靜態資源和動態的服務)。

作為開發者的我們,就是這些資源、服務的提供者,把資源上傳到服務器,并把服務跑起來的過程就叫做部署。

代碼部分的部署,需要先經過構建,也就是編譯打包的過程,把產物傳到服務器。

最原始的部署方式就是在本地進行 build,然后把產物通過 FTP 或者 scp(基于 SSH 的遠程拷貝文件拷貝) 傳到服務器上,如果是后端代碼還需要重啟下服務。

每個人單獨構建上傳,這樣不好管理,也容易沖突,所以現在都會用專門的平臺來做這件事構建和部署,比如 jenkins。

我們代碼會提交到 gitlab 等代碼庫,然后 jenkins 從這些代碼庫里把代碼下載下來進行 build,再把產物上傳到服務器上。

流程和直接在本地構建上傳差不多,只不過這樣方便管理沖突、歷史等,還可以跨項目復用一些東西。

構建、部署的過程最開始是通過 shell 來寫,但寫那個的要求還是很高的,很少人會寫(我就不咋會)。后來就支持了可視化的編排,可以被編排的這個構建、部署的流程叫做流水線 pipeline。

比如這是 jenkins 的 pipeline 的界面:

除了構建、部署外,也可以加入一些自動化測試、靜態代碼檢查等任務。

這種自動化了的構建、部署流程就叫做 CI(持續集成)、CD(持續部署)。

我們現在還是通過 scp / FTP 來上傳代碼做的部署,但是不同代碼的運行環境是不同的,比如 Node.js 服務需要安裝 node,Java 服務需要安裝 JRE 等,只把代碼傳上去并不一定能跑起來。

那怎么辦呢?怎么保證部署的代碼運行在正確的環境?

把環境也給管理起來,作為部署信息的一部分不就行了?

現在流行的容器技術就是做這個的,比如 docker,可以把環境信息和服務啟動方式放到 dockerfile 里,build 產生一個鏡像 image,之后直接部署這個 docker image 就行。

比如我們用 nginx 作為靜態服務器的時候,dockerfile 可能是這樣的:

FROM nginx:alpine
COPY /nginx/ /etc/nginx/
COPY /dist/ /usr/share/nginx/html/
EXPOSE 80

這樣就把運行環境給管理了起來。

所以,現在的構建產物不再是直接上傳服務器,而是生成一個 docker image,上傳到 docker registry,然后把這個 docker image 部署到服務器。

還有一個問題,現在前端代碼、后端代碼都部署在了我們的服務器上,共享服務器的網絡帶寬,其中前端代碼是不會變動的、流量卻很大,這樣使得后端服務的可用帶寬變小、支持的并發量下降。

能不能把這部分靜態資源的請求分離出去呢?最好能部署到離用戶近一點的服務器,這樣訪問更快。

確實可以,這就是 CDN 做的事情。

網上有專門的 CDN 服務提供商,它們有很多分散在各地的服務器,可以提供靜態資源的托管。這些靜態資源最終還是從我們的靜態資源服務器來拿資源的,所以我們的靜態資源服務器叫做源站。但是請求一次之后就會緩存下來,下次就不用再請求源站了,這樣就減輕了我們服務器的壓力,還能加速用戶請求靜態資源的速度。

這樣就解決了靜態資源分去了太多網絡帶寬的問題,而且還加速了資源的訪問速度。

此外,靜態資源的部署還要考慮順序問題,要先部署頁面用到的資源,再部署頁面,還有,需要在文件名加 hash 來觸發緩存更新等,這些都是更細節的問題。

這里說的都是網頁的部署方式,對于 APP/小程序它們是有自己的服務器和分發渠道的,我們構建完之后不是部署,而是在它們的平臺提交審核,審核通過之后由它們負責部署和分發。

總結

互聯網讓我們能夠用手機、PC 等終端訪問任何一臺服務器的資源、服務。而提供這些資源、服務就是我們開發者做的事情。把資源上傳到服務器上,并把服務跑起來,就叫做部署。

對于代碼,我們可以本地構建,然后把構建產物通過 FTP/scp 等方式上傳到服務器。

但是這樣的方式不好管理,所以我們會有專門的 CI/CD 平臺來做這個,比如 jenkins。

jenkins 支持 pipeline 的可視化編排,比寫 shell 腳本的方式易用很多,可以在構建過程中加入自動化測試、靜態代碼檢查等步驟。

不同代碼運行環境不同,為了把環境也管理起來,我們會使用容器技術,比如 docker。把環境信息寫入 dockerfile,然后構建生成 docker image,上傳到 registry,之后部署這個 docker image 就行。

靜態資源和動態資源共享服務器的網絡帶寬,為了減輕服務器壓力、也為了加速靜態資源的訪問,我們會使用 CDN 來對靜態資源做加速,把我們的靜態服務器作為源站。第一個靜態資源的請求會請求源站并緩存下來,之后的請求就不再需要請求源站,這樣就減輕了源站的壓力。此外,靜態資源的部署還要考慮順序、緩存更新等問題。

對于網頁來說是這樣,APP/小程序等不需要我們負責部署,只要在它們的平臺提交審核,然后由它們負責部署和分發。

當我們在談部署的時候,主要就是在談這些。

責任編輯:姜華 來源: 神光的編程秘籍
相關推薦

2020-11-16 15:47:05

SaaS軟件轉型

2019-12-24 11:19:44

容器DockerLinux

2016-08-12 10:11:22

2023-08-28 10:33:09

敏捷Scrum理念

2022-11-11 09:28:57

軟件設計DDD

2024-07-26 08:35:29

2016-11-22 23:44:56

2022-07-05 09:31:46

基礎設施容器Docker

2019-02-19 10:22:07

5G5G手機5G技術

2024-03-28 14:16:43

容災云計算

2017-04-05 17:59:29

思科CTO下午茶

2019-06-04 14:36:04

高并發Java架構

2022-04-28 13:02:32

cpu指令編程

2017-03-07 15:43:28

編程語言函數數據結構

2019-03-18 10:08:18

RSACRSA大會 網絡安全

2021-11-18 21:09:50

流批場景引擎

2017-10-11 13:25:00

前端

2014-11-11 09:17:41

2018-08-23 08:34:21

區塊鏈分布式賬本比特幣

2014-06-25 09:11:48

技術
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 免费成人毛片 | www国产成人免费观看视频,深夜成人网 | 精品亚洲国产成av人片传媒 | 91亚洲国产亚洲国产 | 成人av片在线观看 | 一区在线免费视频 | 精品国产成人 | 欧美成人精品二区三区99精品 | 成人永久免费 | 三级成人在线观看 | 精品一区二区三区在线观看国产 | 国产精品成人一区 | 精品蜜桃一区二区三区 | 国产一区二区在线视频 | 亚洲欧美中文日韩在线 | 色综合99| 久久99精品久久久久久琪琪 | 日本精品久久久久久久 | 国产欧美精品一区 | 国产精品亚洲精品久久 | 玖玖玖av| 欧美影院| 久久久一二三区 | 综合久 | 国产一区免费 | 电影91久久久 | av网站在线看 | 中文字幕日韩一区 | 日韩欧美第一页 | 亚洲欧美一区二区三区1000 | 成人在线网 | 免费观看成人性生生活片 | 亚洲综合成人网 | 黑人巨大精品欧美一区二区免费 | 精品国产欧美一区二区 | 亚洲欧洲av在线 | 中文字幕av在线 | 国产一级淫片a直接免费看 免费a网站 | 久久精品99久久 | 久久国产婷婷国产香蕉 | 亚洲精品免费在线观看 |