1、平滑升级
nginx之前版本1.20.2,下载新的版本1.21.6,并从原版本平滑升级到1.21.6,平滑升级过程nginx不用停止
下载1.21.6版本,解压;./configure和原版本命令相同;make编译(不要make install)
老进程由于做过隐藏版本处理,curl -I localhost访问显示server/;新进程会显示版本nginx/1.21.6
在nginx安装目录里面,备份原程序:(不能使用mv ,mv结果只有nginx.old,导致没有nginx出错)
拷贝新程序,并获取当前nginx主进程pid(此时仍是原nginx进程,pid=25971):
升级新程序,kill掉原nginx进程,新版本nginx被添加到进程里来(新的pid=26141):
此时测试,还是原来的老进程响应
新进程平滑接管:kill -WINCH 25971 回收老版本的worker进程
此时测试,新的nginx进程响应
2、版本回退
还原nginx程序:# cp -f nginx.old nginx
唤醒老进程:# kill -HUP 252971
此时测试,还是新进程响应
回收新版本的worker进程: kill -WINCH 26141
此时测试,老进程响应
关闭新版本主进程: kill -QUIT 26141/kill -9 26141