最近在用node和ts来写前后端分离的项目,云服务器到期且并没有续费的打算,所以打算在本地环境捣鼓。网上的教程大多都是指导如何在云服务器上部署koa并用pm2守护进程。自己依葫芦画瓢在本地整了一套,故记录一下。
一、简单介绍PM2
开始之前先了解一下什么是pm2,这次认认真真逐字逐句的读了下概念,之前大致知道这是一个管理node进程的工具,把它笼统的归类于与phpstydy、nginx类似的工具,但是其实并不完全一致。
pm2一般来说是用于我们的生产环境,也就是云服务器上的node进程管理工具(废话),它不仅能进行进程守护,同时也支持性能监控、负载均衡等的功能,并且还可以使用命令来取查看我们node进程的状态,小白友好上手简单。我之前错误的认为它和phpstydy、nginx类似,更贴切的来讲,它其实更像是Linux的进程管理工具Supervisor或者Forever。
二、我用它来解决什么问题?
很简单,我主要是用来解决本地开发的时候,不用每次得用命令行工具cd到项目目录用命令去启动接口服务,我需要项目接口在我需要的时候一直运行着,且不会因为误触命令行工具关闭按钮时而挂掉服务。
同理,云服务器其实就可以看成一部虚拟的计算机,在服务器上用pm2,其实也是解决的一样的问题。
三、pm2的特性
- pm2在后台运行。例如
node app.js
这样的命令,是需要一直在前台运行,容易因为代码错误或者是命令行工具的问题导致中断,不稳定。pm2在后台运行,也支持将错误用log文件输出的方式记录。 - 0 秒停机重载。它能立即重新启动应用的所有进程并在重新加载代码后将请求,路由到新的进程,这意味着在应用维护升级的时候是不需要停机的,node服务不会中断,但这种处理方式不可避免的会造成一些请求失败和丢失。
- 内建负载均衡。使用node cluster集群模块,可以自由的设置每次启动的进程的个数,如果设置为0,意味着它会根据服务器CPU的使用情况来灵活的设置进程的数量。
- 停止不稳定的进程。可以避免死循环。
- 控制台监测。可以在控制台实时监测运行情况。
- 多平台支持。支持各大主流平台如Linux、MacOs、Windows等
四、安装和使用
-
安装
# 全局安装 npm install -g pm2
-
启动项目
# 1、首先cd到项目的根目录下,也就是项目入口文件同级的目录下 # 2、执行指定应用 pm2 start [配置文件/入口文件] --name [项目名字] pm2 start app.ts --name web_blog
-
常用命令
# 查看当前进程 pm2 ls