pm2基本使用

news2024/11/19 23:25:12

1.pm2的基本介绍

pm2是node的进程管理器,利用它可以简化node任务的管理,且内置了许多功能,常用于后台脚本管理。

pm2特性

  • 自带热部署 - - - 当源文件更新 线上项目也会自动重启
  • 后台运行 - - - 不会占用实时窗口 会在后台运行
  • 服务信息查看 - - - 查看运行中程序的各项信息
  • 日志系统 - - - 可以随时查看程序的运行日志
  • 内置负载均衡 - - - 在cluster模式会自动使用轮询的方式达到负载均衡的效果
  • 多平台支持 - - - 在linux windows macOS 上都可以稳定的运行
  • 最大内存重启 - - - 可以设置最大内存限制超过限制则会自动重启;
    还有很多的特性 咱就不一一举例了感兴趣的朋友可以去官网查看学习 小的这就献上官网地址 官网地址

2.pm2的安装

// 这里我使用npm进行pm2的全局安装
$ npm install -g pm2

// 安装完成后可以使用  -v 参数 查看pm2的版本 检测是否安装成功
$ pm2 -v

3.pm2的基本使用

// 第一条要介绍的是pm2的启动命令
$ pm2 start [项目入口文件名]

这里我使用一个 node.js内置的http模块搭建的一个简单服务器程序来演示

// serve.js
var http = require("http")
//创建服务器
http.createServer((req, res) => {
    res.writeHead(200, { "Content-Type": "text/html;charset=utf-8" }) //设置响应头
    res.write(`
      <html>
          <div>hello pm2</div>
      </html>
    `)
    res.end() 
}).listen(3000, () => {
    console.log("server start")
})

在项目根路径打开cmd运行下面的命令

// 使用npm2启动这个简单的服务器程序
$ pm2 start serve.js

// 也可以在后面添加一些参数 来附加一些效果
--watch  // --watch 监听程序源文件的变化 一旦发生变化自动重启 (热启动效果)
--ignore-watch // 排除监听的目录或者文件  支持正则表达式
-n --name // 设置程序的名称
--log // 指定日志文件
--max-memory-restart [100MB] // 设置最大占用内存
--no-daemon // 非进程守护模式启动
--no-autorestart // 关闭自动重启
--time // 日志添加时间前缀
-e --error [path] // 错误日志输出路径
-i [n]  //cluster mode 模式启动n个进程实例 
-i max  //集群模式  将会检测cpu的数量并运行尽可能多的进程  自动开启负载均衡的效果
// 还有很多参数可以使用 详细可以查看官网  这些也可以通过pm2配置文件配置

可以看到命令行输出了以下信息 这是这个简单服务器程序的一些基础运行信息,这时即使关闭终端,这个程序仍然会在后套继续运行
在这里插入图片描述

各项参数详解

id // 进程id 标识作用 用于其他命令的指向
name // 进程标识 用于其他命令的指向
namespace // 环境名称 
version // 版本
mode //进程模式,cluster或fork。cluster有多个进程,而fork只有一个
pid // 进程id  标识作用
uptime // 运行时间// 重启次数
status // 进程是否在线
cpu // cpu的占用率
mem // 内存占用大小
user // 启动用户名 

可以启动多个这样的任务 可以通过以下命令查看所有的运行程序信息

// 查看所有使用pm2运行的程序信息
$ pm2 list

4.pm2常用命令

1.停止进程

// 停止指定的进程
$ pm2 stop [进程名] | [进程id]
// 停止所有的进程
$ pm2 stop all # 停止所有的应用程序

2.删除进程

// 删除指定的进程
$ pm2 delete [进程名] | [进程id]
// 删除所有进程
$ pm2 delete all
// 杀死pm2的守护进程 同时也会杀死所有进程
$ pm2 kill

3.重启进程

// 以下两个命令都可以达到重启进程的效果
$ pm2 restart [进程名] | [进程id]  // 重启效果 短时间内进程无效
$ pm2 reload [进程名] | [进程id] // 重载效果 会保持进程在线 

// 重启所有进程
$ pm2 reload all
// 重置重启数量
$ pm2 reset [进程名]

4.查看所有进程

// 以下三个命令都可以查看所有进程
$ pm2 list
$ pm2 ls
$ pm2 status

5.查看某一个进程的信息

$ pm2 show [进程名] | [进程id]

6.查看日志

// 查看所有的日志
$ pm2 logs
// 查看指定的进程日志
$ pm2 logs [进程名] | [进程id]
// 清空所有日志
$ pm2 flush

// 还可以附加一些参数 附加功能
--line [数字]  // 查看最后多少条日志 默认是15条
--err // 只查看错误日志
--timestamp // 时实日志附带时间前缀

6.监控所有的进程

// 会进入一个信息面板
$ pm2 monit

7.静态服务器

$ pm2 serve [静态文件夹路径] [端口]

8.扩展实例

