• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
    當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

    使用travis-ci如何持續(xù)部署node.js應(yīng)用詳解

    來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:33:45
    文檔

    使用travis-ci如何持續(xù)部署node.js應(yīng)用詳解

    使用travis-ci如何持續(xù)部署node.js應(yīng)用詳解:前言 在開始之前,我們先來(lái)簡(jiǎn)單介紹下Travis-ci,Travis-ci是一款持續(xù)集成(Continuous Integration)服務(wù),它能夠很好地與Github結(jié)合,每當(dāng)代碼更新時(shí)自動(dòng)地觸發(fā)集成過(guò)程。 Travis-ci配置簡(jiǎn)單,很多nodejs項(xiàng)目都用它做自動(dòng)測(cè)試。然而,對(duì)于持續(xù)集成,
    推薦度:
    導(dǎo)讀使用travis-ci如何持續(xù)部署node.js應(yīng)用詳解:前言 在開始之前,我們先來(lái)簡(jiǎn)單介紹下Travis-ci,Travis-ci是一款持續(xù)集成(Continuous Integration)服務(wù),它能夠很好地與Github結(jié)合,每當(dāng)代碼更新時(shí)自動(dòng)地觸發(fā)集成過(guò)程。 Travis-ci配置簡(jiǎn)單,很多nodejs項(xiàng)目都用它做自動(dòng)測(cè)試。然而,對(duì)于持續(xù)集成,

    前言

    在開始之前,我們先來(lái)簡(jiǎn)單介紹下Travis-ci,Travis-ci是一款持續(xù)集成(Continuous Integration)服務(wù),它能夠很好地與Github結(jié)合,每當(dāng)代碼更新時(shí)自動(dòng)地觸發(fā)集成過(guò)程。

    Travis-ci配置簡(jiǎn)單,很多nodejs項(xiàng)目都用它做自動(dòng)測(cè)試。然而,對(duì)于持續(xù)集成,僅做到自動(dòng)測(cè)試是不夠的,還要有后續(xù)的自動(dòng)部署,才能完成“提交代碼 => 自動(dòng)測(cè)試 => 自動(dòng)部署”的集成鏈條。

    本文以nodejs應(yīng)用為例,來(lái)談?wù)勅绾卫胻ravis-ci完成自動(dòng)部署。話不多說(shuō),來(lái)一起看看詳細(xì)的介紹:

    基本原理

    從自動(dòng)測(cè)試到自動(dòng)部署的核心問(wèn)題是測(cè)試機(jī)與生產(chǎn)服務(wù)器的信任問(wèn)題,即如何安全地把程序包傳輸?shù)缴a(chǎn)服務(wù)器。市面上的部署工具如scp、ansible、chef,都繞不開這個(gè)核心問(wèn)題。

    以scp為例,測(cè)試機(jī)登錄生產(chǎn)服務(wù)器的方式有兩種:密碼和秘鑰。密碼登錄方式需要交互式地輸入密碼,總不能每次測(cè)試的時(shí)候,人為地輸入密碼吧,所以密碼方式行不通。

    秘鑰的方式可以實(shí)現(xiàn)自動(dòng)登錄,但首次將測(cè)試機(jī)的公鑰傳輸給生產(chǎn)服務(wù)器仍然需要密碼。似乎走入了死胡同,但辦法總是有的。我們知道開發(fā)機(jī)是可以登錄到生產(chǎn)服務(wù)器的,那么我們就可以將開發(fā)機(jī)的公鑰復(fù)制到生產(chǎn)服務(wù)器,將開發(fā)機(jī)的私鑰復(fù)制到測(cè)試機(jī),測(cè)試機(jī)通過(guò)私鑰來(lái)偽裝成開發(fā)機(jī),自動(dòng)地登錄到生產(chǎn)服務(wù)器。

    解決了自動(dòng)登錄的問(wèn)題,另一個(gè)問(wèn)題是怎么將開發(fā)機(jī)的私鑰復(fù)制到測(cè)試機(jī)上。由于測(cè)試機(jī)每次都是新開的一個(gè)虛擬機(jī),這個(gè)新開的虛擬機(jī)IP不固定,所以沒(méi)辦法直接登錄上去。解決辦法是將私鑰文件作為代碼庫(kù)的一部分提交,這樣測(cè)試機(jī)每次從代碼庫(kù)上拉取代碼的同時(shí)也獲取到了秘鑰文件,通過(guò)這種方式就實(shí)現(xiàn)了私鑰從開發(fā)機(jī)復(fù)制到測(cè)試機(jī)。

    將私鑰文件提交到代碼庫(kù)有一個(gè)很嚴(yán)重的安全性問(wèn)題,即任何人只要得到了這個(gè)私鑰文件,他就可以隨心所欲的操縱生產(chǎn)服務(wù)器。幸好,travis-ci提供了加密方案,它能夠?qū)⑺借€文件加密,加密后的文件只在當(dāng)前代碼庫(kù)有效。

    總的來(lái)說(shuō),通過(guò)復(fù)制私鑰完成自動(dòng)登錄以及對(duì)私鑰加密來(lái)保障安全性,我們就可以建立起測(cè)試機(jī)與生產(chǎn)服務(wù)器的信任通道,測(cè)試機(jī)就可以安全地操作生產(chǎn)服務(wù)器完成自動(dòng)部署。

    配置

    現(xiàn)在我以scp方式部署nodejs應(yīng)用為例,來(lái)說(shuō)明travis-ci做自動(dòng)部署的配置。

    首先,建立起開發(fā)機(jī)與生產(chǎn)服務(wù)器的信任關(guān)系:

    ssh-copy-id username@host

    然后,加密你的私鑰,私鑰文件通常在~/.ssh/id_rsa。加密私鑰文件需要使用travis這個(gè)命令行工具,它是一個(gè)ruby包,使用gem安裝:

    gem install travis
    travis login

    輸入賬號(hào)密碼登錄成功后,使用travis encrypt-file加密:

    travis encrypt-file ~/.ssh/id_rsa --add

    上面命令執(zhí)行完后,會(huì)生成一段解密命令并添加到.travis.yml中:

    before_install:
     - openssl aes-256-cbc -K $encrypted_830d3b21a25d_key -iv $encrypted_830d3b21a25d_iv
     -in ~/.ssh/id_rsa.enc -out ~/.ssh/id_rsa -d

    接下來(lái),把加密后的私鑰文件(id_rsa.enc)復(fù)制到代碼庫(kù)中,千萬(wàn)要注意不要錯(cuò)把未加密的私鑰文件(id_rsa)復(fù)制到你的代碼庫(kù)中。然后把上面的解密命令的-in ~/.ssh/id_rsa.enc改為-in id_rsa.enc

    通過(guò)上面的過(guò)程就基本建立測(cè)試機(jī)與生產(chǎn)服務(wù)器的信任關(guān)系,但還有一些小細(xì)節(jié)要處理。例如,降低id_rsa文件的權(quán)限,否則ssh處于安全方面的原因會(huì)拒絕讀取秘鑰;將生產(chǎn)服務(wù)器地址加入到測(cè)試機(jī)的信任列表中,否則連接時(shí)會(huì)詢問(wèn)是否信任服務(wù)器。更改后的配置如下:

    before_install:
     - openssl aes-256-cbc -K $encrypted_830d3b21a25d_key -iv $encrypted_830d3b21a25d_iv
     -in id_rsa.enc -out ~/.ssh/id_rsa -d
     - chmod 600 ~/.ssh/id_rsa
     - echo -e "Host 102.201.64.94\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config

    最后,測(cè)試機(jī)就可以愉快地操作生產(chǎn)服務(wù)器了,例如下面是一個(gè)nodejs應(yīng)用的.travis.yml文件配置:

    language: node_js
    node_js:
     - '4.4.4'
    before_install:
     - openssl aes-256-cbc -K $encrypted_830d3b21a25d_key -iv $encrypted_830d3b21a25d_iv
     -in id_rsa.enc -out ~/.ssh/id_rsa -d
     - chmod 600 ~/.ssh/id_rsa
     - echo -e "Host 102.201.64.94\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
    script:
     - npm run test
    after_success:
     - npm prune --production # 刪除devDependencies
     - tar -jcf indoor-server.tar.bz2 * # 打包并壓縮代碼
     - scp indoor-server.tar.bz2 jingsam@102.201.64.94:~/ # 復(fù)制到生產(chǎn)服務(wù)器上
     - ssh jingsam@102.201.64.94 'mkdir -p indoor-server && tar -jxf indoor-server.tar.bz2 -C indoor-server' # 解壓
     - ssh jingsam@102.201.64.94 'cd indoor-server && pm2 startOrReload pm2.json' # 重啟pm2

    總結(jié)

    本篇文章講的自動(dòng)部署其實(shí)與nodejs關(guān)系不大,完全適用于各種語(yǔ)言的自動(dòng)部署,其原理都是相通的。

    好了,

    聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    使用travis-ci如何持續(xù)部署node.js應(yīng)用詳解

    使用travis-ci如何持續(xù)部署node.js應(yīng)用詳解:前言 在開始之前,我們先來(lái)簡(jiǎn)單介紹下Travis-ci,Travis-ci是一款持續(xù)集成(Continuous Integration)服務(wù),它能夠很好地與Github結(jié)合,每當(dāng)代碼更新時(shí)自動(dòng)地觸發(fā)集成過(guò)程。 Travis-ci配置簡(jiǎn)單,很多nodejs項(xiàng)目都用它做自動(dòng)測(cè)試。然而,對(duì)于持續(xù)集成,
    推薦度:
    標(biāo)簽: 持續(xù) ci node.js
    • 熱門焦點(diǎn)

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 精品久久久久久成人AV| 久久精品国产亚洲沈樵| 2021国产成人精品国产| 欧美激情视频精品一区二区 | 国产精品自在欧美一区| 国产成人精品精品欧美| 最新精品露脸国产在线| 国产精品青草视频免费播放| 99热成人精品热久久669| 中文字幕精品无码一区二区 | 国产办公室秘书无码精品99| 一本色道久久综合亚洲精品| 久久国产精品一区| 国产精品成人99久久久久| 欧美成人精品一级高清片| 国产成人精品高清在线观看93 | 久久精品国产黑森林| 91精品国产91久久久久久青草| 精品无码av一区二区三区| 呦交小u女国产精品视频| 欧美激情视频精品一区二区| 国产综合精品蜜芽| 国内精品久久久久国产盗摄| 国产精品久久久久乳精品爆| www.日韩精品| 国产精品二区观看| 99精品国产成人一区二区| 日本精品卡一卡2卡3卡四卡| 久久亚洲国产精品一区二区| 久久线看观看精品香蕉国产| 久久精品国产亚洲综合色| 久草视频在线这里精品| 国产cosplay精品视频| 国内精品在线视频| 精品九九人人做人人爱| 四虎影视国产精品永久在线| 久久这里只精品国产99热| 亚洲精品理论电影在线观看| 亚洲国产精品久久66| 国产精品嫩草影院久久| 免费看一级毛片在线观看精品视频 |