Nodejs学习笔记(十三)— PM2

简介

  PM2

  pm2是一个内置负载均衡的node.js应用进程管理器(也支持Windows),其它的类似功能也有不少,但是感觉pm2功能更强,更值的推荐

  GitHub地址:https://github.com/Unitech/pm2

  API Docs:http://pm2.keymetrics.io/docs/usage/cluster-mode/

  NPM地址:https://www.npmjs.com/package/pm2

  使用体会:

  1.简单易用、后台运行、快速部署,常用到的命令就几个

  2.可轻松集群模式启动

  3.可以无宕机重暂应用程序,保持不断连接的情况下轻松重载代码

  4.完善的日志

  5.自动停止不稳定的进程

  6.保活应用程序

  ….

pm2安装

  官方安装说明: http://pm2.keymetrics.io/docs/usage/quick-start/

npm install pm2 -g

  安装成功如下图

  查看版本

pm2 -v

  各平台安装方法一致

操作

  我这里有个express的web项目:pm2sample,端口是11111

启动

pm2 start app.js

  成功如下图

  这样就可以通过http://localhost:11111 来访问

关闭

pm2 stop 0

  为什么stop后是0? 从上图可以看出进程ID为0,所以通过进程ID可以关闭,然后这种方式不易记,下面我看看其它方式启动和关闭

其它方式启动/关闭

启动项目,并命名一个应用程序名

pm2 start app.js --name test

  启动后结果如下图,你可以看到App name 

  根据App name关闭项目

pm2 stop test

  可以自行试一下效果,关闭成功!

从PM2中删除

pm2 delete test

  当然也可以pm2 delete 进程ID 

重载和重启

  当应用程序代码有更新,可以用重载来加载新代码,也可以用重启来完成

pm2 reload test pm2 restart test

  reload可以做到0秒宕机加载新的代码,restart则是重新启动,生产环境中多用reload来完成代码更新!

查看详情

pm2 show test

  输出如下图

  通过查看详情就可以看到很多有用信息,包含日志和错误输出的文件路径(感觉日志是用的比较多的)  

多项目操作

  上面是单项目操作,多项目操作是如何呢?

  启动其它项目也如上面命令,我新启一个项目:pm2sample2(端口为11112)

cd 项目目录 pm2 start app.js --name test2

  启动后如下图

  想要对这2个项目进行批量操作(多个也一样),如下(重加载全部/停止全部/重启全部/删除全部)

pm2 reload all pm2 stop all pm2 restart all pm2 delete all

集群

  上面从图中可以看出mode是“fork”

  开发环境中多以fork的方式启动,生产环境中多用cluster方式启动

  启动方式

pm2 start app.js -i 2 --name test

  这表示启动2个并命名为test,在后台以cluster方式运行

  从上图可以看出mode为“cluster”方式,其它操作就可以通过上面用过的方式去启动、关闭、重载、重启、删除

其它操作

  watching

上面的示例图中可以看一“watching”一项,这个项默认是disabled,可以通过如下命令开启

pm2 start app.js --name test --watch

  上面的命令中启去吧了test项目并开启了watching,这个用处主要更新代码后,不用重载或重启项目即可以立即让更新的代码起作用

建议:这个适合在开发时用,可以省不少时间,生产环境下最好不要用

  list

pm2 list

  可以列出pm2中所有项目

  monit

pm2 monit

   用monit可以打开实时监视器去查看资源占用情况

logs

pm2 logs

  通过上面命令可以实时查看日志输出情况(当然,我更习惯去日志文件里看)

写在之后...

  本篇主要对PM2常用命令进行说明

  PM2还有其它很多其它功能,可以通过上面提供的api链接去查看

  但是基本用上面这些命令就够了,现在项目中就用的PM2,感觉还是不错,用于生产环境完全没问题!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏vue学习

42、MongoDB配置

(2)其它两个文件夹上章我们说过了,中间这个文件夹中我们新建一个mongo.conf用于配置mongodb;配置它的目的就是以后我们启动数据库不用再去"--db...

14930
来自专栏杂七杂八

win10安装Linux子系统

开启开发者模式 系统设置 -> 更新和安全 -> 针对开发人员 -> 选择开发人员模式 ? image.png 启动 Windows 10 的 Linux 子系...

49060
来自专栏Bug生活2048

Spring Boot学习笔记(二)Windows下IDEA 配置Maven

maven指向本地仓库配置,打开D:\ProgramFile\Maven\apache-maven-3.5.2\conf下的settings.xml,设置本地仓...

14120
来自专栏深度学习之tensorflow实战篇

python django 学习(一)数据库 目的根据已有BBS建立新的网站步骤

1.创建一个django程序(pycharm下创建界面) ? 2.django创建的默认文件说明 manage.py:一个命令行工具,用于与Dj...

36360
来自专栏云计算教程系列

如何在Debian 9上安装Git

软件版本控制系统使您能够在源级别跟踪您的软件。使用版本控制工具,您可以跟踪更改,还原到以前的阶段,并分支以创建文件和目录的备用版本。

1.8K20
来自专栏吴柯的运维笔记

Subversion版本控制基本操作

YUM安装subversion软件(服务端和客户端都安装) # yum -y install subversion 服务端: 1)创建版本库 # mkdi...

34750
来自专栏JavaEE

springboot项目打包&ngrok的使用

接触spring boot有一段时间了,但是一直未打包部署过spring boot项目,因为其内置tomcat,所以打包部署方式有所不同。还有ngrok,是一个...

10720
来自专栏Laoqi's Linux运维专列

Linux 系统日志,screen命令

Linux 系统日志 : # less /var/log/messages //是系统的一个日志(服务,系统,软件等) 此日志的配置策略是自动切割,我们使用命令...

51360
来自专栏云计算教程系列

如何在Debian 9上安装MongoDB

Debian 9的官方软件包存储库包含稍微过时的MongoDB版本,这意味着我们将从官方的MongoDB repo安装。

1.1K30
来自专栏Java成长之路

Maven生命周期

在Maven出现之前,项目构建的生命周期就已经存在,软件开发人员每天都在对项目进行清理、编译、测试及部署。虽然大家都在不停地做构建工作,但公司和公司间、项目和项...

29120

扫码关注云+社区

领取腾讯云代金券