不停服务情况下升级nginx
第三方支付平台因安全问题对nginx做了升级操作,为了不影响业务,整个操作过程都不能停服务,因此对升级方法做出了要求。以下为我整理的生产环境实际操作方法,已在第三方支付平台上成功应用,希望对即将或者可能涉及nginx升级操作的同事有所帮助。
Nginx升级步骤:
步骤一:查看原版本及已安装模块和进程号。
ps aux|grep nginx
/payment/nginx/sbin/nginx –V
步骤二:下载新版本安装文件并上传到nginx主机目录/payment/bak/。
下载地址http://nginx.org/download/nginx-1.4.3.tar.gz
步骤三:备份旧版本的执行程序。
tar -cvf /payment/bak/nginx.sbin.20140115.tar /payment/nginx/sbin/
步骤四:编译新版本,增删模块。
tar zxvf /payment/bak/nginx-1.4.3.tar.gz
cd /payment/bak/nginx-1.4.3
./configure --prefix=/payment/nginx
make
make install
步骤五:替换。
kill -USR2 21727
ll /payment/nginx/logs/nginx*
ps aux|grep nginx
kill -WINCH 21727
一段时间之后,旧的工作进程(worker process)处理了所有已连击的请求后推出,仅由新的工作进程(worker process)来处理请求了。
步骤六:决定使用新版本还是恢复到旧版本。
使用新版本:kill -QUIT 21727
新的主进程退出后,旧的主进程会移除.oldbin后缀,恢复为他的.pid文件,这样,一切就都恢复为升级之前了。 如果尝试升级成功,而自己又希望保留新版本时,可发送QUIT信号给旧的主进程,使其退出而只留下新的进程运行:kill -QUIT 旧主进程号。
为了能够更加安全,往往采用隐藏软件版本号的方法,此处插入步骤七,对版本号进行隐藏。
步骤七:备份配置文件并隐藏版本号
(1)备份:tar -cvf /payment/bak/nginx.conf.20140115.tar /payment/nginx/conf/
(2)vi /payment/nginx/conf/nginx.conf
http中加入:
server_tokens off;
vi /payment/nginx/conf/fastcgi.conf
修改:
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
为
fastcgi_param SERVER_SOFTWARE nginx;
(3)重新加载配置文件。
./nginx -s reload
验证:curl --head 127.0.0.1
不停服务情况下升级nginx的更多相关文章
- @Java Web 程序员,我们一起给程序开个后门吧:让你在保留现场,服务不重启的情况下,执行我们的调试代码
		
一.前言 这篇算是类加载器的实战第五篇,前面几篇在这里,后续会持续写这方面的一些东西. 实战分析Tomcat的类加载器结构(使用Eclipse MAT验证) 还是Tomcat,关于类加载器的趣味实验 ...
 - Linux开启SELinux的情况下怎么解决nginx403跟502错误
		
https://www.cnblogs.com/caijt/p/10978324.html 以上篇博客中说了怎么在linux部署asp.net core 跟 nginx,里面成功的前提是把SElin ...
 - 老版本nginx存在安全漏洞,不停服务热升级
		
1.场景描述 安全部通知:nginx存在"整数溢出漏洞",经测试2017年4月21日之后的版本无问题,将openresty升级到最新版本,Nginx升级到1.13.2之后的版本. ...
 - (转)不停止Nginx服务的情况下平滑变更Nginx配置
		
在不停止Nginx服务的情况下平滑变更Nginx配置 1.修改/usr/local/webserver/nginx/conf/nginx.conf配置文件后,请执行以下命令检查配置文件是否正确: /u ...
 - kubernetes下的Nginx加Tomcat三部曲之三:实战扩容和升级
		
本章是<kubernetes下的Nginx加Tomcat三部曲系列>的终篇,今天咱们一起在kubernetes环境对下图中tomcat的数量进行调整,再修改tomcat中web工程的源码, ...
 - Linux下,Nginx的安装、升级及动态添加模块
		
