在实际生产环境中,nginx必须一直处于开启状态,所以版本升级也一定要在线更新,也就是热部署。
这个实验就是实现在线进行nginx-1.14.2到nginx-1.15.7的平滑升级,以及出现问题时及时回退。
基本思想:
1、 在不停掉老进程的情况下,启动新进程。
2、 老进程负责处理仍然没有处理完的请求,但不再接受处理请求。
3、 新进程接受新请求。
4、 老进程处理完所有请求,关闭所有连接后,停止
一、实验环境(rhel7.3版本)
selinux和firewalld状态都是disabled
172.25.60.1是实验主机
二、从nginx-1.14.2到nginx-1.15.7的平滑升级
1、下载nginx-1.14.2和nginx-1.15.7的安装包
[root@server1 ~]# ls
nginx-1.14.2.tar.gz nginx-1.15.7.tar.gz
2、安装 nginx-1.14.2
(1)、解压安装包
[root@server1 ~]# tar zxf nginx-1.14.2.tar.gz
[root@server1 ~]# ls
nginx-1.14.2 nginx-1.14.2.tar.gz
(2)、关闭debug日志
[root@server1 ~]# cd nginx-1.14.2
[root@server1 nginx-1.14.2]# vim auto/cc/gcc
171 # debug
172 #CFLAGS="$CFLAGS -g"
(3)、下载编译nginx需要的依赖包
[root@server1 nginx-1.14.2]# yum install pcre-devel zlib-devel gcc -y
(4)、测试存在特性
[root@server1 nginx-1.14.2]# ./configure --prefix=/usr/local/nginx --with-file-aio
(5)、编译安装
[root@server1 nginx-1.14.2]# make && make install
(6)、给配置文件添加高亮(也可以不做)
[root@server1 ~]# mkdir .vim
[root@server1 ~]# cp -r nginx-1.14.2/contrib/vim/* .vim/
3、修改配置文件,启动nginx-1.14.2
[root@server1 nginx-1.14.2]# cd /usr/local/nginx/sbin/
[root@server1 sbin]# ls
nginx nginx.old
[root@server1 sbin]# ./nginx -t #查看nginx配置文件是否正确
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/co