最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Node 自動(dòng)化部署的方法

 更新時(shí)間:2017年10月17日 11:38:33   作者:HASIK1  
本篇文章主要介紹了Node 自動(dòng)化部署的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

當(dāng)我們?cè)诟碌?Node 項(xiàng)目的時(shí)候,我們需要做以下幾步:

  • git push 將代碼提交至代碼倉(cāng)庫(kù)
  • 在服務(wù)器中執(zhí)行 git pull 拉取最新代碼
  • pm2 start 運(yùn)行你的代碼

這樣做固然沒(méi)錯(cuò),但是一旦項(xiàng)目更新迭代過(guò)快,就需要不斷的重復(fù)著上面的步驟,在各種 bash 面板中來(lái)回切換,很是麻煩。

這時(shí)候,Webhooks 閃亮登場(chǎng)!

對(duì)于 Webhooks, Github 給出的解釋是:

Webhooks allow you to build or set up integrations which subscribe to certain events on GitHub.com.

簡(jiǎn)單來(lái)說(shuō),利用 Webhooks,我們就可以實(shí)現(xiàn)網(wǎng)站的自動(dòng)部署,現(xiàn)在就來(lái)看看具體該怎么做

配置腳本

這段腳本內(nèi)容是我們需要服務(wù)器自動(dòng)執(zhí)行的

# autoBuild.sh

#! /bin/bash
git reset --hard origin/master
git clean -f
git pull
npm start

注:這段腳本將會(huì)自動(dòng)在服務(wù)器中執(zhí)行

編寫(xiě) js 文件執(zhí)行腳本

由于我使用的是 Github 作為代碼倉(cāng)庫(kù),所以在這里,我們使用 github-Webhooks-handler 這個(gè)庫(kù)來(lái)實(shí)現(xiàn)我們的腳本自動(dòng)執(zhí)行工作

按照文檔,我們按照以下方式來(lái)編寫(xiě) js 文件:

// autoBuild.js
var http = require('http')
var spawn = require('child_process').spawn
var createHandler = require('github-Webhooks-handler')
var handler = createHandler({ path: '/pushCode', secret: '' }) // 在代碼倉(cāng)庫(kù)的 Webhooks 選項(xiàng)處配置
http.createServer(function (req, res) {
 handler(req, res, function (err) {
  res.statusCode = 404;
  res.end('no such location')
 })
}).listen(7777)

handler.on('error', function (err) {
 console.error('Error:', err.message)
})

// 監(jiān)聽(tīng) push 事件
handler.on('push', function (event) {
 console.log('Received a push event for %s to %s',
  event.payload.repository.name,
  event.payload.ref)
 rumCommand('sh', ['./autoBuild.sh'], function( txt ) { // 執(zhí)行 autoBuild.sh 腳本文件
  console.log(txt)
 })
})

function rumCommand( cmd, args, callback ) {
  var child = spawn( cmd, args )
  var response = ''
  child.stdout.on('data', function( buffer ){ response += buffer.toString(); })
  child.stdout.on('end', function(){ callback( response ) })
}

在 app.js 中,我們將端口設(shè)置為 3001,在這里代碼就不放出來(lái)了,可以在文末的 Github 鏈接里找到本教程的全部示例代碼

Nginx 配置

由于我們的示例代碼是跑在 3001 端口的,執(zhí)行自動(dòng)化部署的 js 文件則跑在 7777 端口,所以我們需要配置一下 Nginx 來(lái)啟用這兩個(gè)端口:

# 啟用 7777 端口
server {
  listen 7777;
  listen [::]:7777
  server_name huangxizhou.com; #在這里填上你自己的服務(wù)器 ip 地址或者域名
  
  root /var/www/html/auto-build;
}

# 啟用 3001 端口
server {
  listen 3001;
  listen [::]:3001
  server_name huangxizhou.com; #在這里填上你自己的服務(wù)器 ip 地址或者域名
  
  root /var/www/html/auto-build;
}

這樣一來(lái),Nginx 就配置完畢了,接下來(lái)就是代碼倉(cāng)庫(kù)的 Webhooks 配置

Webhooks 配置

首先,我們進(jìn)入你想實(shí)現(xiàn)自動(dòng)化部署的倉(cāng)庫(kù),點(diǎn)擊 settings -> Webhooks 來(lái)配置

在右側(cè),就是配置你的接口地址以及 Secret,對(duì)應(yīng)之前的 js 文件里面的 Secret,選擇 Content type 為 application/json

初始化項(xiàng)目

第一次部署項(xiàng)目,還是需要我們自己手動(dòng)操作的。

首先提交代碼至代碼倉(cāng)庫(kù)(這里是Github),然后進(jìn)入服務(wù)器執(zhí)行 git pull

這樣,我們就成功部署了我們 Node 實(shí)現(xiàn)自動(dòng)部署的代碼了

讓我們修改代碼來(lái)試試效果怎么樣

git push 之后轉(zhuǎn)到服務(wù)器內(nèi)一看,完美,成功運(yùn)行

