亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

Node服務(wù)一鍵離線(xiàn)部署

wenzi / 2136人閱讀

摘要:背景說(shuō)明項(xiàng)目測(cè)試通過(guò),到了上線(xiàn)部署階段。部署的機(jī)器安全限制比較嚴(yán)格,不允許訪(fǎng)問(wèn)外網(wǎng)。其中目錄中,存放的是部署相關(guān)的腳本。寫(xiě)在后面文中提及的服務(wù)離線(xiàn)部署,應(yīng)該已經(jīng)可以涵蓋大部分的場(chǎng)景,舉一反三即可。

背景說(shuō)明

項(xiàng)目測(cè)試通過(guò),到了上線(xiàn)部署階段。部署的機(jī)器安全限制比較嚴(yán)格,不允許訪(fǎng)問(wèn)外網(wǎng)。此外,沒(méi)有對(duì)外網(wǎng)開(kāi)放ssh服務(wù),無(wú)法通過(guò)ssh遠(yuǎn)程操作。

針對(duì)上面提到的兩條限制條件,通過(guò)下面方式解決:

無(wú)法訪(fǎng)問(wèn)外部網(wǎng)絡(luò):將依賴(lài)的環(huán)境本地下載,打包上傳,離線(xiàn)安裝;

無(wú)法ssh遠(yuǎn)程操作:將安裝/初始化步驟腳本化,安裝包交給運(yùn)維人員,一鍵部署;

安裝包說(shuō)明

讓運(yùn)維同學(xué)將安裝包置于/data/my_install下。安裝包大致如容如下。其中install_scripts目錄中,存放的是部署相關(guān)的腳本。

[root@localhost my_install]# tree -L 1
.
├── control # 各種服務(wù)控制腳本
├── install_scripts # 安裝腳本
├── node-v5.11.1-linux-x64 # node二進(jìn)制包
├── npm_modules_global_offline # 全局的npm模塊,比如 pm2
├── express_svr # express應(yīng)用
└── uninstall_scripts # 卸載腳本
部署腳本說(shuō)明
[root@localhost install_scripts]# tree -L 1
.
├── install_node.sh # 安裝nodejs
├── install_npm_moduels.sh # 安裝npm模塊
├── install_run_service.sh # 啟動(dòng)服務(wù)
├── install_express_svr.sh # 部署express應(yīng)用
└── install.sh # 部署總?cè)肟?/pre>
Node安裝

看下nodejs安裝腳本。為了安裝快些,這里我們采用的是編譯好的二進(jìn)制文件。只需要將相關(guān)文件拷貝到指定路徑即可。

Node安裝包說(shuō)明

以下是nodejs@v5.11.1的目錄。

[root@localhost node-v5.11.1-linux-x64]# tree -L 2
.
├── bin
│   ├── node # node可執(zhí)行文件
│   └── npm -> ../lib/node_modules/npm/bin/npm-cli.js # npm可執(zhí)行文件,其實(shí)是個(gè)軟鏈接
├── CHANGELOG.md
├── include # 各種包含文件
│   └── node
├── lib
│   └── node_modules # npm模塊安裝目錄
├── LICENSE
├── README.md
└── share
    ├── doc
    ├── man # 說(shuō)明文件
    └── systemtap

拷貝路徑說(shuō)明如下

本地路徑 拷貝到的路徑 備注
./bin/node /usr/local/bin/node node可執(zhí)行文件
./bin/npm /usr/local/bin/node npm可執(zhí)行文件,軟鏈接,指向 /usr/local/lib/node_modules/npm/bin/npm-cli.js
./lib/node_modules/ /usr/local/lib/ npm模塊安裝目錄
./include/node /usr/local/include/ 各種包含文件
./share/man/man1/node.1 /usr/local/man/man1/ 使用說(shuō)明
安裝腳本

install_node.sh

[root@localhost install_scripts]# cat install_node.sh 
#!/bin/bash
# 安裝nodejs

cd /data/my_install/
cd node-v5.11.1-linux-x64/

cp -r ./lib/node_modules/ /usr/local/lib/ # copy the node modules folder to the /lib/ folder
cp -r ./include/node /usr/local/include/ # copy the /include/node folder to /usr/local/include folder
mkdir -p /usr/local/man/man1 # create the man folder
cp ./share/man/man1/node.1 /usr/local/man/man1/ # copy the man file
cp ./bin/node /usr/local/bin/ # copy node to the bin folder
ln -s /usr/local/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm ## making the symbolic link to npm
全局npm模塊安裝

