1. 按项目要求选择受支持版本#
先看项目的 package.json 中 engines、README 和锁文件,选择仍受支持的 Node.js LTS。不要因为系统源能安装某个旧版本,就假设它满足现代应用要求;Current 也不一定是生产项目最合适的选择。
node --version
npm --version
command -v node
uname -m安装方式可选官方二进制、可信版本管理器或应用官方容器。使用 Node.js 官方下载页给出的当前版本与架构,核对校验值;不同方式不要互相覆盖同一路径。
2. 下载项目并检查安装脚本#
以普通部署用户获取代码,先查看 package.json 的 scripts 与依赖,确认项目来源。npm 安装可以执行生命周期脚本,因此不能把未知仓库当成纯文本下载后直接 root 安装。
有 package-lock.json 的项目通常使用:
npm ci
npm runnpm ci 按锁文件安装,锁文件与 package.json 不一致会失败,应在开发环境解决后提交,不要上线时随意删锁文件。使用 pnpm/yarn 的项目按它自己的锁文件和版本配置执行,不混用多套包管理器。
3. 构建与启动分开验证#
npm run build
npm start这些命令只有项目定义了对应 scripts 才适用。先阅读实际脚本,确认输出目录和监听端口。开发服务器的热更新模式通常不作为正式生产入口。
应用先监听本地地址,例如 127.0.0.1:3000,在服务器用 curl 检查健康接口,再由反向代理接 HTTPS。前端构建中的环境变量可能被打进浏览器包,不能把私有 API Key 放在公开前缀变量里。
4. 交给进程管理器持续运行#
按systemd 教程设置专用用户、工作目录和实际 Node 路径。用版本管理器安装时,systemd 不会自动加载 .bashrc,应指向确定的可执行文件,或使用明确的启动包装脚本。
systemctl status myapp
journalctl -u myapp -n 50 --no-pager
curl -I http://127.0.0.1:3000/WebSocket、流式响应和长任务需按应用要求设置反向代理,避免默认超时切断。端口占用时先查已有服务,不要杀掉所有 node 进程。
5. 更新时保留代码、依赖和数据的回退点#
记录 Git 提交与 Node 版本,备份数据库、上传文件和环境配置,再构建新版本。依赖漏洞报告要结合实际可达路径和修复影响处理,不能盲目 npm audit fix --force 跨大版本升级。
上线后测试登录、API、静态文件和任务执行,观察日志与内存。回退代码不一定能回退数据库迁移,按应用发布说明处理。容器方案见Compose 管理。
完成后检查
记录运行版本与锁文件。不要直接在生产机上无范围地升级所有依赖。