平滑升级nginx

平滑升级nginx,第1张

平滑升级nginx (1)查看当前安装的nginx的版本

 

当前所在目录

nginx -v:

 nginx -V:

(2)在官网下载一个新版本安装包,这里下Linux系统的,得到

将安装包上传到阿里云远程服务器的/root目录下,如下图:

 (3)解压
tar -zxvf nginx-1.21.4.tar.gz

 得到一个新的文件

(4)配置

 查看nginx-1.21.4目录下的文件:

 执行./configure来设置新版本安装参数:

 ...

成功后再次查看nginx-1.21.4目录:

发现多了Makefile文件和objs目录

 查看Makefile文件的内容:

查看objs目录下的文件:

 (5)构建

!!make知识参考:Make 命令教程 - 阮一峰的网络日志

执行make会读取nginx-1.21.4目录下生成的Makefile文件,

Makefile文件的内容中有这些内容:

default:	build

build:
	$(MAKE) -f objs/Makefile

so,执行make默认就是构建,下图的make -f objs/Makefile也可以说明

...

 构建完成后,objs目录下生成了可执行文件nginx

(6)备份二进制文件。

将nginx/sbin目录下的二进制文件nginx移动到上级目录nginx下,

查看sbin目录,发现没有nginx文件了。

(7)更换新的nginx二进制文件到sbin目录下
cp objs/nginx /usr/local/nginx/sbin/

 sbin目录的nginx又回来了:

(8)用新的nginx二进制文件检查nginx.conf文件

 没问题!

(9)平滑升级nginx(主要步骤)

!!前提是已经启动了旧版本的nginx,否则没有nginx.pid这个文件。

kill -USR2 `cat logs/nginx.pid`

cat logs/nginx.pid 是想拿到就nginx版本启动的主进程id ,

发送USR2信号给该主进程,如下图:

 该主进程会重命名nginx.pid为nginx.pid.oldbin

执行新的nginx二进制文件--也就是我们平时启动nginx的命令 ./nginx(假设我当前在/usr/local/nginx/sbin目录下),来启动新的master process和新的worker process

 启动新master process所以logs文件下生成了新的nginx.pid文件,其主进程id为17111。

查看进程信息也可以看到当前有2个主进程,分别是pid=17080 和 pid=17111。

即同时跑了2个nginx实例,一个新版本的nginx,一个旧版本的nginx。

后续请看该链接的WINCH信号及后面的内容:CSDN

(10) 再次查看nginx版本

 nginx从1.20.1升级到了1.21.4!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5181582.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-18
下一篇2022-11-18

发表评论

登录后才能评论

评论列表(0条)

    保存