本文将讲述一种在线上环境下更新 tornado 项目代码的方法。
一般 tornado HTTP 服务都类似下面这样的:
- 用 nginx 做反向代理、负载均衡和静态文件服务器
- 同时起多个 tornado 进程服务多个端口
假设配置文件如下:
upstream tornado_server { server 127.0.0.1:5001; }
线上重启 tornado 服务的思路如下:
更新代码
使用不同的端口启动新的 tornado 服务: start tornado_5002
更改 nginx 配置,将新端口加入到配置中,降低旧服务端口的权重:
upstream tornado_server { server 127.0.0.1:5001; # old server 127.0.0.1:5002 weight=9; # add new }
应用新的 nginx 配置(注意看是否有错误提示): nginx -t && nginx -s reload
一段时间后,更新 nginx 配置,删除/注释掉旧服务的端口配置:
upstream tornado_server { # server 127.0.0.1:5001; # remove old server 127.0.0.1:5002; # new }
应用新的 nginx 配置(注意看是否有错误提示): nginx -t && nginx -s reload
一段时间后,停止旧的 tornado 服务: stop tornado_5001
Comments