使用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源代码. 源代码在内存中编译, ...
最新文章
- 表单的增 删 改 查
- 有关Visual Studio 2008 SP1和SQL Server 2008的一些说明
- 如何理解矩阵特征值?
- 技术生涯二三事(上)
- Facebook基于数据中心的机器学习实践
- iOS--获取输入字符的第一个字母(汉字则获取拼音的第一个字母)
- ⑧javaWeb之在例子中学习(过滤器Filter)
- 显示多文档标签_HTML常用基础标签,前端从入门到精通
- 【Eclipse 插件】Implementors
- 洛谷P3048 [USACO12FEB]牛的IDCow IDs
- 阿里开源首个移动AI项目,淘宝同款推理引擎
- [转载]《博客园精华集》WebService筛选结果(共79篇)
- 我的大学四年到毕业工作5年的学习路线资源汇总
- Linux修改网络配置
- 车辆悬架刚度计算方法
- Elasticsearch索引分片的数量及大小分配策略
- Panda白话 Reactor -背压策略
- JavaSE基础(21) 打印数组
- 2019美团点评校招笔试劝退之旅
- Python爬取中国大学MOOC课程信息
热门文章
- 大数据时代的3V3高
- matlab randomsample,randperm和randsample函数用法对比
- mysql sql in or 替换_sql IN 的用法一例--替换 mysql longtext字段中某些内容的用法
- 8客户端安装后无法启动_新君越涉水后车辆无法启动
- mysql 字段值为 a b c_数据的虚拟列-让数据库中的C字段等于a+b
- 淮北市成人学计算机学校,安徽淮北市成人学电脑?
- 项目部署服务器 jstl,Springboot集成jsp及部署服务器实现原理
- Spring Boot————默认缓存应用及原理
- 如何用python做一个会聊天的女朋友_520来啦~教你用Python给自己造了一个女朋友!...
- latex 符号_sympy: 符号运算-1