使用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 不仅可以作为有线通话的免提适配器(集…

python试卷河南理工大学万方科技学院_河南理工大学万方科技学院

河南理工大学具有百年办学历史,是一所拥有博士学位授予权的省重点建设的骨干高校。其前身焦作路矿学堂是我国历史上第一所路矿高等学府,是河南省建立最早的高等学校,是我国路矿、工矿高端人才的摇篮,也是中国矿业大学的前身。在学…

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 高度兼容”的产品特性广受世界各地名企追捧。接下来让我们看看其具有哪些独特优势吧!四大优势&…

python3 虚拟环境 pip 版本_【python知识】 - Python3之PIPENV虚拟环境及封装

Python的封装是通过pyinstaller直接打包python环境下的所有第三方模块,不管是不是封装程序涉及到的模块通通都一股脑打包进来,造成封装后大小超出预计很多。Pipenv 是一款管理虚拟环境的命令行软件,简单来讲,它可以创建一个只在某…

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

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

stm32g4 下载算法_难道STM32G4芯片的主频才到80MHz?

最近有个STM32用户反映,他们目前在调试STM32G431CBU6这款芯片。使用ST官方的Cube库进行编程,发现时钟没法配置到技术手册上告知的170MHz。当然这个170MHz的频率要经过PLL倍频产生。不管选用内部时钟源还是外部晶振,只要配置成170MHz,芯片肯定…

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

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

python中selenium打开浏览器拿不到url_Selenium打开浏览器,但在Chrome和Firefox中都无法获取URL...

当我调用get()时,webdriver将打开浏览器,但不会打开我请求的单击。在Firefox中没有URL应该在的地方,而在Chrome中,URL是测试“data:,”。不到一个月前,我在Chrome和Selenium之间使用相同的代码没有问题。在…

excel条件格式详解

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

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

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

hp服务器 新增硬盘_HP服务器linux操作系统如何添加硬盘

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":5,"count":5}]},"card":[{"des":"日志服务(Log Service,简称LOG/原…

记录excel翻车现场

课堂1: 1、sumif 参数问题 2、条件格式问题 excel条件格式详解_chdeWang的博客-CSDN博客 3、引用别的工作簿问题 4、文本连接函数区别 课堂2: XOR使用 数据库函数¡函数名(database,field,criteria),field为函数计算所在的列标题…

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…

python java web前端 net 移动开发_JavaScript超越了Java,c,python等等成为Stack Overflow上最热门的...

Javascript 可以做什么1. Web 前端相信这个这个是毫无疑问的,在 Web 前端的地位目前是没有任何语言能撼动它的霸主地位。image.png2. 后端 NodejsNode.js 是一个 Javascript 运行环境(runtime environment),发布于2009年5月,由Ryan Dahl 开发…