項目測試通過,到了上線部署階段。部署的機器安全限制比較嚴格,不允許通路外網。此外,沒有對外網開放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服務離線部署,應該已經可以涵蓋大部分的場景,舉一反三即可。當然更富在的場景還有,這裡就不再展開。