在企业中,nginx服务必须时时处于开启状态,即使想要升级更新,那么也必须是在线升级更新,这就是平滑升级,热部署的意思。
一、实验环境(rhel7.3版本)
1、selinux和firewalld状态为disabled
2、各主机信息如下:
主机 | ip |
server1 | 172.25.8.1 |
二、由nginx1.14到nginx1.15的平滑升级
1、首先安装nginx1.14,并启动nginx服务
(1)下载nginx1.14对应的压缩包,并进行解压
、
(2)下载安装nginx需要的依赖包
(3)修改相应的文件,并源码编译nginx
#将172行注释掉
(4)启动nginx服务,查看该nginx服务的版本号,并查看nginx服务相应的进程
#查看nginx版本信息
#查查看nginx版本信息,编译版本,和配置参数
我们可以看到有两个nginx进程,一个是master进程,另外一个是worker进程。其中master进程是主进程,用来派生worker程,worker进程是实际工作的进程。
这里只有一个worker进程,这是由nginx服务的主配置文件(/usr/local/nginx/conf/nginx.conf)决定的。
下面,我们修改nginx服务的主配置文件/usr/local/nginx/conf/nginx.conf文件,将worker的进程数,设置为自动(即由cpu的个数来决定,有几个cpu就会开启几个worker进程)
#修改完nginx配置文件之后,重载nginx服务
此时我们看到的worker数是一个。这是因为cpu有一个。
下面我们进行配置,使得查看nginx服务的主配置文件(/uar/local/nginx/conf/nginx.conf)会有彩色呈现。
从上图,我们可以看到利用vim查看该配置文件,只有两种颜色出现(黑色和蓝色)。那么能不能进行相应的配置,使其利用vim查看时呈现多种颜色呢?我们进行下面的配置:
- 此时,再次利用“vim /usr/local/nginx/conf/nginx.conf”命令查看该配置文件中的内容
从上图,我们可以看到呈现出多种颜色。表示我们配置成功。
2、其次安装nginx1.15,并启动nginx服务
(1)下载nginx1.15对应的压缩包,并进行解压
(2)下载安装nginx需要的依赖包——上面已经安装过,这里不必再次安装。
(3)修改相应的文件,并源码编译nginx
#编译目录仍为/usr/local/nginx。相当于覆盖了之前编译的nginx1.14
#只进行预编译make,不进行编译make install
3、由nginx1.14到nginx1.15的平滑升级
(1)查看nginx-1.15.8/objs/nginx文件,同时查看/usr/local/nginx/sbin/nginx文件,来判断哪个是nginx1.14生成的nginx二进制文件,哪个是nginx1.15生成的nginx二进制文件(这两个文件的作用是一样的)
通过查看两个文件的具体信息(主要是查看时间),我们发现nginx-1.15.8/objs/nginx文件是nginx1.15生成的;而/usr/local/nginx/sbin/nginx文件是nginx1.14生成的(这是因为在安装nginx1.15时没有进行安装的操作——make install)
(2)进行平滑升级
- 拷贝nginx1.15生成的nginx二进制文件覆盖nginx1.14生成的nginx二进制文件
- 由1.15版本的nginx服务替代原来正在运行的1.14版本的nginx服务
#备份一份原来的nginx二进制文件,以免后续进行nginx服务的版本回退
#使用-f参数是因为/usr/local/nginx/sbin/nginx二进制文件正在运行
#此时nginx的版本已经由原来的1.14升级到了1.15
#启动新的master进程和worker进程(是由nginx1.15启动的)
#关闭旧的worker进程(由nginx1.14启动的worker进程)
三、由nginx1.15到nginx1.14的版本回退
在二的基础上,我们演示nginx1.15到nginx1.14的版本回退
- 拷贝nginx1.14生成的nginx二进制文件覆盖nginx1.15生成的nginx二进制文件
- 由1.14版本的nginx服务替代原来正在运行的1.15版本的nginx服务
#使用-f参数是因为/usr/local/nginx/sbin/nginx二进制文件正在运行
#此时nginx的版本已经由原来的1.15回退到了1.14
#启动新worker进程(是由nginx1.14启动的)
#关闭旧的worker进程(由nginx1.15启动的worker进程)