天天看點

Node服務一鍵離線部署

項目測試通過,到了上線部署階段。部署的機器安全限制比較嚴格,不允許通路外網。此外,沒有對外網開放ssh服務,無法通過ssh遠端操作。

針對上面提到的兩條限制條件,通過下面方式解決:

無法通路外部網絡:将依賴的環境本地下載下傳,打包上傳,離線安裝;

無法ssh遠端操作:将安裝/初始化步驟腳本化,安裝包交給運維人員,一鍵部署;

讓運維同學将安裝包置于<code>/data/my_install</code>下。安裝包大緻如容如下。其中<code>install_scripts</code>目錄中,存放的是部署相關的腳本。

看下<code>nodejs</code>安裝腳本。為了安裝快些,這裡我們采用的是編譯好的二進制檔案。隻需要将相關檔案拷貝到指定路徑即可。

以下是<code>[email protected]</code>的目錄。

拷貝路徑說明如下

本地路徑

拷貝到的路徑

備注

./bin/node

/usr/local/bin/node

node可執行檔案

./bin/npm

npm可執行檔案,軟連結,指向 /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/

使用說明

install_node.sh

這裡我們就用到了pm2,需要全局安裝。根據npm全局子產品的安裝方式,需要分兩步

将pm2子產品目錄拷貝到<code>/usr/local/lib/node_modules</code>下。

在<code>/usr/local/bin/</code>下,建立軟連結,指向<code>/usr/local/lib/node_modules/pm2/bin/</code>下的可執行檔案。

首先,把pm2包下載下傳下來,這步略。我在這裡放到了<code>npm_modules_global_offline</code>目錄下,以防以後還有其他全部子產品要一起安裝。

軟連結映射關系如下

目标檔案路徑

源檔案路徑

/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

express應用的安裝相對比較簡單,本地<code>npm install</code>後,連同<code>node_modules</code>目錄一起打包即可。

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

install_express_svr.sh

其實沒那麼玄乎,無非就是再寫個腳本,統一調用下前面提到的腳本。奏是這麼簡單。

install.sh:

運作:

上面腳本的缺陷比較明顯,沒有進度提示,也沒有運作狀态提示。于是優化一下,雖然也不能算是完善,但相比之前的版本的确會好很多。

運作看下效果:

從上面的内容可以看到,離線部署的過程,主要包含了幾個操作

檔案拷貝

建立軟連接配接

啟動服務

那麼,解除安裝無非就是上面幾個步驟的反操作。腳本大緻如下,跟前面的部署腳本其實是一一對應的。這裡就不再贅述。

文中提及的node服務離線部署,應該已經可以涵蓋大部分的場景,舉一反三即可。當然更富在的場景還有,這裡就不再展開。