使用高大上的pm2代替forever部署nodejs项目

2017-08-08 16:05:42

经常逛cnode社区,所以早已耳闻pm2,今天我们就研究一下它到底怎么部署项目。

pm2官方文档:http://pm2.keymetrics.io/docs/usage/quick-start/

简单教程

首先需要安装pm2:

npm install -g pm2

运行:

pm2 start app.js

初次安装并运行,会有一个高大上的界面:


高大上的界面

直接我们介绍过forever,那么pm2与forever相比较有哪些高大上的功能呢?我们看一下对比表格:

FeatureForeverPM2
Keep Alive
Coffeescript
Log aggregation
API
Terminal monitoring
Clustering
JSON configuration

我们可以很直观的看出,pm2相比较Forever,功能更加强大一些。

查看运行状态

我们可以通过简单的命令查看应用的运行状态:

pm2 list

效果如下:


运行状态

ANodeBlog应用正在运行,pid为31480,并且占用内存为89.113 MB。

追踪资源运行情况

pm2 monit

会看到应用资源的实时运行情况


实时运行情况

查看应用详细部署状态

如果我们想要查看一个应用详细的运行状态,比如ANodeBlog的状态,可以运行:

pm2 describe 3

“3”是指App Id。

结果如下:


详细运行状态

查看日志

pm2 logs

系统会打印出详细的logs。

重启应用

pm2 restart appId

停止应用

想要终止应用,只需要运行:

pm2 stop app.js

强健的API

在项目中运行:

pm2 web

然后浏览器访问http://localhost:9615 你会有惊喜!

预定义运行配置文件

我们可以预定义一个配置文件,然后制定运行这个配置文件,比如我们定义一个文件process.json,内容如下:

{
  "apps": [
    {
      "name": "ANodeBlog",
      "script": "bin/www",
      "watch": "../",
      "log_date_format": "YYYY-MM-DD HH:mm Z"
    }
  ]
}

然后可以通过

pm2 start process.json

运行这个App。

总结

常用命令总结如下:

  1. 安装pm2

    npm install -g pm2
  2. 启动应用

    pm2 start app.js
  3. 列出所有应用

    pm2 list
  4. 查看资源消耗

    pm2 monit
  5. 查看某一个应用状态

    pm2 describe [app id]
  6. 查看所有日志

    pm2 logs
  7. 重启应用

    pm2 restart [app id]
  8. 停止应用

    pm2 stop [app id]
  9. 开启api访问

    pm2 web

更多pm2内容请参考官方文档:http://pm2.keymetrics.io/docs/usage/quick-start



作者:Devid
链接:http://www.jianshu.com/p/fdc12d82b661
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


  • 2021-01-13 13:36:29

    shortid nodejs短id生成器

    短ID在实际运用中很广泛, 其中比较典型的运用就是短地址。 市面上肯定有不少开源的生成短ID库, 基于node.js的估计也不少。 鉴于本人已然是node.js的脑残粉(本职java开发), 很多业余项目从前端到后端都基于javascript开发, 加上npm和bower的包管理以及grunt的打包工具, 在项目开发过程中体验特别酸爽。 由于当时项目前后端都会用到短ID, 但没找到合适的库同时支持npm和bower的(可能孤陋寡闻). 因此自己乐此不疲地又造了个轮子js-shortid(夷,为什么会说又呢?!). 下面主要介绍它的实现方案, 自认为比较优雅简洁。

  • 2021-01-13 17:23:21

    CREATE TABLE 表名 AS SELECT 语句 快速复制表但是锁表

    注意Table2的主键约束,如果Table2有主键而且不为空,则 field1, field2…中必须包括主键 在执行语句的时候,MySQL是逐行加锁的(扫描一个锁一个),直至锁住所有符合条件的数据,执行完毕才释放锁。所以当业务在进行的时候,切忌使用这种方法。 在RR隔离级别下,还会加行锁和间隙锁

  • 2021-01-13 17:27:04

    Navicat配置mysql数据库用户权限

    用数据库的时候就会遇到有多个用户,分配用户权限的情况,有些用户只读,有些用户可以读写,有些用户只能操作一个或者多个数据库,如何给mysql的用户设置权限,我这里描述一下如何用navicat图形操作分配用户权限

  • 2021-01-14 06:15:04

    通过glide获取图片显示后的真正宽高

    有时候需要获取网络图片的宽高来设置图片显示的大小,很多人会直接利用Glide的加载监听去拿图片的宽高,但是这样拿到的不是图片真正的宽高,而是图片显示在ImageView后的宽高。如下:

  • 2021-01-14 09:38:57

    Chrome插件详细教程

    严格来讲,我们正在说的东西应该叫Chrome扩展(Chrome Extension),真正意义上的Chrome插件是更底层的浏览器功能扩展,可能需要对浏览器源码有一定掌握才有能力去开发。鉴于Chrome插件的叫法已经习惯,本文也全部采用这种叫法,但读者需深知本文所描述的Chrome插件实际上指的是Chrome扩展。

  • 2021-01-14 17:07:51

    chrome.contextMenus.create不出现菜单

    主要原因是,我每次刷新玩,都复制一下右键,然而并没有出现菜单,一度颓废啊,因为demo,还有其他人的文章都是这样的。 哎,后来发现是这样的,我缺少了contexts选项。其实我是成功了,我现在只要不选择文字,直接点右键,菜单已经出现了哦。