pm2 使用教程

栏目: 编程工具 · 发布时间: 5年前

内容简介:PM2 是 node 进程管理工具,可以利用它来简化很多 node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。参数说明:停止特定的应用。可以先通过

简介

PM2 是 node 进程管理工具,可以利用它来简化很多 node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。

安装

npm install -g pm2

快速使用

pm2 start app.js

常用命令

启动

参数说明:

  • --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> :the interpreter pm2 should use for executing app (bash, python...)。比如你用的coffee script来编写应用。

重启

pm2 restart app.js

3.3 停止

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

pm2 stop app_name|app_id

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

pm2 stop all

停止

类似 pm2 stop ,如下

pm2 stop app_name|app_id
pm2 stop all

从进程列表删除进程

// pm2 delete [appname] | id
pm2 delete app  // 指定进程名删除
pm2 delete 0    // 指定进程id删除

删除进程列表中所有进程

pm2 delete all

查看进程状态

pm2 list
// 或者
pm2 ls

查看某个进程的信息

pm2 describe 0

负载均衡

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

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

日志查看

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

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

pm2 logs

开机自动启动

可以通过 pm2 startup 来实现开机自启动。细节可 参考 。大致流程如下

pm2 save
pm2 startup [platform]

监控(monitor)-查看进程的资源消耗情况

运行如下命令,查看当前通过pm2运行的进程的状态。

pm2 monit

通过pm2配置文件来自动部署项目

在项目根目录下新建一个 deploy.yaml 文件

# deploy.yaml
apps:
  - script: ./start.js       # 入口文件
    name: 'app'              # 程序名称
    env:                     # 环境变量
      COMMON_VARIABLE: true
    env_production:
      NODE_ENV: production

deploy:                     # 部署脚本
  production:               # 生产环境
    user: lentoo            # 服务器的用户名
    host: 192.168.2.166     # 服务器的ip地址
    port: 22                # ssh端口
    ref: origin/master      # 要拉取的git分支
    ssh_options: StrictHostKeyChecking=no # SSH 公钥检查
    repo: https://github.com/**.git # 远程仓库地址
    path: /home              # 拉取到服务器某个目录下
    pre-deploy: git fetch --all # 部署前执行
    post-deploy: npm install &&  pm2 reload deploy.yaml --env production # 部署后执行
    env:
      NODE_ENV: production

配置git的ssh免密认证

  1. 在服务器中生成rsa公钥和私钥,当前是 centos7 下进行
  2. 前提服务器要安装git,没有安装的先安装git,已安装的跳过
yum –y install git
  1. 生成秘钥
ssh-keygen -t rsa -C "xxx@xxx.com"

在~/.ssh目录下有 id_rsa和 id_rsa.pub两个文件,其中id_rsa.pub文件里存放的即是公钥key。

  1. 登录到GitHub,点击右上方的头像,选择settings ,点击Add SSH key,把id_rsa.pub的内容复制到里面即可。

pm2 使用教程

使用pm2部署项目

每次部署前先将本地的代码提交到远程git仓库

  • 首次部署
pm2 deploy deploy.yaml production setup 
复制代码

部署完成后,既可登陆服务器查看配置的目录下是否从git上拉取了项目

  • 再次部署
pm2 deploy deploy.yaml production upddate

该部署流程同样适用前端项目

如vue-cli的项目,自动部署到服务器,自动执行npm run build 命令,生成的dist目录,指定到nginx的静态文件目录下。

参考资料

其他资料

https://pm2.io/doc/zh/runtime/overview/

本文由taoweng 创作,采用 知识共享署名4.0 国际许可协议进行许可

本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名

最后编辑时间为: Jan 30, 2019 at 10:12 am


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

知识的边界

知识的边界

[美] 戴维·温伯格 / 胡泳、高美 / 山西人民出版社 / 2014-12-1 / 42.00元

大数据时代反思知识 因为事实不再是事实,专家随处可见 所有确定性都被连根拔起,话题再无边界,没有人对任何事情能达成一致。 在互联网的引领下,知识现在已经具有了社交性,流动且开放。温伯格向我们展示了这些特点如何可以为我们所用。 ——马克•贝尼奥夫(云计算之父,著有《云攻略》) 这本富有洞见的著作,奠定了温伯格作为数字时代最重要的思想家之一的地位。如果你想要理解信息洪流涌......一起来看看 《知识的边界》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具