對(duì)于程序員來說脯厨,部署這個(gè)詞已經(jīng)是耳熟能詳?shù)牧耍憧赡軙?huì)覺得很可笑嗦玖,連部署都不知道一定是個(gè)超級(jí)小白。
沒錯(cuò)跃脊,對(duì)于剛?cè)肼毑痪玫奈襾碚f的確還是個(gè)小白宇挫,雖然之前無數(shù)次聽過部署這個(gè)概念,大概知道是啥酪术,但老實(shí)說器瘪,如何解釋部署,部署過程到底做了什么我整個(gè)都是懵的,可能就是傳說中的“只可意會(huì)不可言傳”吧娱局。
人有時(shí)候就是這樣不到非要用的時(shí)候永遠(yuǎn)都不知道自己不知道什么彰亥。
以前我知道的部署是將開發(fā)出的軟件通過某種方式放到一個(gè)遠(yuǎn)程服務(wù)器上,然后在遠(yuǎn)程服務(wù)器上進(jìn)行環(huán)境的配置使得代碼能夠工作衰齐,在這中間如何去做一概不知任斋,更不知道這其實(shí)只是部署中的一種方式而已。
一切源于最近的一個(gè)作業(yè)耻涛,要求使用jenkins對(duì)一個(gè)git項(xiàng)目進(jìn)行部署废酷,由于只是簡單的作業(yè),所以只需要本地部署即可抹缕。
其實(shí)我一開始并不清楚要求的是本地部署澈蟆,因?yàn)榫筒恢肋€有什么本地部署,嗯卓研,感覺自己宛如一個(gè)智障趴俘。后來完成作業(yè)過程中遇到了一些問題,在求助他人的時(shí)候才發(fā)現(xiàn)原來自己一直在誤區(qū)里面奏赘。
科科寥闪,開始說正事了。
所謂部署磨淌,就是讓開發(fā)出的產(chǎn)品能夠在某一環(huán)境中運(yùn)行起來疲憋。
至于這個(gè)環(huán)境是什么,根據(jù)具體情況而定梁只,可以是一個(gè)公司買的實(shí)體服務(wù)器缚柳,可以是類似AWS提供的云平臺(tái)服務(wù),也可以是本地環(huán)境搪锣,所以相應(yīng)地部署就分為遠(yuǎn)程部署和本地部署秋忙。
遠(yuǎn)程部署很容易理解,因?yàn)槭呛艹R姷牟渴鹦问接傧瑁瑢?duì)于本地部署翰绊,至少我最初是很難理解的,因?yàn)樵谖铱磥肀镜剡M(jìn)行開發(fā)工作的時(shí)候項(xiàng)目本來就是可以正常工作的旁壮,為什么還要多此一舉地去進(jìn)行本地部署呢监嗜,這跟開發(fā)環(huán)境有什么區(qū)別呢,完全不能理解呀抡谐。
一般的軟件都會(huì)存在至少兩個(gè)階段裁奇,開發(fā)和部署。
開發(fā)工作是在本地進(jìn)行的麦撵,這時(shí)我們會(huì)使用一些編輯器刽肠,例如WebStorm溃肪,VScode等等類似的IDE,但是這個(gè)時(shí)候項(xiàng)目只能在我們本地環(huán)境才能正常工作音五,別人的電腦上是訪問不到的惫撰,要想別人也能夠正常使用我們的項(xiàng)目就得進(jìn)行部署。
部署剛剛已經(jīng)提到過躺涝,就是使得軟件在某一環(huán)境中運(yùn)行起來厨钻,這個(gè)過程中會(huì)將源代碼生成可運(yùn)行的軟件包,然后將軟件包放到要部署的環(huán)境中坚嗜,通過一些配置使得這個(gè)軟件包在目標(biāo)環(huán)境上也能夠正常工作夯膀。
因?yàn)閷?duì)于一個(gè)項(xiàng)目來說,不同人群需要的“產(chǎn)品”類型是不一樣的苍蔬,假設(shè)我們要為某一個(gè)公司開發(fā)一個(gè)網(wǎng)站诱建,開發(fā)人員關(guān)心的是源代碼,而項(xiàng)目管理人員要的是一個(gè)可運(yùn)行的軟件包碟绑,然而客戶要的是能夠打開網(wǎng)頁就能顯示預(yù)期內(nèi)容的頁面俺猿。
從源代碼到能夠看到具體的頁面就是一個(gè)部署的過程。
因此部署要做的工作大致分為三步:
1. 將源代碼生成可運(yùn)行的軟件包格仲,例如 jar 包或 war 包等辜荠;
2. 將可運(yùn)行的軟件包放到目標(biāo)環(huán)境上;
3. 配置目標(biāo)環(huán)境使得軟件包能夠運(yùn)行起來抓狭;
知道了這些再去看開發(fā)和本地部署的確是有區(qū)別的,盡管都是在同一臺(tái)機(jī)器上造烁,但是本質(zhì)不同否过,和遠(yuǎn)程部署相比只是目標(biāo)環(huán)境不同而已,但依舊叫做部署惭蟋。
部署的工具也有很多苗桂,在我本次的作業(yè)中使用的是jenkins,通過在本地啟動(dòng)一個(gè)虛擬機(jī)然后運(yùn)行jenkins告组,將其作為目標(biāo)環(huán)境使用jenkins的pipeline進(jìn)行部署煤伟,因?yàn)槭窃谝慌_(tái)機(jī)器上故而是本地部署了。
一般來說木缝,我們提到的部署都是遠(yuǎn)程部署便锨,因?yàn)楫吘故且嬲赝度胧褂寐铮绻皇菍W(xué)習(xí)就可以本地部署啦我碟。