定位旧版本nginx的二进制执行文件和PID文件位置,例如 /usr/local/nginx/sbin/nginx和/usr/local/nginx/logs/nginx.pid
查询旧版本nginx的master进程的PID,记录为 OldMasterPID
我们采用官方命令
ps axw -o pid,ppid,user,%cpu,vsz,wchan,command | egrep '(nginx|PID)
(截图待补充)
将新版本的nginx覆盖掉旧版本,对旧版本的二进制文件进行备份的操作是可选的,后边将会说到为什么可以不用备份
执行命令 kill -s USR2 OldMasterPID
执行成功后,可以发现nginx已经自动备份了旧版本的pid文件和二进制文件,二进制文件会备份为 /usr/local/nginx/sbin/nginx.old (这就是为什么前面提到可以不用备份),PID文件会备份为 /usr/local/nginx/logs/nginx.pid.oldbin,而且此时新旧两个版本的nginx共同运行
(截图待补充)
执行命令 kill -s WINCH OldMasterPID,将会优雅关闭旧版本的worker进程,此时所有的请求将全部转到新版本的worker进程进行处理
如果测试有问题需要回滚
查询新版本nginx的master进程的PID,记录为NewMasterPID
ps axw -o pid,ppid,user,%cpu,vsz,wchan,command | egrep '(nginx|PID)
执行命令 kill -s HUP OldMasterPID
执行命令 kill -s TERM NewMasterPID
如果测试没有问题,则执行命令 kill -s QUIT OldMasterPID
参考文档