代替forever下一个部署node的持久化工具---pm2

最近有个后端项目,用的是node,在持久化的时候会挂掉,详细了解到用的是nohup,然后先详细了解了一下nohup

nohup是一个Linux命令,用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行1nohup的英文全称是no hang up(不挂起)。

nohup为什么不稳定,可能有以下几个原因:

1.nohup命令只能保证程序在后台运行,但不能保证程序不会因为其他原因而终止,比如内存不足、程序异常、系统重启等。

2.nohup命令在默认情况下(非重定向时),会输出一个名叫nohup.out的文件到当前目录下,如果当前目录的nohup.out文件不可写,输出重定向到$HOME/nohup.out文件中

3如果这些文件被删除或者磁盘空间不足,可能会导致程序无法正常输出或者崩溃。

4.nohup命令在执行时,会将当前shell的标准输入、标准输出和标准错误输出全部重定向到/dev/null设备中,避免被关闭终端的信号所中断,但是,如果程序需要从标准输入读取数据或者向标准输出和标准错误输出写入数据,那么nohup命令可能会造成程序阻塞或者异常。

解决思路:

这个时候我想到了forever,因为之前碰到类似的问题,也写文章写了如何安装,但是在安装完之后碰到过一个问题,就是这个问题,但是当我安装完运行的时候报错如下

报错信息

(node:9352) Warning: Accessing non-existent property 'padLevels' of module exports inside circular dependency

找到了相关的解决方案是说这个错误是因为 Node.js 中存在循环模块依赖,导致在解析模块过程中访问了未定义的属性,node在高于node14以后就不支持循环依赖,所以会报错,如果切换node版本低于14或者12就不会有这个问题,但是,因为项目的版本是node16,所以切换版本是不可能的, 所以解决方案要么就是解决掉循环依赖的问题,要么就是换其他的持久化工具,综合条件下我选择了第二种,切换持久话工具,那就是pm2

PM2介绍

PM2 是一个守护进程管理工具,帮助您管理和守护您的应用程序。它以简单直观的 C​​LI 命令行方式进行工作。当然,pm2还有一个非常好用的功能就是开机自启动程序

1.安装pm2

上传文件到/home/tool/pm2 目录下,这个可以自己决定到那个目录,但是下面的路径需要和安装的路径保持一致,当然简单安装就是

javascript 复制代码
npm install pm2 -g

但是问题就是重启之后pm2的环境变量就不见了,当然也有可能是个例,所以我选择了下面的安装方式

解压

javascript 复制代码
tar -xvf pm2-5.2.2.tar
```3D&pos_id=img-Pg1mWqtc-1693447847522)


创建软连接

```javascript
ln -s /home/tool/pm2/pm2-5.2.2/bin/pm2 /usr/local/bin/pm2

2.执行pm2查看输出

安装完成后,在任何地方输入pm2会打印下面的信息

javascript 复制代码
pm2

3.在程序的根目录下执行

javascript 复制代码
cd  /home/20230809

启动程序

javascript 复制代码
pm2 start ./src/app.js --silent       //--silent表示不需要日志,但是还是可以看到日志,奇怪

然后执行 ,看到status为 online表示当前为在线

javascript 复制代码
 pm2 ls

前台访问是正常的

常用维护命令:

停止所有的程序:

plain 复制代码
pm2 stop all

重新启动所有应用:

plain 复制代码
pm2 restart all

查看日志:

plain 复制代码
pm2 logs

更多的功能请访问官网了解

pm2中文官网

安装包地址

链接: https://pan.baidu.com/s/1XbeL48bGgR2oM14Uc9VCKw

提取码: xxxq

相关推荐
hairenjing11234 小时前
使用 Mac 数据恢复从 iPhoto 图库中恢复照片
windows·stm32·嵌入式硬件·macos·word
前端青山5 小时前
Node.js-增强 API 安全性和性能优化
开发语言·前端·javascript·性能优化·前端框架·node.js
九鼎科技-Leo6 小时前
了解 .NET 运行时与 .NET 框架:基础概念与相互关系
windows·c#·.net
GDAL7 小时前
npm入门教程1:npm简介
前端·npm·node.js
九鼎科技-Leo9 小时前
什么是 ASP.NET Core?与 ASP.NET MVC 有什么区别?
windows·后端·c#·asp.net·mvc·.net
Diamond技术流10 小时前
从0开始学习Linux——远程连接工具
linux·学习·centos·ssh·xshell·ftp
黎明晓月13 小时前
Java之字符串分割转换List
java·windows·list
九鼎科技-Leo13 小时前
在 C# 中,ICollection 和 IList 接口有什么区别?
windows·c#·.net
顾辰呀14 小时前
实现uniapp-微信小程序 搜索框+上拉加载+下拉刷新
前端·windows
郑小憨15 小时前
Node.js简介以及安装部署 (基础介绍 一)
java·javascript·node.js