Nginx平滑升级版本!(重点)
一、解释nginx的平滑升级
随着nginx越来越流行使用,并且nginx的优势也越来越明显,nginx的版本迭代也开始了加速模式,1.9.0版本的nginx更新了许多新功能,例如stream四层代理功能。伴随着nginx的广泛应用,版本升级必然是越来越快的,线上业务不能停,此时nginx的升级就是运维的重要工作了,下面就带大家一起来理解下nginx平滑升级。
二、nginx平滑升级原理
多进程模式下的请求分配方式
Nginx默认工作在多进程模式下,即主进程(master process)启动后完成配置加载和端口绑定等动作,fork出指定数量的工作进程(worker process),这些子进程会持有监听端口的文件描述符(fd),并通过在该描述符上添加监听事件来接受连接(accept)。
信号的接收和处理
Nginx主进程在启动完成后会进入等待状态,负责响应各类系统消息,如SIGCHLD、SIGHUP、SIGUSR2等。
Nginx信号简介
主进程支持的信号
TERM,INT: 立刻退出QUIT: 等待工作进程结束后再退出KILL: 强制终止进程HUP: 重新加载配置文件,使用新的配置启动工作进程,并逐步关闭旧进程。USR1: 重新打开日志文件USR2: 启动新的主进程,实现热升级WINCH: 逐步关闭工作进程
工作进程支持的信号
TERM,INT: 立刻退出QUIT: 等待请求处理结束后再退出USR1: 重新打开日志文件
三、nginx平滑升级实战
一:查看能不能通Welcome to nginx页面
[root@location ~]#rpm -q httpd
[root@location ~]#yum -y install gcc gcc-c++ make zlib-devel pcre-devel elinks
[root@location ~]#ll nginx-*
[root@location ~]#useradd -M -s /sbin/nologin nginx
[root@location ~]#tail -l /etc/passwd;tail -l /etc/group
[root@location ~]#elinks --dump http://location
Welcome to nginx
二:查看旧版本nginx的编译参数
[root@iZwz994oywnbrdsnn4hrkqZ /]# nginx -V
nginx version: nginx/1.14.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-stream --with-http_gzip_static_module
三:编译新版本Nginx源码包,安装路径必须与旧版本一致,且不能执行make install(本次用1.16.0的版本做实验)
3.1:为了实验的成功先杀死nginx进程
[root@localhost ~]# killall -9 nginx
[root@localhost ~]# nginx
[root@localhost ~]#rz -E(此处上传新源码包,这里用1.15.9代替做实验)
[root@localhost ~]# ls
anaconda-ks.cfg nginx-1.14.2.tar.gz original-ks.cfg 模板 图片 下载 桌面
initial-setup-ks.cfg nginx-1.16.0.tar.gz 公共 视频 文档 音乐
3.2:先解压1.15.9版本
[root@localhost ~]#tar xf nginx-1.16.0.tar.gz -C /usr/src
[root@localhost ~]#cd /usr/src/nginx-1.16.0/
[root@localhost nginx-1.16.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module && make
3.3:备份二进制文件用新版本代替
[root@localhost nginx-1.16.0]# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old //将旧版本的nginx改名并备份
[root@localhost nginx-1.16.0]# ls
auto CHANGES.ru configure html Makefile objs src
CHANGES conf contrib LICENSE man README
[root@localhost nginx-1.16.0]# ls objs/
autoconf.err nginx ngx_auto_config.h ngx_modules.c src
[root@iZwz994oywnbrdsnn4hrkqZ nginx-1.16.0]# cp objs/nginx /usr/local/nginx/sbin
cp: overwrite ‘/usr/local/nginx/sbin/nginx’? yes
[root@iZwz994oywnbrdsnn4hrkqZ nginx-1.16.0]# ll /usr/local/nginx/sbin
total 3772
[root@iZwz994oywnbrdsnn4hrkqZ nginx-1.16.0]# cd /usr/src/nginx-1.14.2/
[root@iZwz994oywnbrdsnn4hrkqZ nginx-1.14.2]# mv objs/nginx nginx.old
[root@iZwz994oywnbrdsnn4hrkqZ nginx-1.14.2]# cp nginx.old /usr/local/nginx/sbin/
[root@iZwz994oywnbrdsnn4hrkqZ nginx-1.14.2]# ll /usr/local/nginx/sbin/
total 8044
-rwxr-xr-x 1 root root 3858728 Feb 6 15:42 nginx #新版本
-rwxr-xr-x 1 root root 4373160 Feb 6 15:44 nginx.old #旧版本
[root@localhost nginx-1.16.0]# nginx -t //启动nginx,让新的配置文件加载旧的配置文件看兼容不兼容
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
四:进行信号处理(发送USR2信号)
向主进程(master)发送USR2信号。Nginx会启动一个新版本的master进程和对应的工作进程
和旧版本一起处理请求
[root@localhost nginx-1.16.0]# cd
[root@iZwz994oywnbrdsnn4hrkqZ ~]# ps -aux | grep nginx
root 19604 0.0 0.1 20560 1232 ? Ss 15:45 0:00 nginx: master process nginx #旧进程
nginx 19607 0.0 0.5 24812 5124 ? S 15:45 0:00 nginx: worker process #旧进程
root 19609 0.0 0.0 112708 988 pts/0 R+ 15:45 0:00 grep --color=auto nginx
root 71140 0.0 0.0 112724 992 pts/1 S+ 20:00 0:00 grep --color=auto nginx
[root@localhost ~]# kill -USR2 68104 //杀掉旧进程主程序
[root@iZwz994oywnbrdsnn4hrkqZ ~]# nginx -V
nginx version: nginx/1.16.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
Nginx平滑升级版本!(重点)的更多相关文章
- Nginx平滑升级版本
目录 一.简介 说明 环境 二.安装 三.使用验证 一.简介 说明 Nginx版本迭代迅速,新版本提供了很多功能,好在Nginx支持不停服务进行升级. 版本之间差距不要太大,不然会导致很多东西不支持 ...
- 让你的网站免费支持 HTTPS 及 Nginx 平滑升级
为什么要使用 HTTPS ? 首先来说一下 HTTP 与 HTTPS 协议的区别吧,他们的根本区别就是 HTTPS 在 HTTP 协议的基础上加入了 SSL 层,在传输层对网络连接进行加密.简单点说在 ...
- Nginx range filter模块数字错误漏洞修复 (Nginx平滑升级) 【转】
对线上生产环境服务器进行漏洞扫描, 发现有两台前置机器存在Nginx range filter模块数字错误漏洞, 当使用nginx标准模块时,攻击者可以通过发送包含恶意构造range域的header ...
- Nginx range filter模块数字错误漏洞修复 (Nginx平滑升级)
对线上生产环境服务器进行漏洞扫描, 发现有两台前置机器存在Nginx range filter模块数字错误漏洞, 当使用nginx标准模块时,攻击者可以通过发送包含恶意构造range域的header ...
- nginx平滑升级实战
Nginx 平滑升级 1.查看旧版Nginx的编译参数 [root@master ~]# /usr/local/nginx/sbin/nginx -V [root@master ~]# ll ngin ...
- 02 . Nginx平滑升级和虚拟主机
Nginx虚拟主机 在真实的服务器环境,为了充分利用服务器资源,一台nginx web服务器会同时配置N个虚拟主机,这样可以充分利用服务器的资源,方便管理员的统一管理 配置nginx虚拟主机有三种方法 ...
- Nginx平滑升级详细步骤-113p.cn
认识平滑升级 有时候我们需要对Nginx版本进行升级以满足运维人员对其功能的需求,例如添加xxx模块,需要xxx功能,而此时Nginx又在跑着业务无法停掉,这时我们就只能平滑升级了. 平滑升级原理 N ...
- Nginx 平滑升级、Nginx的一些基础配置
# Nginx 平滑升级 # 方案一:使用Nginx服务信号进行升级 # 1.将就版本的sbin目录下可执行nginx进行备份(mv nginx nginxold) # 2.将新版本 configur ...
- nginx 平滑升级tengine
wget http://tengine.taobao.org/download/tengine-1.5.1.tar.gz //下载Tengine1.5.1版本 tar zxvf tengine-1. ...
随机推荐
- Jarvis OJ - 爬楼梯 -Writeup
Jarvis OJ - 爬楼梯 -Writeup 本来是想逆一下算法的,后来在学长的指导下发现可以直接修改关键函数,这个题做完有种四两拨千斤的感觉,记录在这里 转载请标明出处:http://www.c ...
- VS2017编写c/c++汇编函数并调用
首先在VS里面创建个空项目,然后添加汇编文件 .asm, 右键asm文件属性 --- 常规,改成下图的设置 , 从生成中排除改为否, 项类型改为自定义生成工具 然后点确定. 再次右键asm文 ...
- maven私服搭建&使用
Maven私服搭建教程 一.nexus安装 1,解压安装包 安装包下载地址 2,以管理员身份打开cmd 3,进入到nexus的bin目录 (1) 安装:nexus install (2) 启动:nex ...
- nginx.conf nginx反向代理配置文件
nginx反向代理配置文件 nginx.conf proxy_default.conf proxy.conf vhost/*.conf upstream/*.conf cache/*.conf ngi ...
- awk基本介绍
AWK 是一种用于处理文本的编程语言工具.awk经过改进生成的新的版本nawk,gawk,现在默认linux系统下日常使用的是gawk,用命令可以查看正在应用的awk的来源(ls -l /bin/aw ...
- 为什么安装了淘宝镜像,永用cnpm安装依赖包会报错,而用npm就不会?报错:cnpm : 无法加载文件 C:\Users\93457\AppData\Roaming\npm\cnpm.ps1。。。。
cnpm - 解决 " cnpm : 无法加载文件 C:\Users\93457\AppData\Roaming\npm\cnpm.ps1,因为在此系统上禁止运行脚本.有关详细信息 ... ...
- Springmvc-crud-03(静态资源错误)
错误描述:静态资源加载失败 原因:spring会拦截静态资源 解决办法: <!-- 配置spring支持静态资源请求 --> <mvc:default-servlet-handler ...
- 80端口被system占用
# 开始 今天配置wampserver 3.0.6的时候 发现右下角的图标一直是红色的 经验告诉我两个服务都没有运行 # 解决思路 wampserver有两个服务 一个是 Apache 服务 一个是 ...
- NOIP--模拟—————神奇的幻方
神奇的幻方 题目描述 幻方是一种很神奇的 N*N 矩阵:它由数字 1,2,3,-N x N 构成,且每行.每列及两条对角线上的数字之和都相同. 当 N 为奇数时,我们可以通过下方法构建一个幻方: 首先 ...
- 台电X16pro刷机记录
Android: 如果要刷安卓,需要使用win7系统电脑,且需要安装java环境,同时按住 音量减+电源键进入刷机模式(DNX BOOT MODE..),这时在PhoneFlashTool_5.3.2 ...