PM2使用入门指南(转)

PM2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。
下面就对PM2进行入门性的介绍,基本涵盖了PM2的常用的功能和配置。

先贴上原贴PM2实用入门指南

全局安装,简直不能更简单。

1
npm install -g pm2

目录介绍

pm2安装好后,会自动创建下面目录。看文件名基本就知道干嘛的了,就不翻译了。

  • $HOME/.pm2will contain all PM2 related files
  • $HOME/.pm2/logswill contain all applications logs
  • $HOME/.pm2/pidswill contain all applications pids
  • $HOME/.pm2/pm2.logPM2 logs
  • $HOME/.pm2/pm2.pid PM2 pid
  • $HOME/.pm2/rpc.sockSocket file for remote commands
  • $HOME/.pm2/pub.sockSocket file for publishable events
  • $HOME/.pm2/conf.jsPM2 Configuration

入门教程

挑我们最爱的express应用来举例。一般我们都是通过npm start启动应用,其实就是调用node ./bin/www。那么,换成pm2就是

注意,这里用了--watch参数,意味着当你的express应用代码发生变化时,pm2会帮你重启服务,多贴心。

1
pm2 start ./bin/www 

入门太简单了,没什么好讲的。直接上官方文档:http://pm2.keymetrics.io/docs/usage/quick-start

常用命令

启动

参数说明:

  • --watch:监听应用目录的变化,一旦发生变化,自动重启。如果要精确监听、不见听的目录,最好通过配置文件。
  • -i --instances:启用多少个实例,可用于负载均衡。如果-i 0或者-i max,则根据当前机器核数确定实例数目。
  • --ignore-watch:排除监听的目录/文件,可以是特定的文件名,也可以是正则。比如--ignore-watch="test node_modules "some scripts""
  • -n --name:应用的名称。查看应用信息的时候可以用到。
  • -o --output <path>:标准输出日志文件的路径。
  • -e --error <path>:错误输出日志文件的路径。
  • --interpreter <interpreter>will contain all PM2 related files
    完整命令行参数列表:地址
    1
    pm2 start app.js --watch -i 2

重启

1
pm2 restart app.js

停止
停止特定的应用。可以先通过pm2 list获取应用的名字(–name指定的)或者进程id。

1
pm2 stop app_name|app_id

如果要停止所有应用,可以

1
pm2 stop all

删除
类似pm2 stop,如下

12
pm2 stop app_name|app_idpm2 stop all

查看进程状态

1
pm2 list

查看某个进程的信息

123456789101112131415161718192021
[[email protected] pids]# pm2 describe 0Describing process with id 0 - name oc-server┌───────────────────┬──────────────────────────────────────────────────────────────┐│ status            │ online                                                       ││ name              │ oc-server                                                    ││ id                │ 0                                                            ││ path              │ /data/file/qiquan/over_the_counter/server/bin/www            ││ args              │                                                              ││ exec cwd          │ /data/file/qiquan/over_the_counter/server                    ││ error log path    │ /data/file/qiquan/over_the_counter/server/logs/app-err-0.log ││ out log path      │ /data/file/qiquan/over_the_counter/server/logs/app-out-0.log ││ pid path          │ /root/.pm2/pids/oc-server-0.pid                              ││ mode              │ fork_mode                                                    ││ node v8 arguments │                                                              ││ watch & reload    │                                                             ││ interpreter       │ node                                                         ││ restarts          │ 293                                                          ││ unstable restarts │ 0                                                            ││ uptime            │ 87m                                                          ││ created 大专栏  PM2使用入门指南(转)">at        │ 2016-08-26T08:13:43.705Z                                     │└───────────────────┴──────────────────────────────────────────────────────────────┘

配置文件

