Nodejs 第八十六章(部署pm2)

Node.js如何部署?

如果要部署Nodejs项目,第一点肯定是需要有台服务器,第二点需要一个部署工具这里使用pm2

PM2

PM2 是一个非常流行的 Node.js 进程管理工具,用于在生产环境中运行和监控 Node.js 应用程序。它提供了多种功能,帮助开发者更好地管理和优化他们的应用程序,pm2 能做的其实有很多,比如监听文件改动自动重启,统一管理多个进程,内置的负载均衡,日志系统等等,

进程管理:PM2 可以轻松地启动、停止、重启和删除 Node.js 应用程序进程。它支持启动多个进程以利用多核 CPU,提高应用的性能和稳定性。

负载均衡:通过集群模式,PM2 可以创建多个应用实例并自动进行负载均衡,确保应用在高并发情况下仍能稳定运行。

自动重启:当应用程序崩溃或出现错误时,PM2 能自动重启应用,确保服务的高可用性。

日志管理:PM2 提供了全面的日志管理功能,可以方便地查看、合并和分析应用程序的日志信息。

监控和性能分析:PM2 内置监控功能,可以实时查看应用程序的性能指标(如 CPU 和内存使用情况)。此外,PM2 还集成了 Keymetrics,这是一个专门用于 Node.js 应用的性能监控和管理平台。

配置文件支持:PM2 支持通过 JSON 文件或 JavaScript 文件进行配置,便于管理多个应用和环境配置。

热重载:在不停止服务的情况下,PM2 可以重新加载应用代码,从而减少停机时间。

容器支持:PM2 可以与 Docker 等容器技术很好地集成,方便在容器化环境中管理 Node.js 应用。

基本使用

1.安装
npm install pm2 -g
2.基本使用

随便创建一个服务 当然express koa nestjs也都是能用 这儿只是http举个例子懒写的代码了

import http from 'node:http'

http.createServer((req, res) => {
    res.writeHead(200)
    res.end('cluster is running')
}).listen(6000,()=>{
    console.log('http://127.0.0.1:6000')
})
1.启动一个服务 或者多个服务都是可以的
pm2 start app.js xx.js bb.js ......
2.查看当前正在运行的node进程
pm2 list

3.停止一个node进程
pm2 stop [process_id]

4.重启服务
pm2 restart [process_id]
5.删除服务
pm2 delete [process_id]
6.开机自启

linux

  1. 先运行一个脚本如 pm2 start app.js
  2. 保存进程信息 pm2 save
  3. 生成启动脚本 pm2 startup
  4. 开机自启命令 pm2 startup systemd
  5. 保存自启命令 pm2 save
  6. 删除自动启动 pm2 unstartup systemd
  7. 保存删除启动 pm2 save

windows

  1. 安装windows自动启动包 npm install pm2-windows-startup -g
  2. 安装自启脚本 pm2-startup install
  3. 启动服务 pm2 start xxxx
  4. 保存自启服务 pm2 save
  5. 删除自动启动 pm2-startup uninstall
3.日志

可以收集各种日志反馈调试问题

pm2 log

4.监控面板

可以实时监控所有由 PM2 管理的进程。这个监控面板提供了丰富的实时数据,包括 CPU 使用率、内存使用情况、重启次数、日志输出等信息

实时监控:在开发和生产环境中实时监控应用程序的性能,及时发现和处理异常。

调试和诊断:查看日志输出,帮助调试和诊断问题。

资源管理:监控资源使用情况,优化应用程序的性能和资源分配。

pm2 monit

5.负载均衡

在上一章我们介绍过了集群的能力,当然pm2内部封装了集群的能力可以让我们的应用程序更加强大

pm2 start index.js -i [max | number] 

可以指定经线程数量,也可以设置max直接设置最高

6.配置文件

调用下面命令在项目中生成配置文件 ecosystem.config.js 或者手动创建也可以

pm2 init simple

ecosystem.config.js

apps: [{ 
    name: "my-app", 
    script: "./app.js", 
    instances: 4, 
    exec_mode: "cluster", 
    watch: true, max_memory_restart: "200M", 
    env: { NODE_ENV: "development", PORT: 3000 }, 
    env_production:{ NODE_ENV: "production", PORT: 8080 } 
}]

