一、概念讲解
- 当前服务器中正在运行Nginx服务,现想将当前运行的Nginx服务的版本进行升级,(版本的跨度不要太大,容易造成服务的崩溃),且在服务不停止的前提下进行升级。
- 简单说明:
- 在不停掉老进程的情况下,启动新进程
- 老进程负责处理仍然没有处理完的请求,但不再接受处理请求。
- 新进程接受新请求。
- 老进程处理完所有请求,关闭所有连接后,停止
-
Nginx中的进程分为两类,一类是master进程(主进程),一类是worker进程(工作进程)
-
原理就是首先我们先学会替换master进程,同时我们替换的master是与老版本的worker兼容的,之后,就是保持还有连接的worker进程,待其老去退休,进行替换
-
重点概念:
-
概念:
1.nginx是异步非阻塞的
2.apache预派生会占用系统资源;且是多进程的,如果一个进程没有使用万完,则内存被占用,也不能被使用;进程间会进行来回的切换(存在进程间交换),也消耗资源,即使配置提升,系统性能也无法提升;
3.nginx如果一个进程崩了,则可能都会崩;
4.nginx官网是www.nginx.org
5.auto是操作系统的特性,可以让nginx使用
6.changes每个版本中的变化以及相关的内容
7.changes.ru值俄罗斯语的每个版本中的变化以及相关的内容
8.conf中是配置文件
9.configure编译用的
10.contrib提供nginx的语法检测(nginx自己带语法检测的,需要配置)
11.html默认发布目录(只要发现500类的报错,就会定向到50x.html)
12.src是nginx源码目录
13.此处不需要更改版本号,因为此实验需要查看版本号
14.objs是中间件的目录
15.会编译所有的模块,使用make会调用Makefile
16.默认编译添加的模块
17.编译后会生成二进制可以执行文件(config)将其拷贝至config中
18.默认worker进行是由nobody的worker启动,不方便管理
19.有点小
20.打开文件数多一点
21.不切断原来进程的基础上,更新版本
22.千万不要make install,否进二进制文件会替代sbin下的nginx
23.更新之前先备份
24.如果更新不成功,会立马回退
25.如果不加-f,会显示先正二进制文件在忙,因为worker进程正在使用
26.nginx发送信号告诉master进程让你的worker进程不要再接收请求了
27.处理完之后将其关闭
28.这个进程之所以还在的原因是因为是备份,如果升级的版本更新坏了,可以替换
29.如果发现更新坏了,将其二进制文件替换(程序复制了),但是进程没有换,再次告诉新的进程不接收请求了,先将老的拉起来(不然无法接收请求),且自行关闭
二、Nginx的平滑升级实验
实验环境:
主机 | ip | 服务 |
---|---|---|
物理机 | 172.25.254.66/172.25.66.250< |