使用pm2启动node文件_PM2 是什么

157da582e273a914718c7db3a4b807ac.png

目录

pm2是什么

特点

示例说明

配置文件

常用命令

背景

由于需要在容器云新增一个测试环境,改了代码相关的配置后,进行部署。发现服务一直启动不了。在和运维一起排查问题,他看到pm2的一些信息, 问我pm2是不是阻塞了,并不是很清楚pm2是什么。就初步学习了一下,进行记录。

PM2是什么

Precess Manager 2

PM2是一个进程管理工具,维护一个进程列表,可以用来管理正在用行的进程,实时查看日志,性能监控等功能

特点

  • 日志管理 (已使用)
  • 支持监听重启
  • 支持部署工作流
  • 支持集群模式
  • 支持性能监控
  • 支持pm2 开发

示例说明

  1. 首先 npm init 新建一个node项目

  2. 全局安装pm2  (npm install pm2 -g), 如果已经安装过,则不需要再次操作

  3. 在这个项目里新建index.js, (创建一个http服务器)

  4. 执行命令 pm2 ecosystem, 默认会生成pm2的配置文件)( ecosystem.config.js)

  5. 在配置文件里进行关于应用的各种配置

    ![屏幕快照 2020-08-26 19.35.23](/Users/jiaxiaoyu/Desktop/屏幕快照 2020-08-26 19.35.23.png)

配置文件

  1. 执行命令 pm2 ecosystem, 默认会生成 ecosystem.config.js  (和package.json放在一个根目录下)

  2. 生成文件内容如下

    module.exports = {
      apps : [
        {
          script: 'index.js',
          watch: '.'
        }, 
        {
          script: './service-worker/',
          watch: ['./service-worker']
        }
      ],

      deploy : {
        production : {
          user : 'SSH_USERNAME',
          host : 'SSH_HOSTMACHINE',
          ref  : 'origin/master',
          repo : 'GIT_REPOSITORY',
          path : 'DESTINATION_PATH',
          'pre-deploy-local': '',
          'post-deploy' : 'npm install && pm2 reload ecosystem.config.js --env production',
          'pre-setup': ''
        }
      }
    };

  • apps 是一个数组, 每一项数组成员对应一个pm2中的应用

对配置文件详解

配置名含义
appsjson结构,是一个数组,里面每一项是一个pm2的应用
name应用程序名称
cwd应用程序所在目录
script应用程序启动文件所在目录
exec_mode应用启动模式,默认是fork, 可设置为 cluster集群
instances应用启动实例个数,仅在cluster模式有效
max_memory_restart最大内存限制数, 超出自动重启
log_date_format日志文件格式
error_file错误日志文件路径
out_file正常日志文件路径
merge_logs设置追加日志而不是新建日志
autorestart是否自动重启, true/false
watch是否启用监控模式,默认是false。如果设置成true,当应用程序变动时,pm2会自动重载
ignore_watch不用监听的文件,例如node_modules
restart_delay延时重启时间
env生产环境变量
env_dev开发环境变量
env_test测试环境变量
min_uptime如果应用程序在这个时间退出,pm2会认为程序异常退出,此时触发重启max_restarts设置数量
max-restarts异常时重启次数

示例app进行配置如下:

module.exports = {
  apps : [
    {
      name: 'xiaoyu_node_test',   //名称
      script: 'index.js',   //程序入口
      watch: '.',  // 需要监控的目录
      error_file: '/home/logs/err.log',  //错误日志文件
      out_file: '/home/logs/info.log',  // 正常日志文件
      log_date_format: 'YYYY-MM-DD HH:mm:ss',  // 指定日志文件的时间格式
      autorestart: true,   // 发生异常是否自动重启, true重启, false不重启
      env: {
        NODE_ENV: 'production',  //环境参数,当前指定为生产环境 process.env.NODE_ENV
        REMOTE_ADDR: ''   // process.env.REMOTE_ADDR
      },
      env_dev: {
        NODE_ENV: 'development',  //环境参数,当前指定为开发环境 pm2 start app.js --env_dev
        REMOTE_ADDR: ''   // process.env.REMOTE_ADDR
      }

    }, 
    {
      script: './service-worker/',
      watch: ['./service-worker']
    }
  ],

  deploy : {
    production : {
      user : 'SSH_USERNAME',
      host : 'SSH_HOSTMACHINE',
      ref  : 'origin/master',
      repo : 'GIT_REPOSITORY',
      path : 'DESTINATION_PATH',
      'pre-deploy-local': '',
      'post-deploy' : 'npm install && pm2 reload ecosystem.config.js --env production',
      'pre-setup': ''
    }
  }
};

