Node.js在Debian上的自动化测试与部署
导读:Node.js在Debian上的自动化测试与部署 一 环境准备与版本管理 在 Debian 上安装 Node.js 的推荐方式是使用 NodeSource 官方仓库,便于精确选择 LTS 版本(如 20.x、22.x),避免系统自带仓库版...
Node.js在Debian上的自动化测试与部署
一 环境准备与版本管理
- 在 Debian 上安装 Node.js 的推荐方式是使用 NodeSource 官方仓库,便于精确选择 LTS 版本(如 20.x、22.x),避免系统自带仓库版本过旧。示例(以 22.x 为例):
- 安装依赖与添加仓库:
- sudo apt update & & sudo apt install -y curl
- curl -fsSL https://deb.nodesource.com/setup_22.x -o nodesource_setup.sh
- sudo -E bash nodesource_setup.sh
- 安装运行时与验证:
- sudo apt install -y nodejs
- node -v 与 npm -v 应显示 22.x 与对应 npm 版本
- 安装依赖与添加仓库:
- 如需多版本并存与切换,可使用 NVM(Node Version Manager),适合开发与预发布环境快速切换版本。
二 自动化测试流水线
- 安装测试框架与断言库(以 Mocha + Chai 为例):
- npm install --save-dev mocha chai
- 示例测试(test/app.test.js):
- const { expect } = require(‘chai’); const app = require(‘…/app’); describe(‘App’, () => { it(‘should return “Hello World!”’, () => { expect(app()).to.equal(‘Hello World!’); } ); } );
- 运行测试:
- npx mocha test/**/.test.js 或 ./node_modules/.bin/mocha test/.js
- 持续集成建议接入 GitHub Actions / GitLab CI / Jenkins,在每次提交或合并请求时自动执行测试,保障变更质量。
三 部署方案与进程管理
- 进程管理:使用 PM2 管理 Node.js 进程,支持守护、日志、监控与开机自启。
- 全局安装:sudo npm install -g pm2
- 启动应用:pm2 start app.js --name my-app
- 常用命令:pm2 status、pm2 logs my-app、pm2 monit
- 开机自启:pm2 startup(按提示执行生成的命令)
- 反向代理与域名接入:使用 Nginx 作为反向代理,将请求转发至应用端口(如 3000)。
- 安装:sudo apt install nginx
- 站点配置(/etc/nginx/sites-available/your-project):
- server { listen 80; server_name your-domain.com; location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection ‘upgrade’; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
- 启用与生效:
- sudo ln -s /etc/nginx/sites-available/your-project /etc/nginx/sites-enabled/
- sudo nginx -t & & sudo systemctl reload nginx
- 安全与证书:
- 防火墙放行:sudo ufw allow ‘Nginx Full’ & & sudo ufw enable
- HTTPS:sudo apt install certbot python3-certbot-nginx & & sudo certbot --nginx -d your-domain.com
四 自动化部署脚本与零停机发布
- 方式一 PM2 内置部署(适合简单场景)
- 在 package.json 中配置 deploy 目标(示例为 production),使用 SSH 拉取与重启:
- “scripts”: { “deploy”: “pm2 deploy production update” }
- 常用命令:
- 首次初始化:pm2 deploy production setup
- 更新发布:pm2 deploy production update
- 在 package.json 中配置 deploy 目标(示例为 production),使用 SSH 拉取与重启:
- 方式二 Node.js 脚本 + SSH(灵活可控)
- 使用 node-ssh 通过 SSH 执行远程命令与传输文件,实现拉取代码、安装依赖、重启服务:
- 安装:pnpm add node-ssh(或 npm i node-ssh)
- 示例:
- const { NodeSSH } = require(‘node-ssh’); const ssh = new NodeSSH(); await ssh.connect({ host, username, privateKey: ‘/path/id_rsa’ } ); await ssh.execCommand(‘git -C /var/www/app pull origin main’); await ssh.execCommand(‘npm --prefix /var/www/app ci --only=production’); await ssh.execCommand(‘pm2 restart my-app’); ssh.dispose();
- 使用 node-ssh 通过 SSH 执行远程命令与传输文件,实现拉取代码、安装依赖、重启服务:
- 零停机建议:
- 多实例 + 优雅停机(如 PM2 集群模式 rolling restart)
- 蓝绿或金丝雀发布(结合 Nginx upstream 切换或负载均衡权重)
- 健康检查与回滚策略(脚本化检测与自动切回)
五 一键化落地清单
- 在 Debian 上安装并锁定 Node.js 22.x(NodeSource)
- 初始化项目与依赖,接入 Mocha/Chai 单元测试,配置 GitHub Actions 执行测试
- 服务器安装 Nginx + PM2,配置反向代理与开机自启
- 采用 PM2 deploy 或 node-ssh 脚本实现自动化发布,结合健康检查与回滚
- 配置 UFW 防火墙与 Let’s Encrypt 证书,启用 HTTPS
- 建议将敏感信息(SSH 私钥、环境变量)纳入 CI/CD Secrets 或受管密钥存储,避免明文存放
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Node.js在Debian上的自动化测试与部署
本文地址: https://pptw.com/jishu/751616.html
