最近用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://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。