"Nginx 在不停掉老进程的情况下 升级版本启动新进程 老进程负责处理仍然没有处理完的请求,新进程接替老进程开始接收请求 ./nginx -V # 查看当前版本 cp /usr/local/server/nginx/sbin/nginx nginx.old # 备份旧版本的可执行文件 # 下载最新 Nginx 并编译, .."

Nginx Smooth Upgrade

Nginx 在不停掉老进程的情况下 升级版本启动新进程 老进程负责处理仍然没有处理完的请求,新进程接替老进程开始接收请求

./nginx -V  # 查看当前版本
cp /usr/local/server/nginx/sbin/nginx nginx.old # 备份旧版本的可执行文件

# 下载最新 Nginx 并编译,要注意的是只执行 make 时 不能紧接着 make install  这样会覆盖你的二进制文件 这里只升级版本 
wget http://nginx.org/download/nginx-1.14.0.tar.gz  
tar xf nginx-1.14.0.tar.gz  
cd  nginx-1.14.0/

./configure --prefix=/usr/local/server/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module  # 最后一个模块是新增的 获取后端真实 IP 地址

make  # 千万不要 make install  

# 拷贝新的可执行文件到旧版本的目录下
cp -rfp nginx-1.14.0/objs/nginx  /usr/local/server/nginx/sbin/  

# 检查配置文件有没有错误
./nginx -t  

# 发送信号给旧 master 进程 接着启动新进程
kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`  

# 发送 WINCH 给旧 master 让他优雅的退出 (因为发送 USR2 信号之后 旧 master 进程会重名为 nginx.pid.oldbin)
kill -WINCH `cat /usr/local/nginx/logs/nginx.pid.oldbin` 

# 当旧 master 进程接受完所有之前的剩余请求之后 就可以发送 QUIT 让其退出即可
kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin` 

#如果升级失败 新 master 进程没有接受请求 可以用下面 2 种方式快速回退
# 发送 HUP 信号给旧 master 进程。旧 master 进程会在不重新读取配置文件的情况下直接启动新的 worker 进程。然后就可以发送 QUIT 信号给新 master 进程,使所有新进程可以优雅退出。
    kill -HUP 15023
    kill -QUIT 15130
#发送 TERM 信号给新 master 进程。新 master 进程发送信号关闭所有的 worker 进程(如果因为某些原因新的进程没有退出,就得发送 KILL 信号强制退出了)。当新 master 进程退出后,旧 master 进程会自动启动它的 worker 进程。
    kill -TERM 15130
    kill -9 15130

  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:PipeSoloSymWide 等,欢迎大家加入,贡献开源。

    2405 引用 • 3795 回帖 • 623 关注
  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    186 引用 • 405 回帖 • 746 关注
感谢    关注    收藏    赞同    反对    举报    分享
回帖    
请输入回帖内容...