node.js项目通过pm2以守护进程方式运行

Posted 二木成林

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node.js项目通过pm2以守护进程方式运行相关的知识,希望对你有一定的参考价值。

引入

我们在Linux系统上部署了一个node.js写的web项目,通过node app.js启动程序。
但是当该会话被关闭后,该node.js项目就无法被访问了,那么该如何在会话关闭后项目也能一直被外界访问呢?这就需要用到守护进程,而pm2就是其中一种解决方式。

pm2

概述

pm2的官网:https://github.com/Unitech/pm2

PM2 是一个带有负载均衡功能的 Node 应用进程管理器。主要特性:

  • 内建负载均衡(使用 Node cluster 集群模块)
  • 后台运行
  • 0 秒停机重载
  • 具有 Ubuntu 和 CentOS 的启动脚本
  • 停止不稳定的进程(避免无限循环)
  • 控制台检测
  • 提供 HTTP API
  • 远程控制和实时的接口 API(Nodejs 模块,允许和 PM2 进程管理器交互)

简单来说,使用这个可以让node.js项目一直运行。

安装

通过如下命令安装pm2,但前提是已经安装了node.js环境,可以使用npm命令:

npm install pm2 -g

安装成功后需要配置下才能在系统的任意目录下使用pm2命令,参考:使用pm2命令报错“-bash: pm2: command not found“

在任意目录执行pm2 --version命令成功表示配置成功。

启动

到node.js项目下,通过如下命令进行启动,其中app.js文件是node.js项目的主启动文件。

pm2 start app.js

更多命令

  • 查看启动列表:pm2 list
  • 启动应用:pm2 start

启动的命令如下:

# 启动app.js应用,其中app.js是node.js项目的主启动文件
pm2 start app.js
# 启动app.js应用,并且设置name为"myapp"
pm2 start app.js --name myapp 
# 启动shell脚本
pm2 start app.sh
  • 停止服务:pm2 stop

结束的命令如下:

# 停止所有应用
pm2 stop all
# 根据应用名停止指定应用
pm2 stop [app_name]
# 根据应用id停止指定应用
pm2 stop [id]

关于应用名字app_name和应用id说明如图:
如下例:

  • 删除应用

命令如下:

# 关闭并删除所有引用
pm2 delete all
# 根据应用名关闭并删除指定应用
pm2 delete [app_name]
# 根据应用id关闭并删除指定应用
pm2 delete [id]

  • 开机自启动:pm2 startup

  • 重启应用:pm2 restart app.js

  • 查看启动列表:pm2 list

  • 查看每个应用程序占用情况:pm2 monit

  • 显示应用程序所有信息:pm2 show [app_name | id]

  • 查看日志:pm2 logs

命令如下:

# 查看所有应用日志
pm2 logs
# 根据指定应用名查看应用日志
pm2 logs [app_name]
# 根据指定应用id查看应用日志
pm2 logs [id]

相关资源

以上是关于node.js项目通过pm2以守护进程方式运行的主要内容,如果未能解决你的问题,请参考以下文章

使用 pm2 来守护 NoderCMS

使用pm2守护你的.NET Core应用程序

Node.js部署到服务器之后台守护进程管理器Forever

pm2操作总结

node.js部署文档(Linux版)

PM2 简单使用,守护node进程