引入
我们在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]