6、openresty:nginx平滑升级

把服务器从低版本升级为高版本,强行停止服务器,会影响正在运行的进程。

平滑升级不会停掉正在进行中的进程,这些进程会继续处理请求。但不会再接受新请求,这些老的进程在处理完请求之后 会停止。此平滑升级过程中,新开的进程会被处理。

一、平滑升级

进入nginx可执行程序的目录

#  cd /usr/local/nginx/sbin/
# ./nginx -V  #查看nginx版本

1、下载高版本nginx http://nginx.org/download/nginx-1.13.1.tar.gz

执行指令

#  ./configure
# make    #不能执行 make install
# cd objs

此目录下 有高版本的nginx
备份低版本的nginx

cp nginx nginx.old

执行强制覆盖

cp -rfp objs/nginx /usr/local/nginx/sbin

测试一下新复制过来文件生效情况:

# /usr/local/nginx/sbin/nginx -t
# ps -ef | grep nginx

2、执行信号平滑升级

# kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`  更新配置文件

给nginx发送USR2信号后,nginx会将logs/nginx.pid文件重命名为nginx.pid.oldbin,然后用新的可执行文件启动一个新的nginx主进程和对应的工作进程,并新建一个新的nginx.pid保存新的主进程号

# ps -ef | grep nginx
# ll logs/

3、kill -WINCH 旧的主进程号

旧的主进程号收到WINCH信号后,将旧进程号管理的旧的工作进程优雅的关闭。即一段时间后旧的工作进程全部关闭,只有新的工作进程在处理请求连接。这时,依然可以恢复到旧的进程服务,因为旧的进程的监听socket还未停止。
处理完后,工作进程会自动关闭

# ps -ef | grep nginx

4、 优雅的关闭

# kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`

给旧的主进程发送QUIT信号后,旧的主进程退出,并移除logs/nginx.pid.oldbin文件,nginx的升级完成。

升级完成了,最后在看一下升级后的版本

查看

./nginx -V

已经平滑升级成功

二、中途停止升级,回滚到旧的nginx

在步骤(3)时,如果想回到旧的nginx不再升级

(1)、给旧的主进程号发送HUP命令,此时nginx不重新读取配置文件的情况下重新启动旧主进程的工作进程。

kill -HUP 9944 --旧主进程号

重启工作进程

(2)、优雅的关闭新的主进程

kill -QUIT 10012  --新主进程号
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值