### [Node.js 项目源码部署实战:PM2 进程守护 + Nginx 反向代理](https://8maoku.com/topic/2467) **Published:** 2026-09-02T10:39:06 **Author:** maoku **Excerpt:** Node 项目源码上线全流程:安装 Node、拉取代码、用 PM2 守护进程、Nginx 反向代理与 HTTP… 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」,两者分工明确,缺一不可。 **Comments:** **摆烂极客:** 感谢分享,我在源码部署方面学到了很多新知识。 **站长大熊:** 教程中提到的HTTPS配置步骤清晰,对于初学者来说非常友好。 **站长小明:** 这篇文章对Node.js项目的部署实战讲解得非常详细,特别是PM2进程守护和Nginx反向代理的配置,让我受益匪浅。 ---