在 Debian 中管理 Node.js 项目的实用流程
一 安装与版本管理
- 使用 APT 安装稳定版
- 更新索引并安装:sudo apt update && sudo apt install -y nodejs npm
- 验证版本:node -v、npm -v
- 使用 NodeSource 安装更新版本(示例为 Node.js 16.x)
- 添加仓库并安装:curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash - && sudo apt-get install -y nodejs
- 使用 NVM 管理多版本
- 安装 NVM:curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
- 重载环境:source ~/.bashrc
- 安装与切换:nvm install 16 && nvm use 16
- 查看远程版本:nvm ls-remote
以上方式可覆盖稳定、较新与多版本并存的需求,便于开发与生产环境切换。
二 项目初始化与依赖管理
- 初始化项目:npm init -y(生成 package.json)
- 安装依赖
- 生产依赖:npm install express body-parser
- 开发依赖:npm install --save-dev nodemon eslint
- 更新与移除
- 更新:npm update
- 移除:npm uninstall express
- 锁定版本
- 安装时自动生成 package-lock.json,用于确保不同环境安装一致版本;建议纳入版本控制,切勿忽略。
三 运行与进程守护
- 直接运行(开发)
- 启动:node app.js 或指定路径:node /path/to/app.js
- 使用 PM2(生产推荐)
- 全局安装:sudo npm install -g pm2
- 启动应用:pm2 start app.js --name “my-app”
- 常用命令:pm2 list/status、pm2 logs my-app、pm2 restart/stop/delete my-app
- 开机自启:执行 pm2 startup,按提示运行生成的命令,然后 pm2 save 持久化进程列表
- 使用 systemd(系统级服务)
四 反向代理与对外发布(Nginx)
五 生产实践清单
- 使用 .env 管理配置,避免硬编码;在 systemd 中通过 Environment= 注入关键变量(如 NODE_ENV=production)。
- 选择用户与权限:服务尽量以非 root运行(如 www-data),并确保工作目录与日志目录可写。
- 日志与监控:PM2 日志命令 pm2 logs;如需系统级日志,使用 journalctl -u node.service;可按需接入 Prometheus/Grafana。
- 安全加固:限制端口仅本地访问(如 127.0.0.1:3000),对外仅暴露 80/443;为域名配置 TLS/HTTPS(可用 Certbot)。
- 依赖与构建:锁定版本(package-lock.json),区分 dependencies/devDependencies;前端资源先构建再部署。
- 持续交付:使用 Git 拉取代码、npm ci 安装精确依赖、执行构建与迁移,最后用 PM2 或 systemd 平滑重启。