常用命令

  1. 安装pm2

    npm install pm2 -g           // 要进行全局安装
  2. 启动进程(应用)

  • 1.直接启动对应的js文件

    pm2 start index.js

    ![屏幕快照 2020-08-26 11.07.44](/Users/jiaxiaoyu/Desktop/屏幕快照 2020-08-26 11.07.44.png)

  • 2.启动pm2的配置文件

    pm2 start ecosystem.config.js

    ![屏幕快照 2020-08-26 11.08.14](/Users/jiaxiaoyu/Desktop/屏幕快照 2020-08-26 11.08.14.png)

重启

pm2 restart ecosystem.config.js

查看日志

pm2 logs

![屏幕快照 2020-08-26 11.11.14](/Users/jiaxiaoyu/Desktop/屏幕快照 2020-08-26 11.11.14.png)

可以实时展示日志,而且会在自己配置文件中指定的路径生成日志文件

查看进程 以及 查看进程详情

pm2 list

![屏幕快照 2020-08-26 11.13.08](/Users/jiaxiaoyu/Desktop/屏幕快照 2020-08-26 11.13.08.png)

具体的查看某一个进程详情,例如查看id=4的进程

pm2 describe 4     //id号

![屏幕快照 2020-08-26 11.16.04](/Users/jiaxiaoyu/Desktop/屏幕快照 2020-08-26 11.16.04.png)

查看cpu和内存资源占用等一些性能指标

pm2 monit

![屏幕快照 2020-08-26 18.17.34](/Users/jiaxiaoyu/Desktop/屏幕快照 2020-08-26 18.17.34.png)

![屏幕快照 2020-08-26 18.17.42](/Users/jiaxiaoyu/Desktop/屏幕快照 2020-08-26 18.17.42.png)

*https://keymetrics.io/这个网址,经过一些设置,可以可视化看一些指标。由于打不开这个页面, 没有进行实际测试

停止进程

pm2 stop 0                // 0是id  id|name|namespace|all|json|stdin

![屏幕快照 2020-08-26 18.22.58](/Users/jiaxiaoyu/Desktop/屏幕快照 2020-08-26 18.22.58.png)

status 已经变成 stoped

删除进程

pm2 delete 0.        //id号

上述的列表里就会删掉这一条

开机自启动

  • pm2 start 配置文件

  • pm2 save      // 保存现有列表数据

  • pm2 startup   //设置开机启动

结尾

Pm2 能做的还有很多,等待挖掘...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/567465.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CP/M世界上第一个微机操作系统

CP/M世界上第一个微机操作系统 微软宣布2014年4月8日将不再对Windows XP系统进行更新,宣告这个存活了13年的史上寿命最长的微机操作系统基本上寿终正寝。很多人都知道这是个脱胎于DOS的系统,也潜意识中认为DOS是微机操作系统的鼻祖。不过,这大…

安卓 usb音量调节_戴尔推出面向Teams和Zoom视频通话的USB-C免提适配器

