一、准备工作:
- 本次 无损升级的前提是需要在linux环境下编译二进制文件,因此需要nginx的源码tar包,本次调研用的版本是nginx-1.24.0.tar.gz
- 上传tar包至环境,在该目录下进行解压到指定目录,然后在指定目录下执行
./configure --prefix=/etc/nginx 注:这里的prefix是nginx.conf的目录
- 然后执行make把源码编译成可执行的二进制文件,编译过程如下图所示
- 编译成功后,在该目录objs路径下生成nginx的二进制文件
二、无损升级原理
- 在不停掉老进程的情况下,启动新进程
- 老进程负责处理已经在处理中的进程,并且不再接收新的请求
- 启动新的进程来处理新的业务请求
- 老版本的进程在处理完业务请求后,就自动退出
三、升级过程及结果验证
- 首先把nginx的配置文件以及老版本的二进制文件进行备份,然后把编译成的二进制文件移动到
/usr/sbin/ 目录下,并赋予可执行权限,查看目前的主进程
-
执行 kill -s SIGUSR2 PID(主进程的PID)
- 后续需要关闭老进程的监听端口,停止接受新请求,处理完当前的连接后退出进程,首先执行:
kill -s SIGWINCH PID
- kill -s SIGQUIT PID