平滑升级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!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值