Nodejs 第八十六章(部署pm2)

news2024/9/22 13:34:52

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

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

在这里插入图片描述

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

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

相关文章

[数仓]四、离线数仓(Hive数仓系统-续)

第8章 数仓搭建-DWT层 8.1 访客主题 1)建表语句 DROP TABLE IF EXISTS dwt_visitor_topic; CREATE EXTERNAL TABLE dwt_visitor_topic (`mid_id` STRING COMMENT 设备id,`brand` STRING COMMENT 手机品牌,`model` STRING COMMENT 手机型号,`channel` ARRAY<STRING> C…

Visual Studio远程调试工具

路径&#xff1a;安装路径/Common7/IDE/Remote Debugger/平台/msvsmon.exe。 平台有x86、x64&#xff0c;x64即可调试x86进程也可调试x64进程。 将平台路径下的所有文件拷贝至其他PC&#xff0c;运行msvsmon.exe。 工具栏选择“工具&#xff08;T&#xff09;”选择“选项“&…

基于STM32的RFID公交充值消费系统

1.简介 基于RFID技术的公交卡充值消费系统&#xff0c;以其高效快速、安全可靠、方便快捷、易于管理和环保节能等特点&#xff0c;为用户带来优质的公交出行体验。通过非接触式的数据读写&#xff0c;该系统实现了快速充值和消费&#xff0c;同时采用先进的加密和防碰撞算法确保…

浅谈后置处理器之调试后置处理程序

浅谈后置处理器之调试后置处理程序 “调试后置处理程序”(Debug PostProcessor) 是一个特别的组件&#xff0c;它主要用于帮助测试人员深入理解测试脚本执行过程中的变量和属性状态&#xff0c;便于调试和故障排查。 调试后置处理程序简介 功能概述&#xff1a; 调试后置处…

中科亿海微亮相慕尼黑上海电子展

7月8-10日&#xff0c;备受瞩目的全球电子行业盛会“慕尼黑上海电子展”以空前规模启幕&#xff0c;汇聚了超过1600家参展企业&#xff0c;涵盖了从终端产品制造商到元器件供应商、组装/系统供应商、EMS、ODM/OEM、材料供应商及生产设备供应商的完整产业链。中科亿海微电子科技…

Java将Excel转为图片

1. 支持多个Sheet 2. 支持识别 换行 / 文字居中 / 文字居左 3. 支持识别 背景颜色 / 字体颜色 4. 支持识别 计算公式 原Excel表单 识别后生成的图片 下载地址 : https://download.csdn.net/download/dongyan3595/89535740

Linux C语言基础 day7

目录 思维导图&#xff1a; 学习目标&#xff1a; 学习内容&#xff1a; 1. 数组 1.1 对数组元素的常规操作 1.1.1 逆序 1.1.2 挑选数据 1.1.3 排序 1. 冒泡排序 2. 选择排序 2. 二维数组 2.1 二维数组的概念 2.1.1. 定义格式 2.2.2.初始化 2.2 二维数组的相关操…

深度学习pytorch多机多卡网络配置桥接方法

1 安装pdsh&#xff08;Parallel Distributed Shell&#xff09; sudo apt install pdsh sudo -s # 切换超级用户身份 …

Vscode ssh远程连接Linux服务器登录时密码password无法输入

问题 最近在用Vscode远程连接Linux服务器时&#xff0c;在终端提示输入密码password的时候用键盘输入没有反应。 以为是键盘坏了&#xff0c;然后尝试复制粘贴没有用。 后来找到了原因以及解决方法&#xff0c;感谢原帖作者&#xff08;原贴链接粘在下面&#xff09; 原因 …

Java 多继承与接口

Java 多继承与接口 1、为什么Java不支持多继承&#xff1f;2、使用接口实现多继承2.1 接口的定义与实现 3、接口的优点4、结论 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 多继承是指一个类可以继承多个父类&#xff0c;从而获得多个父类…

RHCE-autofs自动挂载

要求 一、在主机上提供web&#xff0c;dns服务 服务端 IP&#xff1a;172.25.250.131/24 dns&#xff1a;172.25.250.131 [rootlocalhost ~]# cd /etc/httpd/conf.d[rootlocalhost conf.d]# vim vhost.conf [rootlocalhost conf.d]# mkdir /nfs/rhce -p[rootlocalhost conf…

基于企业微信第三方接口开发,移除群成员通知

移除群成员通知 返回示例 {"flag": 0, "receiver": 0, "sender_name": "", "is_room": 1, "server_id": 15318083, "send_time": 1687688952, "sender": 1688855749266556, "referid&…

根据视图矩阵, 恢复相机的世界空间的位置

根据视图矩阵, 恢复相机的世界空间的位置 一、方法1 glsl 实现: // 从本地局部坐标系(相机空间) 到 世界空间的旋转变换 mat3 getLocal2WorldRotation() {mat3 world2localRotation mat3(viewMatrix[0].xyz,viewMatrix[1].xyz,viewMatrix[2].xyz);return inverse(world2loca…

推出新的LMK6x 低抖动高性能 BAW 振荡器(器件编号包括LMK6DA、LMK6HA)标准时钟振荡器

前言 体声波 (BAW) 是一种微谐振器技术&#xff0c;能够将高精度 BAW 谐振器直接集成到具有超低抖动时钟电路的封装中。 相关型号&#xff1a;LMK6DA05184ADLER LMK6DA10000ADLFR LMK6DA12288ADLER LMK6HA10000ADLER LMK6HA10000ADLFR LMK6HA10000BDLFR 概述 LMK6x 器件是一…

nsightcompute进阶

一、定义 1 python 代码测试 2 roofline analysis 屋檐模型分析 3 summary 分析 4 Speed of light throughput 分析 5 带宽分析 6 内存分析 二、实现 python 代码测试 2. >>ncu --version 3. >>ncu --list-sets #查看set 类型 4. >>ncu --set full -…

IP 地址:优化网络游戏

IP地址和网络游戏 在现代网络游戏中&#xff0c;IP地址不仅用于服务器分配&#xff0c;还能针对性进行玩家匹配与优化网络延迟。本文将探讨IP地址在网络游戏中的具体应用。 *服务器分配* 全球服务器分布&#xff1a; 网络游戏需要在全球范围内提供快速、稳定的连接&#xff…

3D工艺大师快速生成装配动画,驱动汽车工业装配流程革新

在现代制造业的一般生产流程中&#xff0c;车间装配环节是产品由蓝图迈向市场前至关重要的一道工序。随着产品结构的日益复杂化和个性化需求的不断增长&#xff0c;车间装配工作面临着前所未有的挑战。高精密度的装配要求、错综复杂的组件关系以及频繁变更的生产计划&#xff0…

flutter 列表下拉框加搜索

1.使用控件搜索加下拉框dropdown_search: ^0.4.9和获取中文拼音lpinyin: ^1.1.1 2.加入中文查询和首字查询 在当中找到相应的packages&#xff0c;再在SelectDialog.dart当中加入引入拼音搜索 import package:lpinyin/lpinyin.dart; 更改匹配方法manageItemsByFilter使其可…

一文读懂DNS和CDN

一.什么是DNS DNS&#xff08;Domain Name System&#xff09;全称为域名系统&#xff0c;是一个将域名和IP地址相互映射的分布式服务&#xff0c;他的作用就是把一个域名解析成为IP地址。我们平时输入的网址&#xff08;或者域名&#xff09;不能被计算机直接识别&#xff0c;…

oracle控制文件详解以及新增控制文件

文章目录 oracle控制文件1、 控制文件包含的主要信息如下&#xff1a;2、查看目前系统的控制文件信息&#xff0c;主要是查看相关的字典视图 oracle新增控制文件 oracle控制文件 控制文件是一个很小的二进制文件(10MB左右)&#xff0c;含有数据库结构信息&#xff0c;包括数据…