首页主机资讯Node.js在Debian上的自动化测试与部署

Node.js在Debian上的自动化测试与部署

时间2025-11-19 21:49:03发布访客分类主机资讯浏览1128
导读:Node.js在Debian上的自动化测试与部署 一 环境准备与版本管理 在 Debian 上安装 Node.js 的推荐方式是使用 NodeSource 官方仓库,便于精确选择 LTS 版本(如 20.x、22.x),避免系统自带仓库版...

Node.js在Debian上的自动化测试与部署

一 环境准备与版本管理

  • Debian 上安装 Node.js 的推荐方式是使用 NodeSource 官方仓库,便于精确选择 LTS 版本(如 20.x22.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
  • 方式二 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();
  • 零停机建议:
    • 多实例 + 优雅停机(如 PM2 集群模式 rolling restart)
    • 蓝绿或金丝雀发布(结合 Nginx upstream 切换或负载均衡权重)
    • 健康检查与回滚策略(脚本化检测与自动切回)

五 一键化落地清单

  • Debian 上安装并锁定 Node.js 22.x(NodeSource)
  • 初始化项目与依赖,接入 Mocha/Chai 单元测试,配置 GitHub Actions 执行测试
  • 服务器安装 Nginx + PM2,配置反向代理与开机自启
  • 采用 PM2 deploynode-ssh 脚本实现自动化发布,结合健康检查与回滚
  • 配置 UFW 防火墙与 Let’s Encrypt 证书,启用 HTTPS
  • 建议将敏感信息(SSH 私钥、环境变量)纳入 CI/CD Secrets 或受管密钥存储,避免明文存放

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Node.js在Debian上的自动化测试与部署
本文地址: https://pptw.com/jishu/751616.html
Debian中inotify限制是多少 Node.js在Debian上的数据库连接

游客 回复需填写必要信息