简单说明

  • 配置文件里的设置项,跟命令行参数基本是一一对应的。
  • 可以选择yaml或者json文件,就看个人洗好了。
  • json格式的配置文件,pm2当作普通的js文件来处理,所以可以在里面添加注释或者编写代码,这对于动态调整配置很有好处。
  • 如果启动的时候指定了配置文件,那么命令行参数会被忽略。(个别参数除外,比如–env)
    例子
    举个简单例子,完整配置说明请参考官方文档
    12345678910111213141516171819202122
    {  "name"        : "fis-receiver",  // 应用名称  "script"      : "./bin/www",  // 实际启动脚本  "cwd"         : "./",  // 当前工作路径  "watch": [  // 监控变化的目录,一旦变化,自动重启    "bin",    "routers"  ],  "ignore_watch" : [  // 从监控目录中排除    "node_modules",    "logs",    "public"  ],  "watch_options": {    "followSymlinks": false  },  "error_file" : "./logs/app-err.log",  // 错误日志路径  "out_file"   : "./logs/app-out.log",  // 普通日志路径  "env": {      "NODE_ENV": "production"  // 环境参数,当前指定为生产环境  }}

重新启动

前面已经提到了,这里贴命令行,更多点击这里

1
pm2 start app.js 

这里是监控整个项目的文件,如果只想监听指定文件和目录,建议通过配置文件的watchignore_watch字段来设置。

环境切换

在实际项目开发中,我们的应用经常需要在多个环境下部署,比如开发环境、测试环境、生产环境等。在不同环境下,有时候配置项会有差异,比如链接的数据库地址不同等。

对于这种场景,pm2也是可以很好支持的。首先通过在配置文件中通过env_xx来声明不同环境的配置,然后在启动应用时,通过--env参数指定运行的环境。

环境配置声明
首先,在配置文件中,通过env选项声明多个环境配置。简单说明下:

  • env为默认的环境配置(生产环境),env_devenv_test则分别是开发、测试环境。可以看到,不同环境下的NODE_ENVREMOTE_ADDR字段的值是不同的。
  • 在应用中,可以通过process.env.REMOTE_ADDR等来读取配置中生命的变量。
    123456789101112
    "env": {  "NODE_ENV": "production",  "REMOTE_ADDR": "http://www.example.com/"},"env_dev": {  "NODE_ENV": "development",  "REMOTE_ADDR": "http://wdev.example.com/"},"env_test": {  "NODE_ENV": "test",  "REMOTE_ADDR": "http://wtest.example.com/"}

启动指明环境
假设通过下面启动脚本(开发环境),那么,此时process.env.REMOTE_ADDR的值就是相应的http://wdev.example.com/,可以自己试验下。

1
pm2 start app.js --env dev

负载均衡

命令如下,表示开启三个进程。如果-i 0,则会根据机器当前核数自动开启尽可能多的进程。

12
pm2 start app.js -i 3 # 开启三个进程pm2 start app.js -i max # 根据机器CPU核数,开启对应数目的进程

参考文档:点击查看

日志查看

除了可以打开日志文件查看日志外,还可以通过pm2 logs来查看实时日志。这点对于线上问题排查非常重要。

比如某个node服务突然异常重启了,那么可以通过pm2提供的日志工具来查看实时日志,看是不是脚本出错之类导致的异常重启。

1
pm2 logs

其他

省略。

原文地址:https://www.cnblogs.com/liuzhongrong/p/12262799.html

时间: 2024-11-02 14:15:16

PM2使用入门指南(转)的相关文章

PM2实用入门指南

http://www.cnblogs.com/chyingp/p/pm2-documentation.html 简介 PM2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控.自动重启.负载均衡等,而且使用非常简单. 下面就对PM2进行入门性的介绍,基本涵盖了PM2的常用的功能和配置. 安装 全局安装,简直不能更简单. npm install -g pm2 目录介绍 pm2安装好后,会自动创建下面目录.看文件名基本就知道干嘛的了,就不翻译了. $HOME/.pm2

Quartz.NET简介及入门指南

Quartz.NET简介 Quartz.NET是一个功能完备的开源调度系统,从最小的应用到大规模的企业系统皆可适用. Quartz.NET是一个纯净的用C#语言编写的.NET类库,是对非常流行的JAVA开源调度框架 Quartz 的移植. 入门指南 本入门指南包括以下内容: 下载 Quartz.NET 安装 Quartz.NET 根据你的特定项目配置 Quartz 启动一个样例程序 下载和安装 你可以下载 zip 文件或使用 Nuget 程序包.Nuget 程序包只包含 Quartz.NET 运

Java程序员的Golang入门指南(上)

Java程序员的Golang入门指南 1.序言 Golang作为一门出身名门望族的编程语言新星,像豆瓣的Redis平台Codis.类Evernote的云笔记leanote等. 1.1 为什么要学习 如果有人说X语言比Y语言好,两方的支持者经常会激烈地争吵.如果你是某种语言老手,你就是那门语言的"传道者",下意识地会保护它.无论承认与否,你都已被困在一个隧道里,你看到的完全是局限的.<肖申克的救赎>对此有很好的注脚: [Red] These walls are funny.

【翻译Autofac的帮助文档】1.入门指南

[写在前面]尝试做完一件工作之外自我觉得有意义的一件事,那就从翻译Autofac的帮助文档吧. 入门指南 将Autofac集成你的应用程序的步骤通常很简单,一般是: 时刻以IOC(控制反转)的思想来规划你的应用程序 在你的Porject中添加Autofac引用 按照如下步骤设计应用程序的启动环节 创建一个ContainerBuilder 向ContainerBuilder注册组件 通过ContainerBuilder的Build()方法获得Container(后续需用到) 在应用程序运行环节时,

Markdown——入门指南

导语: Markdown 是一种轻量级的「标记语言」,它的优点很多,目前也被越来越多的写作爱好者,撰稿者广泛使用.看到这里请不要被「标记」.「语言」所迷惑,Markdown 的语法十分简单.常用的标记符号也不超过十个,这种相对于更为复杂的 HTML 标记语言来说,Markdown 可谓是十分轻量的,学习成本也不需要太多,且一旦熟悉这种语法规则,会有一劳永逸的效果. Ulysses for Mac 一,认识 Markdown 在刚才的导语里提到,Markdown 是一种用来写作的轻量级「标记语言」

Win32编程API 基础篇 -- 1.入门指南 根据英文教程翻译

入门指南 本教程是关于什么的 本教程的目的是向你介绍使用win32 API编写程序的基础知识(和通用的写法).使用的语言是C,但大多数C++编译器也能成功编译,事实上,教程中的绝大多数内容都适用于任何可以连接API的语言,包括Java.Assembly和Visual Basic:我不会向你呈现任何跟这些语言相关的代码,这需要你在本教程的指导下自己去完成,有一些人在本API的基础上使用其他语言进行编程取得了相当的成功. 本教程不会教你C语言,也不会告诉你怎样去运行你特定的编译器(Borland C

[转载]TFS入门指南

[原文发表地址] Tutorial: Getting Started with TFS in VS2010 [原文发表时间] Wednesday, October 21, 2009 1:00 PM 本月初,我们发布了TFS新基础配置.该配置为建立支持源码管理,工作项和生成(builds)的TFS版本提供了便利. 这是一个好机会将你在VSS(Visual Source Safe)上的资源迁移到TFS,并且还可以选用一些新的特性.现在VS2010 Beta2的正式版已经发布了,下面是该系统的入门指南

编程入门指南

前言 如今编程成为了一个越来越重要的「技能」:作为设计师,懂一些编程可能会帮你更好地理解自己的工作内容:作为创业者,技术创始人的身份则会让你的很多工作显得更容易.而作为刚想入门的新手,面对眼前海量的信息,或许根本不知道从哪里开始:入门轻松度过初级材料的学习后,发现学习越来越困难,陡峭的学习曲线又让你望而却步:你知道如何在页面上打印输出一些文本行,但是你不知道何时该进行一个真正的有用的项目:你不清楚自己还有哪些不知道的东西,你甚至搞不清下一步该学什么. 这篇文章的内容对此不仅会有一些方向性的建议,

物联网操作系统HelloX开发者入门指南

HelloX开发者入门指南 HelloX是聚焦于物联网领域的操作系统开发项目,可以通过百度搜索"HelloX",获取详细信息.当前开发团队正在进一步招募中,欢迎您的了解和加入.如果您希望加入HelloX的开发团队,建议参照下列步骤进行操作: 1.      首先,请亲手熟悉和操作HelloX操作系统,这是我们开发的核心组件之一,所有其它组件(包括后台组件,终端产品等)都围绕HelloX操作系统展开.这一步很容易操作,请从github(github.com/hellox-project/