在CentOS服务器上部署和管理Node.js应用时,一个高效的工具能显著提升运维效率,PM2作为一款流行的进程管理器,专为Node.js设计,提供自动重启、负载均衡和监控功能,帮助开发者轻松维护应用稳定性,对于使用CentOS系统的用户来说,掌握PM2的安装和使用方法,不仅能优化资源利用,还能减少手动干预的麻烦。

确保您的CentOS系统已更新到最新状态,通过SSH登录服务器后,运行以下命令更新系统包:
sudo yum update -y 这能保证系统安全性和兼容性,安装Node.js,因为PM2依赖于Node.js环境,建议使用NodeSource仓库来获取最新版本,添加仓库并安装Node.js:
curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -
sudo yum install -y nodejs 安装完成后,验证Node.js和npm版本:
node -v
npm -v 如果输出显示版本号,说明安装成功,可以通过npm全局安装PM2:
sudo npm install pm2 -g 这个命令会将PM2添加到系统路径,允许在任何目录下使用,安装完毕后,运行pm2 --version检查是否就绪。
PM2的核心功能在于管理应用进程,假设您有一个Node.js应用,例如一个简单的Express服务器,位于/home/user/app目录,首先进入该目录,然后启动应用:
pm2 start app.js --name "my-app" 这里的--name参数为进程指定一个易识别的名称,PM2会自动在后台运行应用,并监控其状态,如果应用崩溃,PM2会立即重启它,确保高可用性,要查看当前运行的所有进程,使用:
pm2 list 这个命令显示每个进程的ID、状态和资源使用情况,便于实时监控。

除了基本管理,PM2还支持日志记录,帮助调试和追踪问题,默认情况下,日志存储在~/.pm2/logs/目录中,您可以查看实时日志:
pm2 logs my-app 或者,使用pm2 flush清理旧日志,释放磁盘空间,对于生产环境,配置日志轮转是明智之举,防止日志文件过大,通过PM2的模块系统,可以安装额外工具,例如pm2-logrotate:
pm2 install pm2-logrotate 这个模块自动压缩和归档日志,优化存储。
另一个实用特性是PM2的集群模式,它能利用多核CPU提升性能,如果您的应用支持集群,只需在启动时添加-i参数:
pm2 start app.js -i max --name "my-app" 这里的max表示使用所有可用CPU核心,PM2会自动创建多个实例,并在它们之间分配负载,提高应用吞吐量,要监控系统资源,使用pm2 monit命令,它会打开一个实时仪表板,显示CPU、内存和网络使用情况。
在CentOS上,确保PM2在系统重启后自动启动是关键步骤,生成启动脚本:
pm2 startup 这个命令会输出一个类似sudo env PATH=$PATH:/usr/bin pm2 startup centos -u user --hp /home/user的指令,复制并运行它,保存当前PM2进程列表:
pm2 save 这样,服务器重启时,PM2会自动恢复所有托管应用,注意,根据您的CentOS版本(如7或8),启动脚本可能略有不同,但PM2通常能自适应。

安全方面,在CentOS上使用PM2时,建议配置防火墙规则,仅允许必要端口访问,如果应用运行在3000端口,使用firewalld开放它:
sudo firewall-cmd --permanent --add-port=3000/tcp
sudo firewall-cmd --reload 定期更新PM2和Node.js,以修复潜在漏洞,运行npm update pm2 -g升级PM2,并关注官方公告获取安全补丁。
对于高级用户,PM2的生态系统文件允许定义多个应用和配置,创建一个ecosystem.config.js文件:
module.exports = {
apps: [{
name: 'my-app',
script: 'app.js',
instances: 2,
env: {
NODE_ENV: 'development'
},
env_production: {
NODE_ENV: 'production'
}
}]
}; 使用pm2 start ecosystem.config.js --env production启动应用,这种方式简化了复杂部署,并支持环境变量管理。
从个人经验来看,PM2在CentOS上的集成极大地简化了Node.js应用的运维工作,它不仅仅是工具,更是生产环境的守护者,减少了人为错误和停机时间,如果您正在构建高可用服务,投入时间学习PM2的高级功能,如自定义钩子和监控集成,会带来长期回报,稳定性和效率往往源于细节的打磨,而PM2正是这样一个值得信赖的伙伴。
