前言
随着互联网的普及和发展,Web 应用的发展也日益迅速。而对于 Web 应用的部署和运维也变得越来越重要。在这方面,PM2 是一款非常出色的工具,在实际运维中也得到了广泛的应用。本文将关注 PM2 的部署实战,包括高可用、高并发、高质量等内容。
PM2 简介
PM2 是一个非常实用的 Node.js 进程管理工具,可以帮助用户管理 Node.js 应用的部署、监控、负载均衡等方面的问题。它支持多进程模式,可以管理多个 Node.js 进程,实现负载均衡和自动重启,也支持快速的日志管理、命令行交互等功能。
PM2 的部署实战
安装及配置
首先,需要在你的服务器端安装 Node.js 和 NPM,如果已经安装可以直接跳过这一步。
$ sudo apt-get update $ sudo apt-get install nodejs $ sudo apt-get install npm
安装 PM2 可以使用以下两个命令:
$ npm install pm2 -g // 全局安装 $ npm install pm2 // 在项目目录下安装
接下来,需要创建 PM2 的配置文件来设置你的 Node.js 进程。在项目目录下创建名为 pm2.config.js
的文件,并在其中增加相应配置:
// javascriptcn.com 代码示例 module.exports = { apps: [{ name: 'your_app_name', script: './app.js', instances: 'max', exec_mode: 'cluster', max_memory_restart: '200M', env: { NODE_ENV: 'production' } }] }
name
是进程的名字,这里自定义填写你的应用名称。script
是应用的入口文件路径,这里假设为 app.js。instances
是进程的个数,如果值为 'max' 则表示按照 CPU 核芯数自动分配,默认为 1。exec_mode
是进程运行的模式,可以是fork
或者cluster
,前者是在单进程模式下运行,后者是多进程模式,这里选择多进程。max_memory_restart
是进程占用的最大内存,如果超过这个值则会自动重启进程。env
是应用的环境变量,这里设置为生产环境。
PM2 的基本命令
- 启动应用:
pm2 start pm2.config.js
- 停止应用:
pm2 stop your_app_name
- 重启应用:
pm2 restart your_app_name
- 查看进程列表:
pm2 list
更多的 PM2 命令请参照官网文档:https://pm2.keymetrics.io/docs/usage/pm2-doc-single-page/
PM2 的高可用和负载均衡
PM2 支持多进程模式,在多进程模式下,就可以实现负载均衡和高可用。一个 PM2 进程实例对应一个工作进程,我们可以通过系统的 CPU 核心数来设置进程数来达到负载均衡和并发处理的目的。
// javascriptcn.com 代码示例 module.exports = { apps: [{ name: 'your_app_name', script: './app.js', instances: 'max', exec_mode: 'cluster', max_memory_restart: '200M', env: { NODE_ENV: 'production' } }] }
在上述配置中,instances
值为 max
,表示 PM2 会根据 CPU 的核数来启动相应数量的进程,从而实现负载均衡和高并发。
PM2 的日志管理
PM2 可以很方便地管理进程的日志,可以输出到控制台或者文件中。在 PM2 的配置文件中,设置相应的日志路径即可。
// javascriptcn.com 代码示例 module.exports = { apps: [{ name: 'your_app_name', script: './app.js', instances: 'max', exec_mode: 'cluster', max_memory_restart: '200M', env: { NODE_ENV: 'production' }, out_file: '/path/to/your_app.log', error_file: '/path/to/your_app_err.log' }] }
PM2 的监控和警报
PM2 还提供了监控和警报的功能,可以通过一系列的指标来监控应用程序的运行状态。在 PM2 的配置文件中,设置相应指标的阈值和报警方式。
// javascriptcn.com 代码示例 module.exports = { apps: [{ name: 'your_app_name', script: './app.js', instances: 'max', exec_mode: 'cluster', max_memory_restart: '200M', env: { NODE_ENV: 'production' }, watch: true, watch_options: { ignored: /node_modules/, usePolling: true }, max_restarts: '5', min_uptime: '1000', autorestart: true, error_file: '/path/to/your_app_err.log', done: function() { console.log('App is online') // 可以发送邮件或者短信等方式来实现警报功能 } }] }
在上述配置中,设置了以 pm2 自带的监控指标来监控应用程序的运行状态,并且当应用程序意外停止时 PM2 会自动重启该应用程序。
总结
本文主要介绍了 PM2 的部署实战,包括安装及配置、基本命令、高可用和负载均衡、日志管理、监控和警报等内容。学习 PM2 的部署实战可以让我们更好地管理 Node.js 进程,提高网站的可用性、稳定性和质量,同时也可以增加我们的运维技能,提高我们在市场上的竞争力。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/652f86387d4982a6eb0ac82a