前提准备:
封装好的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) |