• 代替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 目录下,这个可以自己决定到那个目录,但是下面的路径需要和安装的路径保持一致,当然简单安装就是

    npm install pm2 -g
    

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

    安装包地址

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

    提取码: xxxq

    解压

    tar -xvf pm2-5.2.2.tar
    

    创建软连接

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

    2.执行pm2查看输出

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

    pm2
    

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

    cd  /home/20230809
    

    启动程序

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

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

     pm2 ls
    

    前台访问

    常用维护命令:

    停止所有的程序:

    pm2 stop all
    

    重新启动所有应用:

    pm2 restart all
    

    查看日志:

    pm2 logs
    

    开机启动

    启动:

    $ pm2 startup
    

    保存:

    $ pm2 save
    

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

    pm2中文官网


    __EOF__

  • 本文作者: 北城青
  • 本文链接: https://www.cnblogs.com/sk777/p/17669434.html
  • 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。
  • 相关阅读:
    【Matlab2016】Matlab中文版的下载、安装、激活(不建议安装过高版本!!)
    06公共方法
    外贸SOHO新手指南来了!六大注意事项!
    中英文说明书丨CalBioreagents艾美捷甲型流感病毒单克隆抗体
    感悟2022年:玫琳凯公布今年上半年以来的奖项、里程碑和成就
    Python采集剧本杀店家数据信息,做可视化演示
    近似法概率潮流
    【控制】基于白鲸优化算法实现太阳能光伏模型参数估计附matlab代码
    【kali-信息收集】(1.2)SNMP枚举:Snmpwalk、Snmpcheck;SMTP枚举:smtp-user-enum
    A37 STM32_HAL库函数 之PCD通用驱动 -- C-- 所有函数的介绍及使用
  • 原文地址:https://www.cnblogs.com/sk777/p/17669434.html