最近用node写了一个小型的项目,项目完成后到了部署的阶段,才开始考虑怎样才能更好的监控项目。在node的开发过程中有很多痛点,最让人忍受不了的就是文件修改后服务的重启,需要不断的关闭进程,启动进程,后来研究了一下,发现可以用nodemon自动重启服务,方便了很多,但是项目需要上线的时候,发现nodemon不能后台运行,于是自己用python写了一个自动启停的脚本,可以实现后台运行,代码如下,

#!/bin/bash
node_status(){
   pids=`ps aux|grep node|grep www|awk '{print $2}'`
   if [ ${pids} ]
    then
        return 1
    else
        return 2
    fi
}
node_start(){
    node_status
    if [ $? == 2 ]
    then
            nohup node /home/web/claire/bin/www >> /tmp/node/shell.log 2>&1 &
    fi
}
node_stop(){
    node_status
    if [ $? == 1 ]
    then
            kill -9 ${pids} >> /tmp/node/shell.log 2>&1
    fi
}
node_restart(){
    node_stop
    sleep 5
    node_start
}
node_defend(){
    while true
    do
    node_status
    if [ $? == 2 ]
    then
            node_start
    fi
    sleep 5
    done
}
ACTION=$1
case $ACTION in
    start)
            node_start
    ;;
    stop)
            node_stop
    ;;
    restart)
            node_restart
    ;;
    defend)
            node_defend
    ;;

python脚本的时候,如果用编辑器,需要将编码格式转成unix格式,要不会报错,我用的nodepad++,修改方式为右键点击选择unix格式即可。
图片描述

后来发现Nodejs有一个高大上的管理工具PM2,是可以用于生产环境的Nodejs的进程管理工具,并且它内置一个负载均衡。它不仅可以保证服务不会中断一直在线,并且提供0秒reload功能,还有其他一系列进程管理、监控功能。并且使用起来非常简单,赶快上手试试吧。

Nodejs安装

之前nodejs安装,是去官方网站上下载安装包然后安装的,在使用pm2的过程中,了解到,nvm利器,可以方便切换nodejs版本,推荐用这个方法安装node。
删除之前安装的node,查询全局安装的模块然后删除

npm list -g --depth 0

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash

执行curl过程中报错curl: (35) SSL connect error,执行

yum update nss

最后执行

source ~/.bashrc
nvm--version             //查看nvm是否安装成功
nvm install stable       //安装最新稳定版本

PM2安装

安装环境

  • Linux x86_64
  • node v10.8.0
  • npm 6.2.0

全局安装

npm install pm2 -g

安装成功后可直接启动

pm2 start bin/www

图片描述

pm2参考地址:https://www.cnblogs.com/zzsdr...

本文固定链接: http://www.js-code.com/node-js/node-js_35828.html