国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題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關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

使用travis-ci如何持續部署node.js應用詳解

來源:懂視網 責編:小采 時間:2020-11-27 22:33:45
文檔

使用travis-ci如何持續部署node.js應用詳解

使用travis-ci如何持續部署node.js應用詳解:前言 在開始之前,我們先來簡單介紹下Travis-ci,Travis-ci是一款持續集成(Continuous Integration)服務,它能夠很好地與Github結合,每當代碼更新時自動地觸發集成過程。 Travis-ci配置簡單,很多nodejs項目都用它做自動測試。然而,對于持續集成,
推薦度:
導讀使用travis-ci如何持續部署node.js應用詳解:前言 在開始之前,我們先來簡單介紹下Travis-ci,Travis-ci是一款持續集成(Continuous Integration)服務,它能夠很好地與Github結合,每當代碼更新時自動地觸發集成過程。 Travis-ci配置簡單,很多nodejs項目都用它做自動測試。然而,對于持續集成,

前言

在開始之前,我們先來簡單介紹下Travis-ci,Travis-ci是一款持續集成(Continuous Integration)服務,它能夠很好地與Github結合,每當代碼更新時自動地觸發集成過程。

Travis-ci配置簡單,很多nodejs項目都用它做自動測試。然而,對于持續集成,僅做到自動測試是不夠的,還要有后續的自動部署,才能完成“提交代碼 => 自動測試 => 自動部署”的集成鏈條。

本文以nodejs應用為例,來談談如何利用travis-ci完成自動部署。話不多說,來一起看看詳細的介紹:

基本原理

從自動測試到自動部署的核心問題是測試機與生產服務器的信任問題,即如何安全地把程序包傳輸到生產服務器。市面上的部署工具如scp、ansible、chef,都繞不開這個核心問題。

以scp為例,測試機登錄生產服務器的方式有兩種:密碼和秘鑰。密碼登錄方式需要交互式地輸入密碼,總不能每次測試的時候,人為地輸入密碼吧,所以密碼方式行不通。

秘鑰的方式可以實現自動登錄,但首次將測試機的公鑰傳輸給生產服務器仍然需要密碼。似乎走入了死胡同,但辦法總是有的。我們知道開發機是可以登錄到生產服務器的,那么我們就可以將開發機的公鑰復制到生產服務器,將開發機的私鑰復制到測試機,測試機通過私鑰來偽裝成開發機,自動地登錄到生產服務器。

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

將私鑰文件提交到代碼庫有一個很嚴重的安全性問題,即任何人只要得到了這個私鑰文件,他就可以隨心所欲的操縱生產服務器。幸好,travis-ci提供了加密方案,它能夠將私鑰文件加密,加密后的文件只在當前代碼庫有效。

總的來說,通過復制私鑰完成自動登錄以及對私鑰加密來保障安全性,我們就可以建立起測試機與生產服務器的信任通道,測試機就可以安全地操作生產服務器完成自動部署。

配置

現在我以scp方式部署nodejs應用為例,來說明travis-ci做自動部署的配置。

首先,建立起開發機與生產服務器的信任關系:

ssh-copy-id username@host

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

gem install travis
travis login

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

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

上面命令執行完后,會生成一段解密命令并添加到.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)復制到代碼庫中,千萬要注意不要錯把未加密的私鑰文件(id_rsa)復制到你的代碼庫中。然后把上面的解密命令的-in ~/.ssh/id_rsa.enc改為-in id_rsa.enc。

通過上面的過程就基本建立測試機與生產服務器的信任關系,但還有一些小細節要處理。例如,降低id_rsa文件的權限,否則ssh處于安全方面的原因會拒絕讀取秘鑰;將生產服務器地址加入到測試機的信任列表中,否則連接時會詢問是否信任服務器。更改后的配置如下:

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

最后,測試機就可以愉快地操作生產服務器了,例如下面是一個nodejs應用的.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:~/ # 復制到生產服務器上
 - 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

總結

本篇文章講的自動部署其實與nodejs關系不大,完全適用于各種語言的自動部署,其原理都是相通的。

好了,

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

使用travis-ci如何持續部署node.js應用詳解

使用travis-ci如何持續部署node.js應用詳解:前言 在開始之前,我們先來簡單介紹下Travis-ci,Travis-ci是一款持續集成(Continuous Integration)服務,它能夠很好地與Github結合,每當代碼更新時自動地觸發集成過程。 Travis-ci配置簡單,很多nodejs項目都用它做自動測試。然而,對于持續集成,
推薦度:
標簽: 持續 ci node.js
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 欧美 亚洲 另类 热图 | 欧美亚洲国产精品久久久 | 一区二区三区四区日韩 | 国产成人三级经典中文 | 国产精品三级一区二区 | 亚洲精品一二三 | 欧美视频网站在线观看 | 一区二区三区四区电影 | 欧美极品尤物在线播放一级 | 欧美亚洲激情 | 国产欧美色图 | 国产码欧美日韩高清综合一区 | 欧美高清视频在线 | 国产欧美一区二区精品久久久 | 国产91精品黄网在线观看 | 亚欧乱色视频网站大全 | 国产人成精品综合欧美成人 | 国产在线观看一区二区三区 | er久99久热只有精品国产 | 美女网站全黄 | 中文国产成人精品少久久 | 亚洲一二三 | 日韩专区第一页 | 大陆日韩欧美 | 国产一区在线视频观看 | 免费国产一区 | 欧美视频区 | 五月天婷婷视频在线观看 | 欧美日韩高清一区二区三区 | 成人国产一区二区三区精品 | 亚洲女同一区二区 | 91欧美精品 | 欧美日韩网 | 一级毛片免费观看 | 国产亚洲精品a在线观看app | 91久久偷偷看嫩草影院无费 | 91香蕉国产亚洲一区二区三区 | 国产成人综合久久精品亚洲 | 另类国产精品一区二区 | 欧美激情精品久久久久 | 欧美理论电影在线观看 |