PM2 在 Node.js 项目中的使用与部署指南

news2025/4/11 0:38:56

一、PM2 简介​

PM2 是一个带有负载均衡功能的 Node.js 应用程序的进程管理器。它可以让你的 Node.js 应用程序始终保持运行状态,即使出现错误或服务器重启也能自动恢复。同时,它还提供了诸如日志管理、性能监控等实用功能,极大地简化了 Node.js 项目的部署和运维工作。​

二、安装 PM2​

在开始使用 PM2 之前,确保你已经安装了 Node.js 和 npm(Node.js 的包管理器)。如果尚未安装,可以从 Node.js 官方网站(Node.js — Run JavaScript Everywhere)下载并安装。​

安装 PM2 非常简单,只需在终端中运行以下命令:

npm install -g pm2

-g标志表示全局安装,这样你可以在任何目录下使用pm2命令。

三、使用 PM2 管理 Node.js 项目​

(一)启动应用​

假设你有一个名为myapp.js的 Node.js 应用,要使用 PM2 启动它,只需在项目目录下运行:

pm2 start myapp.js

PM2 会自动检测应用类型(Node.js)并启动进程。你还可以为应用指定一个名称,方便后续管理,例如:

pm2 start myapp.js --name my-app

(二)查看进程状态​

使用以下命令查看当前由 PM2 管理的所有进程状态:

pm2 list

这将列出每个进程的 ID、名称、状态(如运行中、已停止等)、CPU 和内存使用情况等信息。

(三)停止和重启进程​

停止指定名称或 ID 的进程:

pm2 stop my-app
# 或者通过ID停止
pm2 stop <process_id>

重启进程:

pm2 restart my - cool - app
# 或者通过ID重启
pm2 restart <process_id>

如果要停止或重启所有进程,可以使用:

pm2 stop all
pm2 restart all

(四)日志管理​

PM2 会自动为每个应用程序创建日志文件。你可以通过以下命令查看应用的日志:

pm2 logs my-app

这将实时输出应用的标准输出(stdout)和标准错误(stderr)日志。如果只想查看错误日志,可以使用:

pm2 logs my-app --err

(五)应用程序监控​

PM2 提供了简单的监控功能,帮助你了解应用的运行状况。运行以下命令可以查看应用的 CPU 和内存使用情况:

pm2 monit

这将以交互式界面展示每个进程的资源使用情况,方便你实时监控应用性能。​

四、PM2 在项目部署中的应用​

(一)部署到服务器​

  1. 准备服务器:确保服务器已经安装了 Node.js 和 PM2。你可以按照前面的安装步骤在服务器上进行安装。​
  1. 上传项目代码:将你的 Node.js 项目代码通过 FTP、SCP 等方式上传到服务器的指定目录。​
  1. 安装项目依赖:进入项目目录,运行npm install安装项目所需的依赖包。​
  1. 启动应用:在项目目录下使用pm2 start命令启动你的 Node.js 应用,就像在本地开发环境中一样。​

(二)实现自动重启​

在生产环境中,确保应用程序在出现错误或服务器重启时能够自动恢复非常重要。PM2 默认会在应用崩溃时自动重启应用。此外,你还可以配置 PM2 在服务器启动时自动启动所有管理的进程。​

运行以下命令将 PM2 设置为开机自启:

pm2 startup

该命令会根据你的服务器操作系统生成相应的启动脚本,并提示你运行一个命令来完成配置。按照提示运行即可。​

(三)负载均衡​

PM2 的负载均衡功能可以充分利用多核 CPU 的性能,提高应用的并发处理能力。假设你的服务器有 4 个 CPU 核心,要启动 4 个实例来实现负载均衡,可以这样做:

pm2 start myapp.js -i 4

-i参数指定了要启动的实例数量,-i 0表示根据 CPU 核心数自动启动相应数量的实例。

-i参数指定了要启动的实例数量,-i 0表示根据 CPU 核心数自动启动相应数量的实例。​

五、总结​

