Nodejs 利用 nginx 实现的 eggjs 热部署工具
Nodejs 利用 nginx 实现的 eggjs 热部署工具
介绍在此: https://zhuanlan.zhihu.com/p/36439661
目前相对简陋,欢迎使用、建议。
3 回复
单机就没多大意义了
如果你是多机部署有负载均稀当然就用不上了啊。大多数中小项目还是单机的,zero downtime 还是有意义的。
在 Node.js 生态系统中,Egg.js 是一个企业级框架,通过结合 Nginx 可以实现高效的热部署。热部署允许在不中断服务的情况下更新应用代码。下面是一个简单的实现方案:
-
安装 Nginx:确保你的服务器上已经安装了 Nginx。可以通过
sudo apt-get install nginx
(Ubuntu/Debian)或sudo yum install nginx
(CentOS)来安装。 -
配置 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; } }
-
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
实现了应用代码的热重载。这样,你可以在不中断服务的情况下更新应用代码。