linux部署node.js应用的核心是三步:装对node.js/npm环境(推荐nodesource脚本)、上传代码并npm install --production安装依赖、用pm2启动守护(pm2 start npm --name "app" -- start)并配置nginx反向代理暴露服务。

Linux 服务器上部署 Node.js 并用 PM2 管理应用,核心是三件事:装对环境、跑稳服务、管住进程。不用 Docker、不配 systemd,5 分钟就能让项目真正“上线”。
装好 Node.js 和 npm
先确认基础运行环境就位:
- 执行 node -v 和 npm -v,有输出版本号说明已安装
- 若未安装,推荐用 NodeSource 脚本(兼容 Ubuntu/Debian/CentOS):
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt install -y nodejs(Ubuntu/Debian)或
sudo yum install -y nodejs(CentOS/RHEL) - 避免用系统包管理器装旧版;如需多版本切换,可用 nvm,但生产环境建议固定 LTS 版本
上传代码并安装依赖
把项目放到服务器后,确保能正常启动:
- 用 scp -r ./myapp user@ip:/home/user/app 或 git clone 拉取代码
- 进入目录:cd /home/user/app
- 运行 npm install --production —— 只装
dependencies,跳过开发依赖,更轻量安全 - 检查
package.json中的"start"脚本是否正确,例如:"start": "node server.js"或"start": "npm run dev"
用 PM2 启动并守护服务
PM2 让 Node 进程脱离终端、崩溃自启、开机运行:
- 全局安装:npm install pm2 -g
- 启动应用:pm2 start npm --name "myapp" -- start
(-- start对应 package.json 的scripts.start;若用dev,则写-- dev) - 查看状态:pm2 status,确认
Status列为online - 设置开机自启:pm2 startup,再执行它输出的那条命令(如
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u youruser --hp /home/youruser) - 保存当前进程列表:pm2 save
配置 Nginx 反向代理(对外暴露)
Node 默认只监听 localhost,必须通过 Nginx 转发请求:
- 修改应用代码,监听地址设为 0.0.0.0(不是 127.0.0.1),端口统一用
process.env.PORT || 3000 - 编辑 Nginx 配置(如
/etc/nginx/sites-available/myapp):location / {<br> proxy_pass http://127.0.0.1:3000;<br> proxy_http_version 1.1;<br> proxy_set_header Upgrade $http_upgrade;<br> proxy_set_header Connection 'upgrade';<br> proxy_set_header Host $host;<br> proxy_cache_bypass $http_upgrade;<br>} - 启用配置:ln -sf /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx - 防火墙只开放 80 和 443,Node 的端口(如 3000)无需对外暴露
日常维护看日志:pm2 logs myapp;重启更新:pm2 reload myapp。关键点就两个:监听地址写 0.0.0.0,Nginx 转发走内网回环。配完一次,后续部署基本就是改代码 + reload。