通过本文,我们了解了 PM2 在 Node.js 项目中的基本使用方法和在项目部署中的应用技巧。PM2 能够极大地提高 Node.js 应用的稳定性和可维护性,帮助开发者更高效地管理和部署项目。希望这些内容能对你在 Node.js 开发和运维过程中有所帮助,让你更轻松地应对项目中的各种挑战。

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

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

相关文章

企业管理系统的功能架构设计与实现

一、企业管理系统的核心功能模块 企业管理系统作为现代企业的中枢神经系统&#xff0c;涵盖了多个核心功能模块&#xff0c;以确保企业运营的顺畅与高效。这些功能模块通常包括&#xff1a; 人力资源管理模块&#xff1a;负责员工信息的录入、维护、查询及统计分析&#xff0c…

覆盖学术、职场、生活的专业计算工具

软件介绍 今天要给大家介绍一款超给力的工具软件——CalcKit 计算器。它就像是你口袋里的智能计算专家&#xff0c;轻松化解日常生活中的各类计算难题。无论是简单的数字加减乘除&#xff0c;还是复杂的专业运算&#xff0c;它都不在话下。 这款软件内置了极为强大的计算功能…

【大模型系列篇】大模型基建工程:基于 FastAPI 自动构建 SSE MCP 服务器 —— 进阶篇

&#x1f525;&#x1f525;&#x1f525; 上期 《大模型基建工程&#xff1a;基于 FastAPI 自动构建 SSE MCP 服务器》中我们使用fastapi-mcp自动挂载fastapi到mcp工具&#xff0c;通过源码分析和实践&#xff0c;我们发现每次sse请求又转到了内部fastapi RESTful api接口&…

【python】Plot a Square

文章目录 1、功能描述2、代码实现3、效果展示4、完整代码5、涉及到的库函数 更多有趣的代码示例&#xff0c;可参考【Programming】 1、功能描述 用 python 实现&#xff0c;以 A和B两个点为边长&#xff0c;方向朝 C 绘制正方形 思路&#xff1a; 计算向量 AB 和 AC。使用向…

实战打靶集锦-37-Wpwnvm

文章目录 1. 主机发现2. 端口扫描&服务枚举3. 服务探查4. 系统提权 靶机地址&#xff1a;https://download.vulnhub.com/wpwn/wpwnvm.zip 1. 主机发现 目前只知道目标靶机在192.168.37.xx网段&#xff0c;通过如下的命令&#xff0c;看看这个网段上在线的主机。 $ nmap -…

三、GPIO

一、GPIO简介 GPIO&#xff08;General Purpose Input Output&#xff09;通用输入输出口GPIO引脚电平&#xff1a;0V&#xff08;低电平&#xff09;~3.3V&#xff08;高电平&#xff09;&#xff0c;部分引脚可容忍5V 容忍5V&#xff0c;即部分引脚输入5V的电压&#xff0c;…

混杂模式(Promiscuous Mode)与 Trunk 端口的区别详解

一、混杂模式&#xff08;Promiscuous Mode&#xff09; 1. 定义与工作原理 定义&#xff1a;混杂模式是网络接口的一种工作模式&#xff0c;允许接口接收通过其物理链路的所有数据包&#xff0c;而不仅是目标地址为本机的数据包。工作层级&#xff1a;OSI 数据链路层&#x…

[dp5_多状态dp] 按摩师 | 打家劫舍 II | 删除并获得点数 | 粉刷房子

目录 1.面试题 17.16. 按摩师 题解 2.打家劫舍 II 题解 3.删除并获得点数 题解 4.粉刷房子 题解 一定要有这样的能力&#xff0c;碰到一个新题的时候&#xff0c;可以往之前做过的题方向靠&#xff01; 打家劫舍问题模型: 不能选择相邻的两个数&#xff0c;并且要最终…

DM数据库配置归档模式的两种方式

归档模式&#xff0c;联机日志文件中的内容保存到硬盘中&#xff0c;形成归档日志文件(REDO日志)。 采用归档模式会对系统的性能产生些许影响&#xff0c;然而系统在归档模式下运行会更安全&#xff0c;当 出现故障时其丢失数据的可能性更小&#xff0c;这是因为一旦出现介质故…

Agent TARS与Manus的正面竞争

