栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

平滑升级nginx

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/450636.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号