> Linux服务器 > nginx >

nginx——版本的热省级和版本回退

前提准备:
封装好的rhe7.3的虚拟机
在生产环境中,进行nginx升级时是不能影响到服务的正常运行的,如果升级失败则立即回退为原来的版本,现在就来模拟一下这个过程。
 
获得nginx两个版本的安装包

 
安装包在官网直接下载即可。nginx官网
 
1. 安装nginx-1.16.0
1.解压
 
[root@server1 ~]# tar zxf nginx-1.16.0.tar.gz

 
2.关闭debug日志
 
[root@server1 nginx-1.16.0]# vim auto/cc/gcc 
 

将debug日志功能注释,防止产生过多的日志占用空间。

 
3.安装所需要的软件
 
[root@server1 nginx-1.16.0]# yum install gcc pcre-devel zlib-devel openssl-devel -y
[root@server1 nginx-1.16.0]# yum install -y gd-devel-2.0.35-26.el7.x86_64.rpm
 
安装所需要的依赖软件。
 
4.安装
 
[root@server1 nginx-1.16.0]# ./configure --prefix=/usr/local/nginx  \
--with-http_realip_module \
--with-http_image_filter_module=dynamic \
--with-http_ssl_module 
 
 
[root@server1 nginx-1.16.0]# make && make install
 
 
安装完成
 
2.配置nginx-1.16.0
 
1.添加nginx用户
 
[root@server1 nginx-1.16.0]# useradd nginx
 
2.修改配置文件
 
[root@server1 nginx-1.16.0]# vim /usr/local/nginx/conf/nginx.conf
 
  2 user  nginx nginx; ##修改用户和组
  3 worker_processes  2;
  4 
  5 #error_log  logs/error.log;
  6 #error_log  logs/error.log  notice;
  7 #error_log  logs/error.log  info;
  8 
  9 #pid        logs/nginx.pid;
 10 
 11 
 12 events {
 13     worker_connections  65535; ##修改打开的最大进程数
 14 }
 
[root@server1 nginx-1.16.0]# vim /etc/security/limits.conf 
 
使上面修改的打开最大进程数生效。
 
[root@server1 nginx-1.16.0]# /usr/local/nginx/sbin/nginx -t
 
 
查看修改的文件是否有语法错误
 
[root@server1 nginx-1.16.0]# /usr/local/nginx/sbin/nginx
 
启动nginx。
 
3.版本回退
现在我们就将nginx-1.16.0的版本回退。
 
1.获取nginx-1.15.8.tar.gz包并解压,编译
 
[root@server1 ~]# tar zxf nginx-1.15.8.tar.gz 
[root@server1 ~]# cd nginx-1.15.8/
[root@server1 nginx-1.15.8]# ls
auto     CHANGES.ru  configure  html     man     src
CHANGES  conf        contrib    LICENSE  README
 


 
[root@server1 nginx-1.15.8]# ./configure --prefix=/usr/local/nginx  \
--with-http_realip_module \
--with-http_image_filter_module=dynamic \
--with-http_ssl_module
 


 
[root@server1 nginx-1.15.8]# make




 
注意这里只进行编译,不进行安装。


 
2.备份原版本,查看进程,进行版本回退

 
进入将1.16版本的启动脚本进行备份,因为后面还要做版本升级



 
查看进程,此时,nginx1.16版本还有1个master进程,2个worker进程在运行。

 
进入1.15版本的解压目录,在objs目录中找到启动脚本,复制到/usr/local/nginx/sbin下,因为此时这个脚本正被使用,所以要用-f强制覆盖。



 
查看进程,可以看到master进程pid
 
[root@server1 objs]# kill -USR2 6294


 
 
使原本的1.16版本不再接受新的请求,所以会发现下面 回多出一个master进程和两个worker进程,这是因为回退的版本1.15进行了处理。
 
[root@server1 objs]# kill -WINCH 6294
 

 
关闭1.16的worker进程。
 
[root@server1 objs]# /usr/local/nginx/sbin/nginx -V
 
 
查看版本,版本回退成功。
 
4.版本升级
现在再把回退的版本升级。

 
同样,用1.16的脚本替代1.15的脚本。

 
查看进程
 
[root@server1 sbin]# kill -USR2 9016
 
 
使1.15版本的master不再接受新请求,9016就是1.15版本的马斯图尔进程pid
 
[root@server1 sbin]# kill -HUP 6294

 
 
再将1.16版本的master进程提起来
 
[root@server1 sbin]# kill -WINCH 9016
 
 
 
[root@server1 sbin]# /usr/local/nginx/sbin/nginx -V



 
查看版本号,升级成功。
 




(责任编辑:IT)