前言
随着 Node.js 逐渐成为了Web 开发的首选技术,越来越多的公司和个人开始采用 Node.js 开发 Web 应用。而 Node.js 的优点也越来越明显,例如:非阻塞 I/O 模型、高并发能力、轻量级等特性,使得 Node.js 在 Web 开发中的应用越来越广泛。在开发大型应用的时候,我们需要同时运行多个 Node.js 进程,而这些进程的管理又是一个问题。节点.js 进程管理工具 PM2 的出现,为我们解决了这个问题,让我们能够轻松地管理多个 Node.js 进程。
本文将介绍 PM2 的基本使用方法和特性,同时也会介绍一些高级技巧和实践经验。
安装 PM2
安装 PM2 非常简单,只需要输入以下命令:
npm install pm2 -g
PM2 的基本使用
启动进程
使用 PM2 启动进程非常简单,只需要输入以下命令:
pm2 start app.js
这里的 app.js 即为你要运行的 Node.js 应用的入口文件。使用 PM2 启动的进程会在后台运行,并且会自动维护进程生命周期,即:如果进程崩溃或者被异常杀死,PM2 会自动重新启动进程。
停止进程
停止 PM2 管理的进程也很简单,只需要输入以下命令:
pm2 stop app.js
这里的 app.js 是你要停止的进程的入口文件。
重启进程
PM2 提供了两种重启方式:
- 直接重启进程,即重新启动进程的服务器。
- 只重启进程里面的代码,不重新启动服务器。
如果只是单纯的想重启进程里面的代码,可以通过以下命令达到效果:
pm2 reload app.js
如果需要重启进程服务器,可以通过以下命令达到效果:
pm2 restart app.js
删除进程
删除 PM2 管理的进程也很简单,只需要输入以下命令:
pm2 delete app.js
这里的 app.js 是你要删除的进程的入口文件。
查看进程信息
查看 PM2 管理的进程信息非常简单,只需要输入以下命令:
pm2 list
查看进程日志
PM2 会把日志保存到一个文件里,如果需要查看进程日志,可以使用以下命令:
pm2 log app.js
PM2 的高级功能
管理多个进程
通常情况下,我们需要同时运行多个 Node.js 进程,因此需要用到 PM2 的批量启动进程的功能。使用 PM2 批量启动进程的方法如下:
pm2 start ecosystem.config.js
这里的 ecosystem.config.js 是一个 PM2 配置文件,可以在里面配置多个进程。一个示例的配置文件如下:
-- -------------------- ---- ------- -------------- - - ---- - - - ----- ------ ------- ----------- ---------- -- ---------- ---------- ------ ----- ---- - --------- -------------- -- --------------- - --------- ------------- - - - -
配置文件中有几个重要的属性需要讲解一下:
name
属性用来指定进程的名称,例如上面的例子中,我们指定了进程名为app
。script
属性用来指定进程的入口文件。instances
属性用来指定启动的进程的数量,例如上面的例子中,我们定义了启动 2 个进程。exec_mode
属性用来指定进程的运行模式,一般情况下用cluster
模式即可。watch
属性用来指定文件是否需要监视文件变化并自动重启,一般情况下用true
即可。
环境变量的配置
PM2 支持通过环境变量的方式配置应用程序,这样不同环境下就可以使用不同的配置。例如,我们可以在生产环境下使用数据库的正式地址,而在开发环境下使用本地数据库地址。
配置环境变量的方法非常简单,只需要在 PM2 启动的时候设置一个环境变量即可。例如,我们可以通过以下命令启动一个名为 app
的进程,并在进程中设置了一个 NODE_ENV
的环境变量:
pm2 start app.js --name="app" --env="production"
这里我们设置了 NODE_ENV=production
,表示我们正在生产环境中启动进程。
日志的管理
PM2 支持自动保存进程的日志,并且可以通过 PM2 的命令来查看进程日志。日志文件默认保存在 ~/.pm2/logs
目录下。日志的格式可以配置。
以下是一些常用的日志相关命令:
- 查看所有日志:
pm2 logs
- 查看特定进程的日志:
pm2 logs app
- 清除所有日志:
pm2 flush
- 重新加载日志:
pm2 reloadLogs
集群模式的使用
在 cluster 模式下,PM2 会自动将你的 Node.js 代码分发给多个进程运行。这意味着,如果 Node.js 的某个进程崩溃了,其他进程依然可以正常工作。为了让 Node.js 所有的进程共享端口,PM2 内置了一个负载均衡器。根据 PM2 的测试结果,使用 Cluster 模式可以显著提高 Node.js 应用程序的性能。
启动一个进程使用 Cluster 模式的命令如下:
pm2 start app.js -i 2 --name="app" -env="production"
这里我们使用了 -i 2
参数,表示启动 2 个进程。
使用 PM2 Plus 进行监控和管理
PM2 Plus 是 PM2 的一种付费服务,可以为你的 Node.js 应用程序提供实时监控、自动扩容、历史数据存储等功能。
使用 PM2 Plus 非常简单,只需要先创建一个 PM2 Plus 账户,然后在 PM2 中执行以下命令即可:
pm2 plus
执行完后,你的应用程序就可以使用 PM2 Plus 的功能了。
结论
PM2 是一个非常实用的 Node.js 进程管理工具,它支持多功能的进程管理和监控,帮助我们轻松地管理多个 Node.js 进程,并提高了应用程序的性能和可靠性。无论是开发环境还是生产环境,都能为我们提供非常好的支持。无论你是初学者还是经验丰富的开发者,都应该认真学习和掌握 PM2 的使用。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66ffe713485b53fc16b67b30