這里我們就用到了pm2,需要全局安裝。根據(jù)npm全局模塊的安裝方式,需要分兩步

將pm2模塊目錄拷貝到/usr/local/lib/node_modules下。

/usr/local/bin/下,建立軟鏈接,指向/usr/local/lib/node_modules/pm2/bin/下的可執(zhí)行文件。

pm2安裝說(shuō)明

首先,把pm2包下載下來(lái),這步略。我在這里放到了npm_modules_global_offline目錄下,以防以后還有其他全部模塊要一起安裝。

軟鏈接映射關(guān)系如下

目標(biāo)文件路徑 源文件路徑
/usr/local/bin/pm2 /usr/local/lib/node_modules/pm2/bin/pm2
/usr/local/bin/pm2-dev /usr/local/lib/node_modules/pm2/bin/pm2-dev
安裝腳本

install_npm_moduels.sh

#!/bin/bash
# 安裝全局npm模塊

cd /data/my_install/
cd npm_modules_global_offline/

cp -rf ./node_modules/* /usr/local/lib/node_modules/
ln -s /usr/local/lib/node_modules/pm2/bin/pm2 /usr/local/bin/pm2
ln -s /usr/local/lib/node_modules/pm2/bin/pm2-dev /usr/local/bin/pm2-dev
Express應(yīng)用安裝

express應(yīng)用的安裝相對(duì)比較簡(jiǎn)單,本地npm install后,連同node_modules目錄一起打包即可。

腳本如下,把express_svr拷貝到指定路徑即可。

install_express_svr.sh

#!/bin/bash
# 安裝express應(yīng)用

cd /data/my_install/

if [ ! -d "/data/web/express_svr" ]; then
  mkdir /data/web/express_svr
fi

cp -rf ./express_svr/* /data/express_svr/
一鍵部署腳本 簡(jiǎn)易版本

其實(shí)沒(méi)那么玄乎,無(wú)非就是再寫(xiě)個(gè)腳本,統(tǒng)一調(diào)用下前面提到的腳本。奏是這么簡(jiǎn)單。

install.sh

./install_node.sh
./install_npm_moduels.sh
./install_otc_svr.sh
./install_run_service.sh

運(yùn)行:

./install.sh
進(jìn)一步完善

上面腳本的缺陷比較明顯,沒(méi)有進(jìn)度提示,也沒(méi)有運(yùn)行狀態(tài)提示。于是優(yōu)化一下,雖然也不能算是完善,但相比之前的版本的確會(huì)好很多。

#!/bin/bash

commands=(
./install_node.sh "install nodejs"
./install_npm_moduels.sh "install npm modules"
./install_express_svr.sh "install express application"
./install_run_service.sh "start services"
)

commands_len=${#commands[@]}

for (( i=0; i<$commands_len; i=i+2 ))
do
    desc_index=i+1
    desc=${commands[$desc_index]}
    
    echo -e $desc" - starts ..."
    
    ${commands[$i]}
    
    if [ "$?" ==  "0" ]; then
      echo -e $desc" - ok 
"
    else
      echo -e $desc" - failed ! 
"
    fi
done

運(yùn)行看下效果:

install nodejs - starts ...
install nodejs - ok 

install npm modules - starts ...
install npm modules - ok 

install express application - starts ...
install express application - ok 

start services - starts ...
# pm2啟動(dòng)日志,一大坨,這里忽略
start services - ok 
一鍵卸載腳本

從上面的內(nèi)容可以看到,離線(xiàn)部署的過(guò)程,主要包含了幾個(gè)操作

文件拷貝

建立軟連接

啟動(dòng)服務(wù)

那么,卸載無(wú)非就是上面幾個(gè)步驟的反操作。腳本大致如下,跟前面的部署腳本其實(shí)是一一對(duì)應(yīng)的。這里就不再贅述。

[root@localhost uninstall_scripts]# tree -L 1
.
├── uninstall_run_service.sh
├── uninstall_node.sh
├── uninstall_npm_modules.sh
├── uninstall_express_svr.sh
└── uninstall.sh
寫(xiě)在后面

文中提及的node服務(wù)離線(xiàn)部署,應(yīng)該已經(jīng)可以涵蓋大部分的場(chǎng)景,舉一反三即可。當(dāng)然更富在的場(chǎng)景還有,這里就不再展開(kāi)。
。。。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/7971.html

相關(guān)文章

  • 場(chǎng)景化封裝,一站式使用,普惠AI集成 ——阿里云發(fā)布智能媒體管理產(chǎn)品

    摘要:摘要導(dǎo)語(yǔ)近日,阿里云發(fā)布了智能媒體管理服務(wù),通過(guò)離線(xiàn)處理能力關(guān)聯(lián)授權(quán)的云存儲(chǔ),提供便捷的海量多媒體數(shù)據(jù)一鍵分析,并通過(guò)該分析過(guò)程構(gòu)建價(jià)值元數(shù)據(jù),更好支撐內(nèi)容檢索。標(biāo)準(zhǔn)統(tǒng)一,訪(fǎng)問(wèn)接口統(tǒng)一為阿里云的標(biāo)準(zhǔn)。場(chǎng)景化一鍵式處理,提高易用性。 摘要: 導(dǎo)語(yǔ) 近日,阿里云發(fā)布了智能媒體管理(Intelligent Media Management)服務(wù), 通過(guò)離線(xiàn)處理能力關(guān)聯(lián)授權(quán)的云存儲(chǔ),提供便捷的...

    big_cat 評(píng)論0 收藏0
  • Nextcloud個(gè)人云存儲(chǔ)絕佳選擇:一鍵自動(dòng)安裝方法和云盤(pán)使用體驗(yàn)

    搭建個(gè)人云存儲(chǔ)一般會(huì)想到ownCloud,堪稱(chēng)是自建云存儲(chǔ)服務(wù)的經(jīng)典。而Nextcloud是ownCloud原開(kāi)發(fā)團(tuán)隊(duì)打造的號(hào)稱(chēng)是下一代存儲(chǔ)。初一看覺(jué)得口氣不小,剛推出來(lái)就重新定義了Cloud,真正試用過(guò)后就由衷地贊同這個(gè)Nextcloud:它是個(gè)人云存儲(chǔ)服務(wù)的絕佳選擇。 與ownCloud相比,Nextcloud的功能絲毫沒(méi)有減弱,甚至由于可以安裝云存儲(chǔ)服務(wù)應(yīng)用,自制性更強(qiáng),也更符合用戶(hù)的...

    Shisui 評(píng)論0 收藏0
  • 小程序上云,有點(diǎn)猛

    摘要:另外小程序云應(yīng)用有一套高可用架構(gòu),提供監(jiān)控預(yù)警能力。自主可控小程序云應(yīng)用提供服務(wù)器,開(kāi)發(fā)者可以擁有登錄或重啟,也可以修改密碼。也就是說(shuō),服務(wù)器是由小程序云應(yīng)用提供,但使用權(quán)歸開(kāi)發(fā)者。  前不久有一個(gè)朋友問(wèn)我,到底是做什么端的小程序比較好?   我只問(wèn)了一句,你的產(chǎn)品里是否涉及錢(qián)和服務(wù),如果涉及這兩者,建議你選擇支付寶小程序。你可以通過(guò)其他小程序玩裂變,但如果你想做服務(wù)和商業(yè),一定要考慮支付寶...

    jsdt 評(píng)論0 收藏0
  • 用travis和git hook搞個(gè)一鍵部署

    摘要:一切看似妥當(dāng),但是頻繁的調(diào)整以及部署自然成了頭疼的問(wèn)題。叫作部署的大問(wèn)題由于我比較菜,所以沒(méi)有寫(xiě)測(cè)試模塊。為什么因?yàn)榻^大多數(shù)都是黨用來(lái)部署的啊。。。經(jīng)過(guò)思考,原來(lái)在這里我們需要將部署工序做一個(gè)調(diào)整,同時(shí)增加步。。。 前言 在自己的vps上做博客系統(tǒng)已經(jīng)有一段時(shí)間了,期間也是磕磕碰碰遇到不少問(wèn)題,如今也算是有個(gè)基礎(chǔ)版本能用??墒莢ps上只放一個(gè)博客有點(diǎn)浪費(fèi)了,而且博客系統(tǒng)也不光是用來(lái)寫(xiě)文...

    archieyang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<