Nginx不停服务版本升级(平滑升级)

以默认安装路径为例,即nginx主文件为/usr/sbin/nginx

  1. 备份nginx旧版本,即此例中的/usr/sbin/nginx这一文件;

  2. 下载nginx新版本压缩包,并解压到需要进行升级的节点任意目录,此处以解压到 /root 为例;

  3. 执行如下指令,并将输出的参数复制下来;

    /usr/sbin/nginx -V
    
  4. 定位到新版本解压的位置,此例中为 /root ,执行如下configure指令,其中 %%% 部分为上一步复制的参数。

    注意查看执行过程中有没有报错,如果有报错的话,查看报错信息对应到是哪一个模块( %%% 中的哪一段),综合判断是修复问题还是删除对应参数,直至configure成功;

    ./configure %%%
    
  5. configure完成后,在同目录下执行如下命令,生成makefile;

    make
    
  6. make完成后,已经生成了新版的nginx主文件,在当前位置的objs目录内。确认nginx旧版本备份完成后,将新的nginx主文件复制到/usr/sbin目录下,覆盖原版本;

  7. 执行如下指令,测试当前配置文件与新版nginx是否有兼容问题,有的话对应排查修复;

    /usr/sbin/nginx -t
    
  8. 执行如下指令,执行完成后查询nginx进程,此时应该有两套nginx进程(“一套”包含master + 多个worker)在同时运行;

    “cat” 之后的pid文件如果不在这个目录,可以在nginx.conf中搜索“pid”找到对应的路径。

    kill -USR2 `cat /var/run/nginx.pid`
    
  9. 执行如下指令,之后多次查询nginx进程,直到其中一套nginx进程(老版本的)中的worker进程全部停止,注意是pid.oldbin

    kill -WINCH `cat /var/run/nginx.pid.oldbin`
    
  10. 执行如下指令,注意是pid.oldbin。完成后再查询nginx进程,此时应该只剩一套nginx进程;

    kill -QUIT `cat /var/run/nginx.pid.oldbin`
    
  11. 至此nginx不停机升级完成。可以执行如下指令查询nginx当前版本号,并查询nginx的access日志文件查看nginx服务运行状况。

    /usr/sbin/nginx -V
    
posted @ 2025-01-04 10:37  Rure  阅读(685)  评论(0)    收藏  举报