nginx实现热部署(平滑升级)

这里我们使用的是上一篇文章封装好的rhel7.3的虚拟机,主机名修改成了server1

环境:

          虚拟机server1:rhel7.3系统

          软件:nginx-1.14.2.tar.gz、nginx-1.15.8.tar.gz  ==> 点击下载

我们这里的思想是热部署将nginx-1.14.2版本升级到nginx-1.15.8

整个热部署的思想是

修改配置文件nginx.conf后,重新生成新的worker进程,当然会以新的配置进行处理请求,而且新的请求必须都交给新的worker进程,至于老的worker进程,等把那些以前的请求处理完毕后,kill掉即可。

1.编译安装nginx(旧版本)

这里我使用lftp将两个包放在了封装好已经可以使用的虚拟机上,只需要解压编译安装即可

tar zxf nginx-1.14.2.tar.gz
yum install gcc zlib-devel pcre-devel -y
cd nginx-1.14.2
vim auto/cc/gcc     ##屏蔽其中的debug
./configure --prefix=/usr/local/nginx
make&&make install

这样nginx就成功的安装在了server1上了,此时我们可以查看nginx的版本

/usr/local/nginx/sbin/nginx -v

开启nginx

/usr/local/nginx/sbin/nginx

2.编译新的nginx版本,并获取二进制文件

tar zxf nginx-1.15.8.tar.gz
cd nginx-1.14.2
vim auto/cc/gcc                     ##屏蔽其中的debug
./configure --prefix=/usr/local/nginx
make                                ##切忌不要make install
cd objs
ls                                  ##如下图所示,nginx是我们需要的二进制文件

 

3.热部署

我们可以使用以下命令查看nginx的进程

ps -ef |grep nginx	##查看nginx的进程

开始之前,我们首先要进行一个备份,回滚的时候会用到

cd /usr/local/nginx/sbin
cp nginx nginx.old                            ##这样就备份了老的nginx

结下来就可以进行部署了

cp -f /root/nginx-1.15.8/objs/nginx /usr/local/nginx/sbin/
kill -USR2 2086                     ##相当于reload                            
ps -ef | grep nginx
kill -WINCH 2086                    ##相当于kill -9
ps -ef | grep nginx
/usr/local/nginx/sbin/nginx -v

nginx实现热部署(平滑升级)_第1张图片

如上图所示,当我们替换掉nginx二进制文件以后,我们使用kill -USR2使新的nginx上线,然后使用kill -WINCH命令杀掉原来的进程,查看版本号,就已经是1.15了

4.回滚

如果我们发现升级有问题,我们想回滚怎么办呢?

cp -f  /usr/local/nginx/sbin/nginx.old /usr/local/nginx/sbin/nginx
ps -ef |grep nginx

nginx实现热部署(平滑升级)_第2张图片

kill -HUP 2104
ps -ef |grep nginx
kill -USR2 2104
kill -WINCH 2104
ps -ef |grep nginx
/usr/local/nginx/sbin/nginx -v

nginx实现热部署(平滑升级)_第3张图片

这样就回滚回了1.14版本

ok~

你可能感兴趣的:(企业实践,redhat,linux,热部署,平滑升级)