linux上部署Nodesjs服務,通常需要一些必要的工具,如node、pm2。線上運行需要預先檢查好這些工具然後運行服務。下面以一個簡單例子介紹基本流程,其它語言項目思路都是類似的。
以前以centos爲例,通過pm2 cluster模式部署node,首先需要檢查node安裝情況。
node安裝檢查
echo 'start to check node env:'
if ! type node 2>/dev/null || [[ `node -v` != 'v9.5.0' ]] ; then
echo 'node 環境不匹配,開始構建:'
curl -Ls -o- nvm地址 | bash
source ~/.bashrc
nvm install v9.5.0
nvm alias default v9.5.0
fi
echo ‘end'
通過type命令檢查node是否安裝,並檢查版本。type node 會返回命令類型,如果不存在則會產生錯誤輸出,此時將錯誤重定向到/dev/null。如果檢測到存在該命令,那麼返回類型。當出錯時! type node 2>/dev/null 返回false。
當檢測到node未安裝,則下載nvm,並通過nvm安裝指定版本的node。
安裝依賴
安裝相關依賴
echo 'npm install'
npm i --registry=地址 --production
echo 'success'
pm2的安裝檢查
同理檢查pm2與node的檢查方式類型,不存在則先進行安裝。
echo 'check pm2'
if ! type pm2 2>/dev/null || [[ `pm2 -v` != '2.1.5' ]] ; then
echo '全局下不存在 pm2 開始,開始安裝 pm2:'
npm install pm2@2.1.5 -g --registry=倉庫地址
echo 'success!'
fi
echo '檢查全局 pm2 完成'
通過pm2啓動項目
採用 –no-daemon 模式啓動防止與 daemontools 可能在部署中可能產生的錯誤。
檢查 pm2;需要注意的是,執行 pm2 -v 命令也會實例化 God Daemon
echo 'pm2 startOrGracefulReload..'
pm2 kill
exec pm2 startOrGracefulReload process.json --only travelCisSpiderScriptEngine --no-daemon
echo 'success'
上述4部分組成在一起最終構成node啓動運行腳本,同理其它語言的啓動服務都是類似的。確定一個服務啓動需要哪些東西,按步驟完成即可。