使用pm2启动node文件_PM2 是什么
目录
pm2是什么
特点
示例说明
配置文件
常用命令
背景
由于需要在容器云新增一个测试环境,改了代码相关的配置后,进行部署。发现服务一直启动不了。在和运维一起排查问题,他看到pm2的一些信息, 问我pm2是不是阻塞了,并不是很清楚pm2是什么。就初步学习了一下,进行记录。
PM2是什么
Precess Manager 2
PM2是一个进程管理工具,维护一个进程列表,可以用来管理正在用行的进程,实时查看日志,性能监控等功能
特点
- 日志管理 (已使用)
- 支持监听重启
- 支持部署工作流
- 支持集群模式
- 支持性能监控
- 支持pm2 开发
示例说明
首先 npm init 新建一个node项目
全局安装pm2 (npm install pm2 -g), 如果已经安装过,则不需要再次操作
在这个项目里新建index.js, (创建一个http服务器)
执行命令
pm2 ecosystem
, 默认会生成pm2的配置文件)( ecosystem.config.js)在配置文件里进行关于应用的各种配置
![屏幕快照 2020-08-26 19.35.23](/Users/jiaxiaoyu/Desktop/屏幕快照 2020-08-26 19.35.23.png)
配置文件
执行命令
pm2 ecosystem
, 默认会生成 ecosystem.config.js (和package.json放在一个根目录下)生成文件内容如下
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中的应用
对配置文件详解
配置名 | 含义 |
---|---|
apps | json结构,是一个数组,里面每一项是一个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': '' } }};
常用命令
安装pm2
npm install pm2 -g // 要进行全局安装
启动进程(应用)
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 能做的还有很多,等待挖掘...
使用pm2启动node文件_PM2 是什么相关推荐
- 使用pm2启动node文件_使用pm2部署node生产环境的方法步骤
一.PM2是什么 是可以用于生产环境的Nodejs的进程管理工具,并且它内置一个负载均衡.它不仅可以保证服务不会中断一直在线,并且提供0秒reload功能,还有其他一系列进程管理.监控功能.并且使用起 ...
- 使用pm2启动node文件_使用 PM2 管理nodejs进程
pm2 是一个带有负载均衡功能的Node应用的进程管理器. 当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载, PM2是完美的. 它非常适合IaaS结构,但不要把它 ...
- pm2启动node项目
前端项目部署阿里云要配置nginx,然后启动nginx就可以了, 如果是node服务,想一直启动,可以用PM2 ,PM2 是具有内置负载均衡器的 Node.js 应用程序的生产流程管理器.它允许您使应 ...
- 使用pm2启动Node和Vue项目教程
安装pm2 $ npm install -g pm2 命令行全局安装pm2 将pm2加入到命令中去 ? 1 2 3 4 ln -s /usr/local/src/node-v8.9.1-linux-x ...
- linux pm2 权限,pm2 部署 node的三种方法示例
Node安装以及部署 去官网下载最新版本,分两种一种是源码,一种是编译后的文件.下面是官网下载地址: https://nodejs.org/en/download/current/ 分不同的版本 w ...
- Node.js微服务 2 :基于Seneca和PM2构建Node.js微服务
2.1 选择Node.js的理由 如今,Node.js已经成为国际上许多科技公司的首选方案.特别的,对于在服务器端需要非阻塞特性(例如Web Sockets)的场景,Node.js俨然成了最好的选择. ...
- 回顾Node文件路径
回顾Node文件路径 起因 node中路径在很多地方都有使用,基础到不起眼.但有时候就是不起眼的东西,会在你不轻易间跳出来给你上一课. 想起来复习一下文件路径的起因,是因为最近整理了一下项目结构,调整 ...
- c#启动EXE文件(简单的)
在程序执行中会遇到启动本软件的exe问,或者启用其它的exe文件,已达到执行某些操作的作用.下面是两种最常见的启动exe文件. 1.调用系统dll使用其提供的方法. 引用的dll, [csharp] ...
- jdk12源代码文件_在JDK 11中启动单文件源代码程序
jdk12源代码文件 JEP 330 –启动单文件源代码程序是即将发布的JDK 11(18.9)发行版中令人兴奋的功能之一. 此功能允许直接使用java解释器执行Java源代码. 源代码在内存中编译, ...
最新文章
- 二叉树的层次遍历 II[LeetCode-107]
- c++内存中字节对齐问题详解
- 工作与生活的平衡-一些955的良心公司
- 【原】webpack--loaders,主要解释为什么需要loaders和注意事项
- 1小时打造HaaS版小小蛮驴智能车
- python数据参数_python 的参数总结
- 数据结构-02-链表数据结构之双链表和循环链表
- 免费mysql_MySql 所有的版本都是免费的吗?
- 2021亚太杯数学建模竞赛
- 「Java代码审计」Java代码审计基础知识「一」
- 通过快捷指令给 Mac 添加右键菜单「使用 VSCode 打开」
- 渗透测试常见弱口令汇总
- 快门光圈感光度口诀_怎么利用光圈快门感光度
- java移位运算符(一个大于号,两个大于号,三个大于号)
- STM32RCT6芯片引脚的含义与作用
- Sawyer机器人助力ASM印刷电路板处理
- 机器学习在行业应用中的案例研究
- 中国普通民营企业当前营销的矛盾分析
- 灰度图像的形态学处理
- html页面确认按钮浮动,html的浮动按钮
热门文章
- 详解 Java NIO
- Java SSM1——Maven
- 某公司为本科以上学历的人重新分配工作,分配原则如下。 (1)如果年龄不满18岁,学历是本科,男性要求报考研究生,女性则担任行政工作; (2)如果年龄满18岁不满5o 岁,学历本科,不分男女,任中层领导
- 编写并调试一个单道处理系统的作业调度模拟程序_操作系统系列(2):操作系统发展历史...
- azure webjob java_使用 WebJobs 运行后台任务 | Azure Docs
- acs880 用户手册_华中数控、广州数控系统用户手册
- potplayer 多个进程_进程组、会话、控制终端概念,如何创建守护进程?
- mfc 固定编辑框输入上限和下限_MFC中编辑框数字限制范围
- 亚马逊产品描述计算机语言编辑,亚马逊Listing产品描述编辑讲解
- Spring MVC 流程图解析