Node.js 是单进程事件驱动模型,一旦进程崩溃服务就会中断,因此进程守护是 Node 项目上线的必备环节。本文用 PM2 守护进程、Nginx 做反向代理,把 Node 源码稳定地跑起来。
一、安装 Node.js
推荐用 nvm 管理版本,方便切换与回退:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install 20 && nvm use 20
验证:node -v 与 npm -v。
二、拉取源码并安装依赖
cd /www/wwwroot
git clone https://github.com/your/repo.git app
cd app && npm install --production
生产环境优先用 npm ci(有 lock 文件时),保证依赖版本完全一致。
三、用 PM2 守护进程
npm install -g pm2
pm2 start app.js --name myapp -i max # 按 CPU 核数起多实例
pm2 save && pm2 startup # 设置开机自启
常用命令:pm2 status 看状态、pm2 logs myapp 看日志、pm2 restart myapp 重启。
四、环境变量管理
不要硬编码密钥,用 ecosystem.config.js 集中管理:
module.exports = {
apps: [{
name: 'myapp',
script: 'app.js',
env: { NODE_ENV: 'production', PORT: 3000, DB_URL: '...' }
}]
};
五、Nginx 反向代理 + HTTPS
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
注意:Nginx 只监听 80/443,Node 应用监听 3000 并仅绑定 127.0.0.1,避免端口直接暴露。HTTPS 证书配置与其他服务一致,代理到同端口即可。
六、日志与监控
- PM2 日志:
pm2 logs --lines 100。 - 配置日志轮转:
pm2 install pm2-logrotate,避免日志撑爆磁盘。 - 内存异常自动重启:
pm2 start app.js --max-memory-restart 300M。
进程守护 + 反向代理是 Node 上线的标准姿势。PM2 解决「崩了谁来拉起」,Nginx 解决「入口和 HTTPS」,两者分工明确,缺一不可。
感谢分享,我在源码部署方面学到了很多新知识。
教程中提到的HTTPS配置步骤清晰,对于初学者来说非常友好。
这篇文章对Node.js项目的部署实战讲解得非常详细,特别是PM2进程守护和Nginx反向代理的配置,让我受益匪浅。