以默认安装路径为例,即nginx主文件为/usr/sbin/nginx
-
备份nginx旧版本,即此例中的/usr/sbin/nginx这一文件;
-
下载nginx新版本压缩包,并解压到需要进行升级的节点任意目录,此处以解压到 /root 为例;
-
执行如下指令,并将输出的参数复制下来;
/usr/sbin/nginx -V
-
定位到新版本解压的位置,此例中为 /root ,执行如下configure指令,其中 %%% 部分为上一步复制的参数。
注意查看执行过程中有没有报错,如果有报错的话,查看报错信息对应到是哪一个模块( %%% 中的哪一段),综合判断是修复问题还是删除对应参数,直至configure成功;
./configure %%%
-
configure完成后,在同目录下执行如下命令,生成makefile;
make
-
make完成后,已经生成了新版的nginx主文件,在当前位置的objs目录内。确认nginx旧版本备份完成后,将新的nginx主文件复制到/usr/sbin目录下,覆盖原版本;
-
执行如下指令,测试当前配置文件与新版nginx是否有兼容问题,有的话对应排查修复;
/usr/sbin/nginx -t
-
执行如下指令,执行完成后查询nginx进程,此时应该有两套nginx进程(“一套”包含master + 多个worker)在同时运行;
“cat” 之后的pid文件如果不在这个目录,可以在nginx.conf中搜索“pid”找到对应的路径。
kill -USR2 `cat /var/run/nginx.pid`
-
执行如下指令,之后多次查询nginx进程,直到其中一套nginx进程(老版本的)中的worker进程全部停止,注意是pid.oldbin;
kill -WINCH `cat /var/run/nginx.pid.oldbin`
-
执行如下指令,注意是pid.oldbin。完成后再查询nginx进程,此时应该只剩一套nginx进程;
kill -QUIT `cat /var/run/nginx.pid.oldbin`
-
至此nginx不停机升级完成。可以执行如下指令查询nginx当前版本号,并查询nginx的access日志文件查看nginx服务运行状况。
/usr/sbin/nginx -V