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二进制文件以后,我们使用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
-
kill -HUP 2104
-
ps -ef |grep nginx
-
kill -USR2 2104
-
kill -WINCH 2104
-
ps -ef |grep nginx
-
/usr/local/nginx/sbin/nginx -v
这样就回滚回了1.14版本
ok~
**************只要学不死就往死里学!************