apps:一个包含应用程序配置对象的数组,每个对象代表一个应用程序。

name:应用程序名称,用于在 PM2 中标识。

script:要启动的脚本文件路径。

instances:实例数量,可以是具体数字或者 max,以利用所有可用的 CPU 核心。

exec_mode:执行模式,常用值有 fork(默认)和 cluster

watch:启用文件监视,如果文件有变化,应用会自动重启。

max_memory_restart:当内存使用超过指定值时自动重启应用。

env:普通环境变量配置。

env_production:生产环境变量配置,使用 pm2 start ecosystem.config.js --env production 命令启动时生效。

启用配置文件

pm2 start ecosystem.config.json #这样就可以了 不用在单独指定js文件了

部署服务器操作也是一样的

结束语

到此Nodejs课程将完结,后续有新增的API还会继续补充,感谢大家一路以来的支持,另外这套Nodejs教程是有配套的视频教程的

哔哩哔哩 小满zs

欲买桂花同载酒,终不似,少年游

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

解决antd modal+Form 一起用,第二次打开会显示上次输入数据的问题

问题描述 在antd中使用<Modal/>包裹<Form/>时, 第二次打开<Modal/>会自动带入上一次输入的内容。 如下&#xff0c;第一次打开&#xff1a; 第二次打开&#xff1a; 解决办法 给<Modal/>组件添加属性&#xff1a;destroyOnClose{true}&#xff0c…

[RK3308H_Linux] 关于8+2(8路模拟麦克风 + 2路es7243e回采)的调试心得

问题描述 RK3308H 使用8路个模拟麦克风录音&#xff0c;2路用es7243e做回采 解决方案&#xff1a; 首先先调8路模拟麦克风&#xff0c;根据原理图确定使用的是哪路I2S。 以下为dts配置&#xff0c;acodec的属性注释附上。 &acodec {status "okay";rockchip,m…

个人怎么交易现货黄金:加速形态

我们作为普通个人&#xff0c;在现货黄金市场中交易就需要掌握相应的现货黄金投资技巧。下面我们就来介绍一个&#xff0c;个人怎么交易现货黄金的形态——加速形态。 加速形态是用于判断市场趋势力竭的情况&#xff0c;这种趋势可以是上升&#xff0c;也可以是下跌。但是要注意…

【后端开发实习】用Nodejs操作mongodb结合Mongoose实现数据库操作

用Nodejs操作mongodb结合Schema实现数据库操作 Mongoose创建Schema定义Schema对象并映射到数据库Model的使用创建文档内容删除文档内容修改文档内容查询文档内容 Document的使用创建并保存将文档对象转换为JSON对象 模块化数据库连接模型初始化 项目部署路由定义后端操作定义启…

探索大模型:袋鼠云在 Text To SQL 上的实践与优化

Text To SQL 指的是将自然语言转化为能够在关系型数据库中执行的结构化查询语言&#xff08;简称 SQL&#xff09;。近年来&#xff0c;伴随人工智能大模型技术的不断进步&#xff0c;Text To SQL 任务的成功率显著提升&#xff0c;这得益于大模型的推理、理解以及指令遵循等能…

智能未来已来:纷享AI携手企业共赴AI+CRM新征途

大模型的风潮席卷各类型应用&#xff0c;“AI CRM”的概念并不算新&#xff0c;但真正好用、能用在业务流程中的AI工具并不多&#xff0c;而客户关系和旅程的复杂性不断变化&#xff0c;业务团队的压力不断增加&#xff0c;买家期望不断增高&#xff0c;这些都在推动CRM的人工智…

在Ubuntu下安装samba实现和Windows系统文件共享

一、安装 apt install -y samba samba-clientSamba is not being run as an AD Domain Controller: Masking samba-ad-dc.service Please ignore the following error about deb-systemd-helper not finding those services. (samba-ad-dc.service masked) Created symlink /et…

确保智慧校园安全,充分利用操作日志功能

智慧校园基础平台系统的操作日志功能是确保整个平台运行透明、安全及可追溯的核心组件。它自动且详尽地记录下系统内的每一次关键操作细节&#xff0c;涵盖操作的具体时间、执行操作的用户账号、涉及的数据对象&#xff08;例如学生信息更新、课程调度变动等&#xff09;、操作…

