引言
在生产环境中,Node.js服务需要保持长期稳定运行,避免因终端关闭、进程崩溃或服务器重启而导致服务中断。本文将介绍常见的后台常驻运行运维配置方法,帮助运维人员快速搭建可靠的Node服务运行环境。
为何需要后台常驻运行
- 避免终端依赖:常规启动方式(如
node app.js)会随终端会话结束而终止,无法满足生产要求。 - 自动恢复:进程意外崩溃后需自动重启,减少人工介入。
- 资源管理:支持日志管理、性能监控、集群部署等高级运维需求。
常用运维工具
- PM2:最流行的Node进程管理器,支持负载均衡、零停机重载、日志分割等。
- Forever:轻量级守护工具,适合简单场景。
- Systemd:Linux原生服务管理器,可实现开机自启与进程监控。
PM2配置示例
安装与启动
全局安装PM2:npm install pm2 -g。使用 pm2 start app.js --name my-app 启动服务。
进程文件配置
推荐创建 ecosystem.config.js 管理多个应用:
module.exports = {
apps: [{
name: 'my-app',
script: './app.js',
instances: 2,
exec_mode: 'cluster',
env: {
NODE_ENV: 'production'
},
error_file: './logs/err.log',
out_file: './logs/out.log',
log_date_format: 'YYYY-MM-DD HH:mm Z'
}]
};
常用命令
pm2 list:查看所有进程状态pm2 logs:实时查看日志pm2 reload all:重载所有进程(零停机)pm2 startup:设置开机自启
使用Systemd实现自启动
在Linux系统中,可直接编写systemd服务单元文件,无需额外依赖。示例文件 /etc/systemd/system/node-app.service:
[Unit]
Description=Node.js App
After=network.target
[Service]
Type=simple
User=nodeuser
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/node /opt/myapp/app.js
Restart=on-failure
RestartSec=10
StandardOutput=syslog
StandardError=syslog
[Install]
WantedBy=multi-user.target
启用服务:systemctl enable node-app,启动:systemctl start node-app。
日志与监控
日志管理
- 使用PM2内置日志轮转功能(
pm2-logrotate插件) - 或配置logrotate系统工具统一管理日志文件
监控告警
- 结合
pm2 monit 实时查看CPU/内存 - 集成第三方监控(如Prometheus + Node exporter)
- 设置进程存活检查(如心跳接口)
总结
通过合理选择PM2或systemd等工具,并配置日志、自动重启、开机自启等策略,可有效保障Node服务在生产环境中的稳定运行。IDC运维人员应根据实际需求组合使用,并定期审视进程状态与日志,确保服务高可用。