核心是装对Node.js版本并用PM2持久化运行:推荐nvm安装LTS版(如v24.18.0),上传代码后npm install --production,再pm2 start server.js --name "my-api"启动,执行pm2 save和pm2 startup systemd配置开机自启,最后建议用Nginx反向代理暴露服务。

Linux 服务器上部署 Node.js 应用,核心是两件事:装对版本的 Node.js,并用 PM2 让它稳稳跑下去。不靠终端、不随重启中断、出错能自恢复——这才是生产环境该有的样子。
安装 Node.js(推荐用 nvm 管理)
直接用系统包管理器(如 apt/yum)安装的 Node.js 版本往往老旧,且无法多版本共存。nvm 是更科学的选择,尤其适合后续要维护多个项目或升级降级的场景。
- 执行命令一键安装 nvm:curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
- 重新加载 shell 配置:source ~/.bashrc(或 ~/.zshrc)
- 安装并启用 LTS 版本(如 v24.18.0):nvm install --lts && nvm use --lts
- 验证:node -v 和 npm -v 应输出对应版本号
上传代码并安装依赖
别在服务器上写代码,而是把本地开发好的项目整包传上去,再装依赖。注意区分开发与生产环境。
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 用 scp 或 SFTP 工具把项目目录上传到服务器固定路径,例如:/home/deploy/myapp
- SSH 登录后进入该目录:cd /home/deploy/myapp
- 只装生产依赖(跳过 devDependencies):npm install --production
- 确认入口文件存在(如 server.js、app.js 或 package.json 中定义的 start 脚本)
用 PM2 启动并守护进程
PM2 不只是“后台运行”,它提供崩溃自动重启、日志归档、内存监控和开机自启能力,是 Node.js 生产部署的事实标准。
- 全局安装(当前用户下即可,无需 sudo):npm install pm2 -g
- 启动应用(以 server.js 为例):pm2 start server.js --name "my-api"
- 若项目用 npm start 启动:pm2 start npm --name "my-api" -- start
- 查看状态:pm2 status,确保 status 列显示 online
- 保存当前进程列表,为开机自启做准备:pm2 save
- 配置开机自启(按提示执行生成的命令,通常是 pm2 startup systemd)
补充:Nginx 反向代理(可选但强烈建议)
Node.js 默认监听 localhost:3000 这类端口,不能直接暴露给公网。Nginx 做反向代理,既能绑定域名、启用 HTTPS,又能处理静态资源、负载均衡和请求缓冲。
- 安装 Nginx:sudo apt install nginx(Ubuntu)或 sudo yum install nginx(CentOS)
- 编辑站点配置(如 /etc/nginx/sites-available/myapp),添加如下内容:
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
- 启用配置、重载 Nginx:sudo ln -sf /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/ && sudo nginx -t && sudo systemctl reload nginx

