Facebook的未来蓝图:从元宇宙到虚拟现实的跨越

随着科技的不断演进和社会的数字化转型&#xff0c;虚拟现实&#xff08;VR&#xff09;和增强现实&#xff08;AR&#xff09;作为下一代计算平台正逐渐走进人们的视野。作为全球领先的科技公司之一&#xff0c;Facebook正在积极探索并推动这一领域的发展&#xff0c;以实现其…

跑分器(made in 蒟蒻)(内附代码)

#题外话&#xff1a;这里也能免费获取代码&#xff0c;不用买会员&#xff1a;洛谷剪贴板 #直逼正文&#xff1a; 最近看到这个东西…… 据说它有个跑分功能&#xff0c;想逝逝。 但…… 所以我决定&#xff0c;用自己编一个低端的…… #思路 感觉跑分就是测试中央处理器的…

鸿蒙语言基础类库:【@ohos.worker (启动一个Worker)】

启动一个Worker 说明&#xff1a; 本模块首批接口从API version 7开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。开发前请熟悉鸿蒙开发指导文档&#xff1a;gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 Work…

棋牌室计时收费系统怎么接电源线 佳易王棋牌计时灯控版管理系统教程

前言&#xff1a; 棋牌室计时收费系统怎么接电源线 佳易王棋牌计时灯控版管理系统教程 以下软件操作教程以&#xff0c;佳易王棋牌计时计费管理系统软件为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 一、软件操作教程 1、软件在点击计时按钮…

【Linux】常见指令收官权限理解

tar指令 上一篇博客已经介绍了zip/unzip指令&#xff0c;接下来我们来看一下另一个关于压缩和解压的指令&#xff1a;tar指令tar指令&#xff1a;打包/解包&#xff0c;不打开它&#xff0c;直接看内容 关于tar的指令有太多了&#xff1a; tar [-cxtzjvf] 文件与目录 ...…

怎样在 C 语言中进行结构体的内存布局控制?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01; &#x1f4d9;C 语言百万年薪修炼课程 【https://dwz.mosong.cc/cyyjc】通俗易懂&#xff0c;深入浅出&#xff0c;匠心打磨&#xff0c;死磕细节&#xff0c;6年迭代&…

Doris安装部署

Doris安装部署 1、 MPP概念Doris简要介绍 1、 MPP概念 MPP (Massively Parallel Processing)&#xff0c;即大规模并行处理&#xff0c;在数据库非共享集群中&#xff0c;每个节点都有独立的磁盘存储系统和内存系统&#xff0c;业务数据根据数据库模型和应用特点划分到各个节点…

免费录制视频的软件,推荐3款,总有一款适合你!

在数字化时代&#xff0c;视频录制与分享已成为日常生活和工作中的重要组成部分。无论是录制游戏过程、教程讲解还是网络会议&#xff0c;一款好用的录制视频软件能够帮助我们更便捷地实现这个目标。然而&#xff0c;许多录制视频的软件都是收费的&#xff0c;这对于很多人来说…

定时器TIM配置微妙延时函数

定时器TIM配置微妙延时函数 文章目录 定时器TIM配置微妙延时函数开胃小菜&#xff08;BOOT0、BOOT1&#xff09;Boot0Boot1&#xff08;如果有&#xff09; 三种定时器高级控制定时器&#xff08;TIM1&#xff0c;TIM8&#xff09;通用定时器&#xff08;TIM2, TIM3, TIM4, TIM…

dxf数据结构

DXF&#xff08;Drawing Exchange Format&#xff0c;绘图交换格式&#xff09;是Autodesk公司开发的一种CAD&#xff08;计算机辅助设计&#xff09;文件格式&#xff0c;用于实现AutoCAD与其他软件之间的CAD数据交换。DXF格式文件是一种开放的矢量数据格式&#xff0c;具有多…

怎么办?我的C盘又爆红了!别慌!博主手把手带你管理你的C盘空间~

怎么办&#xff1f;我的C盘又爆红了&#xff01;别慌&#xff01;博主手把手带你管理你的C盘空间~ 文章目录 怎么办&#xff1f;我的C盘又爆红了&#xff01;别慌&#xff01;博主手把手带你管理你的C盘空间~0. 在开始清理之前1. 推荐执行的操作1.1 清理系统缓存文件1.2 磁盘清…