COVID-19 大流行期间,许多企业将会议安排在了线上举办。为方便通过 Microsoft Teams 和 Zoom 之类云视讯平台进行沟通的笔记本电脑用户,戴尔特地推出了新款 USB-C 音频适配器。作为一款两用配件,MH3021P 不仅可以作为有线通话的免提适配器(集…

word表格美化技巧:如何统一改变表格的样式

在Word中插入的表格默认都是黑边白底,看上去非常的单调。比如这样: 很多小伙伴都是在新建表格并且填完数据之后,应用表格样式,来提升档次,如下: 但是,每次新建表格后再选择应用【表格样式】&…

banner信息是什么_我的设计成长笔记—第10篇(banner)

Banner2019年5月9日这里是我的设计成长笔记—————————————————Banner为什么单独拿出来聊因为我有差不多一年的时间都在做这个在我的成长过程中,banner是过渡从平面/美工到UI设计的一个过程。在这个过程中,我对设计的理解分成了三个部分第…

后台原理_电气控制原理动图22张,超赞!

今天从低压电器、电动机及控制线路、传感器及控制原理三部分来分享22张超赞的原理动图。低压电器部分1按钮开关2闸刀开关3行程开关4交流接触器5热继电器6时间继电器7速度继电器电动机及控制线路1异步电动机2直流电动机3步进电动机4永磁电机5正反转控制6自动往返控制7顺序控制8多…

[word技巧]把标题、图表题注编号由“一.1”改为“1.1“

一、问题描述 写作中文报告时,有时会要求一级标题用类似”第一章”的中文编号,二级标题用1.1这类编号,图表题注用“表1.1”的编号。此时,由于一级标题用的是中文数字(如“一”)作为序号,因此wor…

excel中怎样用公式获取表单控件_挑战高手:用不到 100 行代码,在前端实现 Excel 全部功能...

(点击图片获取专属你的开发工具)SpreadJS是一款基于 HTML5 的纯前端表格控件,兼容 450 种以上的 Excel 公式,具备“高性能、跨平台、与 Excel 高度兼容”的产品特性广受世界各地名企追捧。接下来让我们看看其具有哪些独特优势吧!四大优势&…

vissim免修改时间工具_App闪退怎么办?免越狱如何安装未签名的App?

由于最近苹果大规模的封签名,导致在第三方渠道下载的软件都出现闪退没法使用的现象。目前的替代方法就是使用电脑端 Cydia Impactor 来给 App 进行自签,虽然相对比较麻烦,但这也是目前针对企业签名无法使用的唯一解决方法。下面以安装 FilzaE…

word表格美化技巧:如何统一改变表格的样式2+续表制作

一、表格样式 开始-样式-新建样式-样式类型:表格。 单独设置标题行,汇总行等格式即可。表格样式会显示在-设计-样式-表格样式中。 问题:汇总行无效。 即可。 二、续表 直接复制表格及题注到下一页,然后下下面表格的题注修改为…

excel条件格式详解

1、基于公式返回的逻辑值去判断,True则执行条件格式,FALSE不执行。 2、基于区域第一个单元格的公式,依次根据单元格引用方式判断区域内公式是否成立。 函数: 使用条件格式: 函数: 条件格式: 函…

ccf a类会议_CCF推荐 | 人工智能领域顶级会议:截稿日期批量速递

以下为已公布截稿日期的CCF推荐,人工智能领域会议,按照时间排序。个别会议因为没有公布截稿信息而不在所列时间线内。录取率信息为网络上可获得的最近年份数据,不一定是上一年的,文中尽量选择同时带有投稿量的数据年份供大家参考.…

python递归调用详解_Python递归调用自己的函数

原博文 2019-11-16 10:36 − def fact(x): if x 1: return 1 else: return x * fact(x-1) ...0191 相关推荐 2019-09-28 21:13 − Python python是一种跨平台的计算机程序设计语言,是一种面向对象的动态类型语言。 最初被设计用于编写自动化脚本(shell)&#xff0c…

vue跳转到外部链接_前端实战项目:Vue.js实现外卖平台webapp,饿了么项目的翻版...

链接:https://github.com/ljianshu/mt-app适合没有经验的朋友。项目涉及到技术栈:vue全家桶:Vue、Vue-router、Vue-cli等 组件化:单Vue文件 模块化:ES6 Module 第三方模块:better-scroll axios等 基础开发环…

令xtu3service开机时立即启动_Mac开机时可以使用的快捷键 苹果电脑快捷键使用介绍...

大家都知道所有电脑在开机时,按住一些按键可以访问一些功能,当然Mac电脑也不例外。苹果电脑通过在开机启动时按住一个或多个按键可以访问一些Mac功能和工具。如果各位用户使用这些开机键组合键中的任何一个,可在按下电源按钮后,重…

word 插入图片显示不全

word插入图片显示不全: 解决方案: 选中图片-段落-行距-选择单倍、或者多倍行距都可以。即可。

操作系统-进程同步与互斥易混点

解惑1: 为使多个进程能互斥的访问某临界资源,只须为该资源设置 一个互斥信号量 mutex,初值为 1(代表临界资源只有一个) mutex初值为1.取值范围为[-1,0,1] 当mutex1时,表示两个进程皆未进入需要互斥访问的…

linux降低eigen3版本_玩转 Windows 自带的 Linux 子系统 (图文指南)

涉及到计算机科学离不开 Linux 系统,当然,也离不开Windows。但是,二者从操作到核心的不同,貌似让鱼和熊掌不可兼得。但是!微软已经拿出了一款让鱼和熊掌兼得的方案 WSL (Windows Subsystem for Linux&#…

处理死锁的四种方法

前面讲过预防死锁是通过破坏死锁的四个必要条件,所以就有四个预防死锁的方法吗?错!只有三种,因为互斥条件是必须的,不仅不能改变,还应该加以保证。因此只能破坏后三个条件。 一、破坏请求和保持条件 方法…

c++输出小数点后几位_Python格式化输出的精度和位数控制

上一期小哥讲解了Python格式化输出的三种方式:本期小哥讲解一下关于小数精度和字符串位数的控制:1. 小数精度控制Python中对于小数精度的控制的使用方法:# 定义变量a 3.1415926# 小数点后保留3位%.3f% a# 输出:3.142# 小数点后保…