Nodejs linux环境下启动运行脚本

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启动运行脚本,同理其它语言的启动服务都是类似的。确定一个服务启动需要哪些东西,按步骤完成即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章