在企业中,nginx服务必须时时处于开启状态,即使想要升级更新,那么也必须是在线升级更新,这就是平滑升级,热部署的意思。

 

一、实验环境(rhel7.3版本)

 

1selinux和firewalld状态为disabled

2各主机信息如下:

主机

ip

server1

172.25.8.1

 

二、由nginx1.14到nginx1.15的平滑升级

 

1、首先安装nginx1.14,并启动nginx服务

 

(1)下载nginx1.14对应的压缩包,并进行解压

nginx官网下载nginx tar包_nginx

(2)下载安装nginx需要的依赖包

nginx官网下载nginx tar包_配置文件_02

(3)修改相应的文件,并源码编译nginx

nginx官网下载nginx tar包_nginx官网下载nginx tar包_03

#将172行注释掉

nginx官网下载nginx tar包_nginx_04

nginx官网下载nginx tar包_配置文件_05

nginx官网下载nginx tar包_二进制文件_06

(4)启动nginx服务,查看该nginx服务的版本号,并查看nginx服务相应的进程

nginx官网下载nginx tar包_配置文件_07

#查看nginx版本信息

nginx官网下载nginx tar包_nginx_08

#查查看nginx版本信息,编译版本,和配置参数

nginx官网下载nginx tar包_nginx_09

nginx官网下载nginx tar包_二进制文件_10

我们可以看到有两个nginx进程,一个是master进程,另外一个是worker进程。其中master进程是主进程,用来派生worker程,worker进程是实际工作的进程。

这里只有一个worker进程,这是由nginx服务的主配置文件(/usr/local/nginx/conf/nginx.conf)决定的。

nginx官网下载nginx tar包_配置文件_11

nginx官网下载nginx tar包_配置文件_12

 

下面,我们修改nginx服务的主配置文件/usr/local/nginx/conf/nginx.conf文件,将worker的进程数,设置为自动(即由cpu的个数来决定,有几个cpu就会开启几个worker进程)

nginx官网下载nginx tar包_配置文件_11

nginx官网下载nginx tar包_配置文件_14

#修改完nginx配置文件之后,重载nginx服务

nginx官网下载nginx tar包_配置文件_15

nginx官网下载nginx tar包_二进制文件_16

此时我们看到的worker数是一个。这是因为cpu有一个。

nginx官网下载nginx tar包_nginx_17

 

下面我们进行配置,使得查看nginx服务的主配置文件(/uar/local/nginx/conf/nginx.conf)会有彩色呈现。

nginx官网下载nginx tar包_nginx_18

nginx官网下载nginx tar包_nginx_19

从上图,我们可以看到利用vim查看该配置文件,只有两种颜色出现(黑色和蓝色)。那么能不能进行相应的配置,使其利用vim查看时呈现多种颜色呢?我们进行下面的配置:

nginx官网下载nginx tar包_nginx官网下载nginx tar包_20

nginx官网下载nginx tar包_配置文件_21

nginx官网下载nginx tar包_nginx_22

  • 此时,再次利用“vim  /usr/local/nginx/conf/nginx.conf”命令查看该配置文件中的内容

nginx官网下载nginx tar包_配置文件_23

从上图,我们可以看到呈现出多种颜色。表示我们配置成功。

 

2、其次安装nginx1.15,并启动nginx服务

(1)下载nginx1.15对应的压缩包,并进行解压

nginx官网下载nginx tar包_配置文件_24

(2)下载安装nginx需要的依赖包——上面已经安装过,这里不必再次安装。

(3)修改相应的文件,并源码编译nginx

nginx官网下载nginx tar包_nginx官网下载nginx tar包_25

nginx官网下载nginx tar包_二进制文件_26

#编译目录仍为/usr/local/nginx。相当于覆盖了之前编译的nginx1.14

nginx官网下载nginx tar包_配置文件_27

#只进行预编译make,不进行编译make install

nginx官网下载nginx tar包_nginx_28

 

3、由nginx1.14到nginx1.15的平滑升级

(1)查看nginx-1.15.8/objs/nginx文件,同时查看/usr/local/nginx/sbin/nginx文件,来判断哪个是nginx1.14生成的nginx二进制文件,哪个是nginx1.15生成的nginx二进制文件(这两个文件的作用是一样的)

nginx官网下载nginx tar包_nginx_29

nginx官网下载nginx tar包_nginx_30

通过查看两个文件的具体信息(主要是查看时间),我们发现nginx-1.15.8/objs/nginx文件是nginx1.15生成的;而/usr/local/nginx/sbin/nginx文件是nginx1.14生成的(这是因为在安装nginx1.15时没有进行安装的操作——make  install)

(2)进行平滑升级

  1. 拷贝nginx1.15生成的nginx二进制文件覆盖nginx1.14生成的nginx二进制文件
  2. 由1.15版本的nginx服务替代原来正在运行的1.14版本的nginx服务

nginx官网下载nginx tar包_配置文件_31

#备份一份原来的nginx二进制文件,以免后续进行nginx服务的版本回退

nginx官网下载nginx tar包_二进制文件_32

#使用-f参数是因为/usr/local/nginx/sbin/nginx二进制文件正在运行

nginx官网下载nginx tar包_nginx_33

nginx官网下载nginx tar包_nginx_34

#此时nginx的版本已经由原来的1.14升级到了1.15

nginx官网下载nginx tar包_配置文件_35

nginx官网下载nginx tar包_二进制文件_36

#启动新的master进程和worker进程(是由nginx1.15启动的)

nginx官网下载nginx tar包_配置文件_37

#关闭旧的worker进程(由nginx1.14启动的worker进程)

nginx官网下载nginx tar包_二进制文件_38

 

三、由nginx1.15到nginx1.14的版本回退

 

在二的基础上,我们演示nginx1.15到nginx1.14的版本回退

  1. 拷贝nginx1.14生成的nginx二进制文件覆盖nginx1.15生成的nginx二进制文件
  2. 由1.14版本的nginx服务替代原来正在运行的1.15版本的nginx服务

nginx官网下载nginx tar包_配置文件_39

#使用-f参数是因为/usr/local/nginx/sbin/nginx二进制文件正在运行

nginx官网下载nginx tar包_nginx官网下载nginx tar包_40

#此时nginx的版本已经由原来的1.15回退到了1.14

nginx官网下载nginx tar包_二进制文件_41

nginx官网下载nginx tar包_二进制文件_42

#启动新worker进程(是由nginx1.14启动的)

nginx官网下载nginx tar包_二进制文件_43

#关闭旧的worker进程(由nginx1.15启动的worker进程)

nginx官网下载nginx tar包_nginx官网下载nginx tar包_44