// 将指定的进程扩展到n个
$ pm2 scale [服务名] [n]

5.pm2配置文件

$ pm2 ecosystem  // 当前目录下自动生成pm2的配置文件

// 以配置文件启动
$ pm2 start ecosystem.config.js --env production

apps是一个数组 可以同时配置多个进程服务 还有很多的配置项 如果想要了解的更详细还请参照官网
同时日志文件还支持 yml 格式配置 小编这里就不多演示了 详情请参照官网

// ecosystem.config.js 配置演示
module.exports = {
  apps : [{
  name      : 'demo',      // 应用的名称
  script    : 'app.js',   // 应用文件路径
  env: {
    PM2_SERVE_PATH: ".",    // 静态服务的路径
    PM2_SERVE_PORT: 8080,   // 静态服务器访问的端口
    NODE_ENV: 'development' // 设置开发环境运行时
  },
  env_production : {
    NODE_ENV: 'production'  // 设置生产环境运行时
  },
  instances: "max",         // 将应用程序分布在所有CPU核心上 也可以指定多少个
  watch: true,              // 热启动模式
  output: './out.log',      // 指定日志标准输出文件及位置
  error: './error.log',     // 错误输出日志文件及位置
  merge_logs: true,         // 是否可以合并日志
  log_type: "json",         // 日志类型
  log_date_format: "DD-MM-YYYY",  // 日志的日期格式
  }],
  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': ''
    }
  }
}

6.结尾

这是小编的第二篇博客,励志每周更新一篇,感觉写到这里还有很多pm2的技术点没有写出来,后面可能还会更新一篇关于pm2的博客,专门讲解一下 pm2的一些插件 还有 keymetrics监控 和fork与cluster这两种启动模式,想听的朋友不妨点个关注或者订阅吧,哈哈哈,瑞思拜!在这里插入图片描述

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

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

相关文章

Vue权限控制

此文章根据视频教程进行整理前端面试官必问系列-后台系统的权限控制与管理&#xff0c;建议搭配视频教程一起食用效果更佳 目录 1、权限相关概念 1.1、权限的分类 后端权限 前端权限 1.2 、前端权限的意义 降低非法操作的可能性 尽量减少不必要请求&#xff0c;减轻服务…

VUE跨域、常用解决跨域的方法

当我们遇到请求后台接口遇到 Access-Control-Allow-Origin 时&#xff0c;那说明跨域了。 跨域是因为浏览器的同源策略所导致&#xff0c;同源策略&#xff08;Same origin policy&#xff09;是一种约定&#xff0c;它是浏览器最核心也最基本的安全功能&#xff0c;同源是指&…

〖大前端 - 基础入门三大核心之CSS篇⑱〗- CSS中的背景

说明&#xff1a;该文属于 大前端全栈架构白宝书专栏&#xff0c;目前阶段免费开放&#xff0c;购买任意白宝书体系化专栏可加入TFS-CLUB 私域社区。福利&#xff1a;除了通过订阅"白宝书系列专栏"加入社区获取所有付费专栏的内容之外&#xff0c;还可以通过加入星荐…

【React Router v6】路由组件传参params/search/state(router v6)

欢迎来到我的博客 📔博主是一名大学在读本科生,主要学习方向是前端。 🍭目前已经更新了【Vue】、【React–从基础到实战】、【TypeScript】等等系列专栏 🛠目前正在学习的是🔥 R e a c t 框架 React框架 Reac

react-router v6 如何实现动态路由?

前言 最近在肝一个后台管理项目&#xff0c;用的是react18 ts 路由用的是v6&#xff0c;当需要实现根据权限动态加载路由表时&#xff0c;遇到了不少问题。 v6相比于v5做了一系列改动&#xff0c;通过路由表进行映射就是一个很好的改变&#xff08;个人认为&#xff09;&…

Docker利用Nginx部署前端项目

今天给大家分享的是Docker利用Nginx部署Vue等前端页面项目&#xff1b;其实是我工作刚好用到&#xff0c;顺便分享给大家O(∩_∩)O&#xff0c;那么话不多说直接开始。 一&#xff1a;准备文件 我们先将前端项目打包好&#xff0c;放到此文件夹下&#xff0c;例如我这样&#…

ts基本类型 typeof 和keyof

安装编译ts的工具 安装命令&#xff1a;npm i -g typescript 或者 yarn global add typescript。 验证是否安装成功&#xff1a;tsc –v&#xff08;查看 TypeScript 的版本&#xff09;。 编译并运行 TS 代码 创建 hello.ts 文件&#xff08;注意&#xff1a;TS 文件的后缀名…

vue3中ref和reactive的区别

ref 接受一个内部值并返回一个响应式且可变的 ref 对象&#xff0c;有一个 .value 属性&#xff0c;可以通过其读取/修改对象的值。 const active ref(false)console.log(active.value) // falseactive.value trueconsole.log(active.value) // true 为ref值指定泛型参数覆盖…

