Nodejs 利用 nginx 实现的 eggjs 热部署工具

发布于 1周前 作者 yuanlaile 来自 nodejs/Nestjs

Nodejs 利用 nginx 实现的 eggjs 热部署工具
介绍在此: https://zhuanlan.zhihu.com/p/36439661

目前相对简陋,欢迎使用、建议。

3 回复

单机就没多大意义了


如果你是多机部署有负载均稀当然就用不上了啊。大多数中小项目还是单机的,zero downtime 还是有意义的。

在 Node.js 生态系统中,Egg.js 是一个企业级框架,通过结合 Nginx 可以实现高效的热部署。热部署允许在不中断服务的情况下更新应用代码。下面是一个简单的实现方案:

  1. 安装 Nginx:确保你的服务器上已经安装了 Nginx。可以通过 sudo apt-get install nginx(Ubuntu/Debian)或 sudo yum install nginx(CentOS)来安装。

  2. 配置 Nginx: 编辑 Nginx 配置文件(通常位于 /etc/nginx/sites-available/default/etc/nginx/nginx.conf),添加或修改以下内容以反向代理到 Egg.js 应用:

    server {
        listen 80;
        server_name your_domain.com;
    
        location / {
            proxy_pass http://127.0.0.1:7001;  # Egg.js 默认端口
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
    
  3. Egg.js 热部署: Egg.js 提供了基于 pm2 的热重载功能。安装 pm2 后,可以通过以下命令启动 Egg.js 应用并启用热重载:

    npm install pm2 -g
    pm2 start --name my-egg-app --watch dev.js  # dev.js 是你的 Egg.js 启动脚本
    

    使用 --watch 参数可以监听文件变化并自动重启应用。

通过上述配置,Nginx 会将请求转发到运行中的 Egg.js 应用,而 pm2 实现了应用代码的热重载。这样,你可以在不中断服务的情况下更新应用代码。

回到顶部