系统基于ubuntu server 14.04.4 amd64 安装 第一步 下载并解压Nginx压缩包 从Nginx官网下载Nginx,或者在Linux上执行wget http://nginx.or ...
 - 升级NGINX支持HTTP/2服务端推送
		
内容概览 NGINX从1.13.9版本开始支持HTTP/2服务端推送,上周找时间升级了下NGINX,在博客上试验新的特性. 升级工作主要包括: 升级NGINX 修改NGINX配置 修改wordpres ...
 - 一次http请求,谁会先断开TCP连接?什么情况下客户端先断,什么情况下服务端先断?
		
我们有2台内部http服务(nginx): 201:这台服务器部署的服务是account.api.91160.com,这个服务是供前端页面调用: 202:这台服务器部署的服务是hdbs.api.911 ...
 - 小D课堂 - 新版本微服务springcloud+Docker教程_6-05 高级篇幅之高并发情况下
		
笔记 5.高级篇幅之高并发情况下接口限流特技 简介:谷歌guava框架介绍,网关限流使用 1.nginx层限流 2.网关层限流 开始 mysql最大的连接数就是3千多.如果想把应用搞好 ...
 
随机推荐
- ACM之最短路径做题笔记与记录
			
在这里纪念一下从4月开始一直因为事情而荒废了的最短路,多亏了jbb的帮助,我才完成了FZU热身赛一题简单的一个用模拟链表存边以及最短路径的学习,目前(6.5)已经学会使用了最简单的djstral与sp ...
 - POJ1275Cashier Employment(查分约束系统)
			
链接1275Cashier Employment 题目大意就是说有一些人来应聘一个超级市场的工作,每个人的应聘的起始时间在0~23时之间,而超市在时间i需要R[i]个工作人员,而每个人的工作时间都是8 ...
 - CodeForces 711D Directed Roads (DFS判环+计数)
			
题意:给定一个有向图,然后你可能改变某一些边的方向,然后就形成一种新图,让你求最多有多少种无环图. 析:假设这个图中没有环,那么有多少种呢?也就是说每一边都有两种放法,一共有2^x种,x是边数,那么如 ...
 - C#委托及事件处理机制浅析
			
事件可以理解为某个对象所发出的消息,以通知特定动作(行为)的发生或状态的改变.行为的发生可能是来自用户交互,如鼠标点击:也可能源自其它的程序逻辑.在这里,触发事件的对象被称为事件(消息)发出者(sen ...
 - CCPC总结
			
[印象·南阳] 10月15日出发,威海—烟台—郑州—南阳,一路上欢声笑语,从谁是卧底到各类纸牌游戏,也是欢乐.在从郑州到南阳的车上,对面的好像是河南当地的学长,感叹道工作不易的样子,说还是学生时代最为 ...
 - 一个模拟"显示桌面.scf"程序的JS小函数
			
有时候我们或许有这样的一个需求,用JS模拟这样一个动作,同时按下组合快捷键:Windows旗帜键+D键,下面这个函数就可以帮到我们了. function f_ToggleDesktop() { var ...
 - (剑指Offer)面试题27:二叉搜索树与双向链表
			
题目: 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. 二叉树的定义如下: struct TreeNode{ int val; Tr ...
 - PL/pgSQL学习笔记之八
			
http://www.postgresql.org/docs/9.1/static/plpgsql-declarations.html 另外一种声明 PL/pgSQL 函数的方法是使用 returns ...
 - Java常见排序算法之Shell排序
			
在学习算法的过程中,我们难免会接触很多和排序相关的算法.总而言之,对于任何编程人员来说,基本的排序算法是必须要掌握的. 从今天开始,我们将要进行基本的排序算法的讲解.Are you ready?Let ...
 - JavaWeb-10(会话技术之session&JSP)
			
JavaWeb-会话技术之session&JSP 会话管理之Session技术 一.Session 在WEB开发中,server能够为每一个用户浏览器创建一个会话对象(session对象),注 ...