Vue中的$set

项目场景&#xff1a; 例如&#xff1a;在我写前端项目的时候&#xff0c;后端给我们的一个json对象&#xff0c;并且我已经渲染在页面上了。但是由于我自己的需求&#xff0c;想往返回的对象里面添加一个字段&#xff0c;后来才意识到不是响应式的。如果我们要让这个新字段是…

【博主推荐】html好看的个人主页(附源码)

个人主页介绍【博主推荐】html好看的个人主页1.背景个人主页效果2.背景个人主页代码3.简洁个人主页效果4.简洁个人主页代码5.卡片个人主页效果6.卡片个人主页代码7.星空个人主页效果8.星空个人主页代码源码下载【博主推荐】html好看的个人主页 附带四种风格个人主页 背景个人主…

牛客前端刷题(五)—— CSS相关概念

还在担心面试不通过吗?给大家推荐一个超级好用的刷面试题神器:牛客网,里面涵盖了各个领域的面试题库,还有大厂真题哦! 赶快悄悄的努力起来吧,不苒在这里衷心祝愿各位大佬都能顺利通过面试。 面试专栏分享,感觉有用的小伙伴可以点个订阅,不定时更新相关面试题:面试专栏…

解决vue3+vite+TS 中使用element-plus按需引入 ElLoading、ElMessage 样式失效

ElMessage 样式失效 其实他不是失效了&#xff0c;只是加载到我们的 可以看到下面使用的方式和效果图&#xff0c;vue3的element-plus遇到的问题&#xff0c;因为要测试一下&#xff0c;所以点的频率比较大&#xff0c;但可以明显的看到ElMessage样式显示在你浏览器的下面 i…

echarts之markPoint(在途中任意位置增加标注及自动获取最大最小值处理)

echarts之markPoint(在途中任意位置增加标注及自动获取最大最小值处理) 前言 记录自己工作中的一点小心得&#xff0c;希望可以帮助有同样需求的朋友。 1.使用场景 之前我工作中有需要在图标中添加特殊标识的&#xff0c;我是费劲用散点图进行添加&#xff0c;十分麻烦。又比…

利用Vite或者webpack创建Vue项目,并启动Vue项目

文章目录背景环境准备准备Node.js和npm即可Vite打包webpack打包总结背景 大家好&#xff0c;我是杜晓帅~&#xff0c;一名Java开发程序员&#xff1b;最近想总结一下前端开发的一些东西&#xff0c;包括项目的打包和如何将后端处理的数据在前端进行一个展示&#xff0c;相信大家…

React 重新渲染指南

前言 老早就想写一篇关于React渲染的文章&#xff0c;这两天看到一篇比较不错英文的文章&#xff0c;翻译一下(主要是谷歌翻译&#xff0c;手动狗头)&#xff0c;文章底部会附上原文链接。 介绍 React 重新渲染的综合指南。该指南解释了什么是重新渲染&#xff0c;什么是必要…

前端后端的爱恨情仇

全文目录一、API爆炸的时代1.背景介绍2.问题引出3.解决方案二、核心功能1.API文档2.API调试3.Mock 数据4.自动化测试5. 在线调试三、其他功能1.代码生成2.数据导入/导出四、惊喜功能五、总结一、API爆炸的时代 随着最近行业的移动化、物联网化、数字化转型、微服务等多种概念的…

vue的脚手架安装及安装失败问题解决

vue的脚手架安装及安装失败问题解决 提示&#xff1a;本文是较为详细的vue脚手架安装教程及其问题解决&#xff0c;若需要快速使用的宝们请按照文章目录快速查找并使用相关代码 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文…

Node.js | 你不知道的 express 路由使用技巧

🖥️ NodeJS专栏:Node.js从入门到精通 🖥️ 博主的前端之路(源创征文一等奖作品):前端之行,任重道远(来自大三学长的万字自述) 🖥️ TypeScript知识总结:TypeScript 学习笔记(十万字超详细知识点总结) 🧑‍💼 个人简介:大三学生,一个不甘平庸的平凡人🍬…

前端发送axios请求报错Request failed with status code 500解决方案

1.报错如下 2.因为后端的api是自己使用nodeexpress搭建的后台&#xff0c;然后要求请求头的参数格式为application/x-www-form-urlencoded的参数格式 打开报错请求 发现自己的请求头参数格式没有错误&#xff0c;jwt的身份验证也通过了&#xff0c;然后使用post测试接口&#x…

JavaScript之Ajax(一篇入门Ajax就够了)

一、概念 1.什么是Ajax Ajax&#xff08;Asynchronous Javascript And XML&#xff09;&#xff0c;即是异步的JavaScript和XML&#xff0c;Ajax其实就是浏览器与服务器之间的一种异步通信方式 异步的JavaScript 它可以异步地向服务器发送请求&#xff0c;在等待响应的过程…