什么是PM2
pm2是一个进程管理工具,可以用它来管理你的node进程,并查看node进程的状态,也支持性能监控,进程守护,负载均衡,自动重载等功能。pm2基本是Nodejs应用程序不二的守护进程选择node进程管理常用它,事实上它并不仅仅可以启动Nodejs的程序,只要是一般的脚本的程序它同样可以胜任。其同类工具有Supervisor、Forever等。
PM2的特性:这些特性使得PM2成为Node.js开发者管理和监控应用程序的首选工具之一。
1、进程管理:PM2是一个Node.js应用的进程管理器,可以简化很多Node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等1。
2、负载均衡:利用Node.js的集群模块,PM2可以实现内建负载均衡,根据可用CPU的数量自动扩展应用程序的子进程,以共享服务器端口12。
3、守护进程和keep alive:提供线程守护和keep alive功能,确保应用程序持续运行1。
4、零秒停机重载:在维护升级时,提供0秒停机重载功能,无需停机时间1。
5、多平台支持:支持Linux、MacOS和Windows等多个操作系统12。
6、停止不稳定的进程:能够停止不稳定的进程,避免无限循环1。
7、控制台检测:提供控制台检测功能,方便监控应用程序的运行状况1。
8、HTTP API和远程控制:提供HTTP API和远程控制接口,允许与PM2进程管理器进行交互1。
9、多服务器监控管理:利于多服务器监控管理,可以查看代码异常和应用长期运行的稳定性3。
10、基本应用启动、重启与停止功能:支持应用基本的启动、重启与停止等功能3。
安装部署
1、全局安装命令
pm2, npm install -g pm2
2、安装依赖命令
npm install 需要进入到所在目录执行此命令
3、打包命令
npm run build
4、启动命令
第一次启动:pm2 start app_name.js 注意第一次启动需要进入到安装目录
重新启动:pm2 restart app_name
--watch:监听应用目录的变化,一旦发生变化,自动重启。如果要精确监听、不见听的目录,最好通过配置文件。
-i --instances:启用多少个实例,可用于负载均衡。如果-i 0或者-i max,则根据当前机器核数确定实例数目。
--ignore-watch:排除监听的目录/文件,可以是特定的文件名,也可以是正则。比如--ignore-watch="test node_modules "some scripts""
-n --name:应用的名称。查看应用信息的时候可以用到。
-o --output
-e --error
--interpreter
5、查看进程
pm2 list/ls/l
6、查看某个应用的详情
pm2 show app_name|app_id 或 pm2 describe app_name|app_id
7、重启
pm2 restart app.js 或 pm2 restart app_name|app_name
8、停止
停止特定的应用:pm2 stop app_name|app_id
停止所有应用:pm2 stop all
9、删除
删除特定的应用:pm2 delete app_name|app_id
删除所有的应用:pm2 delete all
10、查看日志
查看特定的应用程序日志:pm2 logs app_name|app_id
查看所有应用程序日志:pm2 logs
11、帮助命令
pm2 --help
12、负载均衡
pm2 start app.js -i 3 开启三个进程
pm2 start app.js -i max 根据机器CPU核数,开启对应数目的进程
13、开机自动启动
1、首先,确保你已经安装了pm2。
2、接下来,使用pm2启动你的应用:
第一次启动:pm2 start app_name.js
重新启动:pm2 restart app_name
后续启动::pm2 start app_name
3、为了确保pm2在系统重启后依然能够启动你的应用,你需要使用pm2的保存功能:
pm2 save
这会将当前运行的进程列表保存到pm2的启动文件中。
4、然后,你需要设置pm2开机自启。pm2提供了一个脚本来处理这个问题:
pm2 startup
5、执行这个命令后,pm2会生成一个适用于你的系统的启动脚本,并告诉你如何启用它。通常,它会输出一个命令,类似于:
sudo systemctl enable pm2-root
6、执行这个命令来启用pm2开机自启。
7、最后,重启你的系统以确保一切正常:
sudo reboot
重启后,pm2应该会自动启动,并且你的应用也应该在后台运行。
14、官方文档:http://pm2.keymetrics.io/docs/usage/update-pm2/#updating-pm2