成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

怎么使用travis-ci持續(xù)部署node.js應(yīng)用

這篇文章主要介紹了怎么使用travis-ci持續(xù)部署node.js應(yīng)用,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站制作、做網(wǎng)站、房縣網(wǎng)絡(luò)推廣、小程序定制開發(fā)、房縣網(wǎng)絡(luò)營(yíng)銷、房縣企業(yè)策劃、房縣品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供房縣建站搭建服務(wù),24小時(shí)服務(wù)熱線:18980820575,官方網(wǎng)址:jinyejixie.com

基本原理

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

以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ī)通過私鑰來偽裝成開發(fā)機(jī),自動(dòng)地登錄到生產(chǎn)服務(wù)器。

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

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

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

配置

現(xiàn)在我以scp方式部署nodejs應(yīng)用為例,來說明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

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

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

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“怎么使用travis-ci持續(xù)部署node.js應(yīng)用”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!

新聞標(biāo)題:怎么使用travis-ci持續(xù)部署node.js應(yīng)用
文章來源:http://jinyejixie.com/article10/ppsgdo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)動(dòng)態(tài)網(wǎng)站、關(guān)鍵詞優(yōu)化、網(wǎng)站營(yíng)銷Google、搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)
漾濞| 榆林市| 泰和县| 台湾省| 台湾省| 克拉玛依市| 台前县| 江山市| 论坛| 会理县| 西乌珠穆沁旗| 宁陵县| 岫岩| 桂东县| 六盘水市| 阆中市| 青河县| 五常市| 巴中市| 安塞县| 布尔津县| 松江区| 宁安市| 浦县| 日喀则市| 阳原县| 嘉峪关市| 盐城市| 竹北市| 聂拉木县| 新宾| 天峨县| 虹口区| 海晏县| 驻马店市| 夏邑县| 平潭县| 肇东市| 疏附县| 鲁山县| 中西区|