再看看 Github

已經(jīng)自動(dòng)觸發(fā)了接口,Node 自動(dòng)化部署成功

最后

此技術(shù)不僅僅局限于 Node

局限性也是有的,只能單項(xiàng)目自動(dòng)化部署,且必須依賴(lài)代碼倉(cāng)庫(kù)

本項(xiàng)目的源碼地址:https://github.com/HuangXiZhou/auto-build

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • node.js博客項(xiàng)目開(kāi)發(fā)手記

    node.js博客項(xiàng)目開(kāi)發(fā)手記

    本篇文章給大家總結(jié)了node.js博客項(xiàng)目開(kāi)發(fā)的相關(guān)步驟以及知識(shí)點(diǎn)分享,有興趣的朋友參考下。
    2018-03-03
  • 基于node打包可執(zhí)行文件工具_(dá)Pkg使用心得分享

    基于node打包可執(zhí)行文件工具_(dá)Pkg使用心得分享

    下面小編就為大家分享一篇基于node打包可執(zhí)行文件工具_(dá)Pkg使用心得分享,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • 淺談nodejs中的類(lèi)定義和繼承的套路

    淺談nodejs中的類(lèi)定義和繼承的套路

    本篇文章主要介紹了淺談nodejs中的類(lèi)定義和繼承的套路,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • Postman xmysql不切換環(huán)境緩存數(shù)據(jù)到本地

    Postman xmysql不切換環(huán)境緩存數(shù)據(jù)到本地

    這篇文章主要為大家介紹了Postman xmysql不切換環(huán)境緩存數(shù)據(jù)到本地示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • node使用crypto模塊為用戶密碼加密

    node使用crypto模塊為用戶密碼加密

    本文主要介紹了node使用crypto模塊為用戶密碼加密,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Node.js編寫(xiě)CLI的實(shí)例詳解

    Node.js編寫(xiě)CLI的實(shí)例詳解

    Node.js的應(yīng)用場(chǎng)景有前后端分離、海量web頁(yè)面渲染服務(wù)、命令行工具和桌面端應(yīng)用等等。本篇文章選取CLI(Command Line Tools)子領(lǐng)域,來(lái)談?wù)凬ode.js編寫(xiě)CLI的實(shí)踐,讓CLI切實(shí)解決實(shí)際工程問(wèn)題。
    2017-05-05
  • NodeJS?基于?Dapr?構(gòu)建云原生微服務(wù)應(yīng)用快速入門(mén)教程

    NodeJS?基于?Dapr?構(gòu)建云原生微服務(wù)應(yīng)用快速入門(mén)教程

    Dapr?是一個(gè)可移植的、事件驅(qū)動(dòng)的運(yùn)行時(shí),它使任何開(kāi)發(fā)人員能夠輕松構(gòu)建出彈性的、無(wú)狀態(tài)和有狀態(tài)的應(yīng)用程序,并可運(yùn)行在云平臺(tái)或邊緣計(jì)算中,它同時(shí)也支持多種編程語(yǔ)言和開(kāi)發(fā)框架,本文重點(diǎn)介紹NodeJS云原生微服務(wù)應(yīng)用,感興趣的朋友一起看看吧
    2022-07-07
  • 輕松創(chuàng)建nodejs服務(wù)器(8):非阻塞是如何實(shí)現(xiàn)的

    輕松創(chuàng)建nodejs服務(wù)器(8):非阻塞是如何實(shí)現(xiàn)的

    這篇文章主要介紹了輕松創(chuàng)建nodejs服務(wù)器(8):非阻塞是如何實(shí)現(xiàn)的,本文著重分析非阻塞的實(shí)現(xiàn),對(duì)代碼進(jìn)行了分解,需要的朋友可以參考下
    2014-12-12
  • node.js中的fs.readFileSync方法使用說(shuō)明

    node.js中的fs.readFileSync方法使用說(shuō)明

    這篇文章主要介紹了node.js中的fs.readFileSync方法使用說(shuō)明,本文介紹了fs.readFileSync的方法說(shuō)明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • node.js中的fs.statSync方法使用說(shuō)明

    node.js中的fs.statSync方法使用說(shuō)明

    這篇文章主要介紹了node.js中的fs.statSync方法使用說(shuō)明,本文介紹了fs.statSync的方法說(shuō)明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12

最新評(píng)論

宝鸡市| 卓资县| 昌都县| 怀化市| 泉州市| 区。| 琼结县| 手机| 阿拉善左旗| 金门县| 靖远县| 金华市| 两当县| 阳原县| 岱山县| 马关县| 托里县| 商水县| 突泉县| 双江| 宜君县| 长丰县| 裕民县| 敦煌市| 大渡口区| 石渠县| 大悟县| 南投市| 承德县| 根河市| 无棣县| 万荣县| 东台市| 星子县| 友谊县| 德兴市| 新乡市| 治县。| 山西省| 津市市| 邓州市|