Agent TARS 是 Manus 的直接竞争对手&#xff0c;两者在 AI Agent 领域形成了显著的技术与生态对抗。 一、技术架构与功能定位的竞争 集成化架构 vs 模块化设计 Agent TARS 基于字节跳动的 UI-TARS 视觉语言模型&#xff0c;将视觉感知、推理、接地&#xff08;grounding&#…

【Tauri2】013——前端Window Event与创建Window

前言 【Tauri2】012——on_window_event函数-CSDN博客https://blog.csdn.net/qq_63401240/article/details/146909801?spm1001.2014.3001.5501 前面介绍了on_window_event&#xff0c;这个在Builder中的方法&#xff0c;里面有许多事件&#xff0c;比如Moved&#xff0c;Res…

创建Linux虚拟环境并远程连接,finalshell自定义壁纸

安装VMware 这里不多赘述。 挂载Linux系统 1). 打开Vmware虚拟机&#xff0c;打开 编辑 -> 虚拟网络编辑器(N) 选择 NAT模式&#xff0c;然后选择右下角的 更改设置。 设置子网IP为 192.168.100.0&#xff0c;然后选择 应用 -> 确定。 解压 CentOS7-1.zip 到一个比较大…

基于pycharm的YOLOv11模型训练方法

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、前期准备1.1 软件环境配置1.2 训练集参考 二、训练步骤2.1 打开文件夹2.2 打开文件2.3 data.yaml最终代码 三、train.py四、最终结果五、detect.py六、 拓展…

034-QSharedMemory

QSharedMemory 以下为针对 QSharedMemory 的技术调研及实现方案&#xff0c;包含原理、优化策略、完整代码实现及流程图解&#xff1a; 一、QSharedMemory 核心原理 1.1 共享内存机制 共享内存流程图 &#xff08;注&#xff1a;此处应为共享内存IPC流程图&#xff0c;因文本…

在 Ubuntu 上离线安装 Prometheus 和 Grafana

在 Ubuntu 上离线安装 Prometheus 和 Grafana 的步骤如下&#xff1a; 一.安装验证 二.安装步骤 1.准备离线安装包 在一台可以访问互联网的机器上下载 Prometheus 和 Grafana 的二进制文件。 Prometheus 下载地址&#xff1a;Prometheus 官方下载页面Grafana 下载地址&#…

Ansible:playbook的高级用法

文章目录 1. handlers与notify2. tags组件3. playbook中使用变量3.1使用 setup 模块中变量3.2在playbook 命令行中定义变量3.3在playbook文件中定义变量3.4使用变量文件3.5主机清单文件中定义变量主机变量组&#xff08;公共&#xff09;变量 1. handlers与notify Handlers&am…

【C++进阶九】继承和虚继承

【C进阶九】继承和虚继承 1.什么是继承2.继承关系2.1protected和private的区别2.2通过父类的函数去访问父类的private成员2.3默认继承 3.基类和派生类对象的赋值转换4.继承中的作用域5.子类中的默认成员函数6.继承与静态成员7. 菱形继承8.虚继承9.继承和组合 1.什么是继承 继承…

电子电气架构 --- 面向服务的体系架构

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 周末洗了一个澡&#xff0c;换了一身衣服&#xff0c;出了门却不知道去哪儿&#xff0c;不知道去找谁&am…

基姆拉尔森计算公式

基姆拉尔森计算公式&#xff08;Zellers Congruence 的变体&#xff09;是一种快速根据公历日期计算星期几的数学公式。其核心思想是通过对年月日的数值进行特定变换和取模运算&#xff0c;直接得到星期几的结果。 公式定义 对于日期 年-月-日&#xff0c;公式如下&#xff1a…

5 分钟用满血 DeepSeek R1 搭建个人 AI 知识库(含本地部署)

最近很多朋友都在问&#xff1a;怎么本地部署 DeepSeek 搭建个人知识库。 老实说&#xff0c;如果你不是为了研究技术&#xff0c;或者确实需要保护涉密数据&#xff0c;我真不建议去折腾本地部署。 为什么呢&#xff1f; 目前 Ollama 从 1.5B 到 70B 都只是把 R1 的推理能力…