首页 > 系统相关 >Nginx--平滑升级

Nginx--平滑升级

时间:2024-02-05 11:03:44浏览次数:32  
标签:nginx -- 平滑 1.18 Nginx 进程 root localhost

在不中断服务的情况下,新的请求也不会丢失,使用新的 nginx 可执行程序替换旧的

 

1 查看老版本的编译选项

[root@localhost ~]# nginx -V
nginx version: nginx/1.16.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --with-http_realip_module --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module

 

2 编译新版

[root@localhost ~]# cd nginx-1.18.0/
[root@localhost nginx-1.18.0]# ./ configure --with-http_realip_module --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module
[root@localhost nginx-1.18.0]# make && make install

 

3 用新编译的命令替换原来的命令

[root@localhost nginx-1.18.0]# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
[root@localhost nginx-1.18.0]# cp objs/nginx /usr/local/nginx/sbin/

 

4 启用新的 关闭旧的

[root@localhost nginx-1.18.0]# kill -USR2 \`cat /usr/local/nginx/logs/nginx.pid`
#主进程将重命名它的.pid文件为.oldbin 然后执行新的可执行程序,依次启动新的主进程和新的工作进程

[root@localhost nginx-1.18.0]# kill -WINCH \`cat /usr/local/nginx/logs/nginx.pid.oldbin`
#给旧的主进发WINCH信号,把旧的主进程关闭,把所有请求转到新的主进程,但是原有的请求不会中断,有新请求的时候发到新进程

#这时,因为旧的服务器还尚未关闭它监听的套接字,所以,通过下面的几步,仍可以恢复旧的服务器: 
    1.发送 HUP 信号给旧的主进程 - 它将在不重载配置文件的情况下启动它的工作进程 
    2.发送 QUIT 信号给新的主进程,要求其从容关闭其工作进程 
    3.发送 TERM 信号给新的主进程,迫使其退出 
    4.如果因为某些原因新的工作进程不能退出,向其发送 KILL 信号 
#新的主进程退出后,旧的主进程会由移除 .oldbin 前缀,恢复为它的 .pid 文件,这样,一切就都恢复到升级之前了

#如果尝试升级成功,但也希望保留新的服务器时,发送 QUIT 信号给旧的主进程使其退出而只留下新的服务器运行
[root@localhost nginx-1.18.0]# kill -QUIT \`cat /usr/local/nginx/logs/nginx.pid.oldbin`

 kill 信号

TERM, INT 快速关闭 
QUIT 从容关闭,关闭主进程顺便关闭工作子进程
HUP 重载配置用新的配置开始新的工作进程从容关闭旧的工作进程 
USR1 重新打开日志文件 
USR2 平滑升级可执行程序
WINCH 从容关闭工作进程,不会立即关闭子进程

 



标签:nginx,--,平滑,1.18,Nginx,进程,root,localhost
From: https://blog.51cto.com/u_16558404/9601633

相关文章

  • Nginx--upstream健康检查
    nginx判断节点失效状态:Nginx默认判断失败节点状态以connectrefuse和timeout状态为准,不以HTTP错误状态进行判断失败,因为HTTP只要能返回状态说明该节点还可以正常连接,所以nginx判断其还是存活状态;除非添加了proxy_next_upstream指令设置对404、502、503、504、500和timeout......
  • DNS--安装&&配置文件
    1 下载#下载服务yum-yinstallbind#下载解析工具yum-yinstallbind-utils 2 配置文件主配置文件/etc/named.conf区配置文件/var/named/配置文件模板/usr/share/doc/bind-9.8.2/sample 3 协议及端口TCP53主要用于主从同步,需要的是可靠的数......
  • DNS--简介&&解析过程
    1 功能将域名解析为IP地址基本解决IP难于记忆的问题也可以将IP地址解析为域名 2 域名由一连串用点(.)分隔的字符串组成的标识计算机在网络中的电子方位的 3 存储位置linux/etc/hostswindowsC:\WUNDOWS\system32\drivers\etc\hosts 4 全质量域名/完全域名......
  • DNS--解析
    一 正向解析(域名解析成ip)1 修改主配置文件[root@localhost~]#cp-p/etc/named.conf/etc/named.conf.bak[root@localhost~]#vim/etc/named.confoptions{listen-onport53{any;};#默认127.0.0.1,会导致其他人无法访问DNS服务器,需修改allow-qu......
  • DNS--智能地址解析(view视图)
    域名:xinenhui.comDNS服务器:192.168.198.128DNS1:192.168.198.129DNS2:192.168.198.146 1 简介使客户端就近访问DNS服务器来加速用户的访问速度 提高客户端体验不同的客户端使用同一个DNS服务器解析同一个域名得到不同的IP 2 修改主配置文件 设置view[root@localhost~]#vi......
  • DNS--主从
    操作系统:centos7.8DNS-master:192.168.198.128DNS-slave:192.168.198.129 一主从同步过程master修改完成重启后将传送notify给所有slaveslave将查询master的SOA记录master收到请求后将SOA记录发送给slaveslave收到后同时对比查询结果中的serial值,大于将发送zonetransfer......
  • 如何在Python中保留异常装饰器的堆栈跟踪
    异常装饰器是一种通过装饰器(Decorator)机制来捕获和处理函数中异常的技术。当函数中发生异常时,装饰器可以捕获异常并进行处理,也可以记录异常信息或进行其他操作。堆栈跟踪(StackTrace)是指在发生异常时,系统会输出一个包含异常信息和函数调用链的信息。对于经常使用python做爬虫来说,这......
  • 获取请求ip
    publicstaticStringgetUserIp(HttpServletRequestrequest){if(ObjectUtils.isEmpty(request)){returnnull;}//获取客户端前台IP进行解析StringuserIp=request.getHeader("x-forwarded-for");if(userIp==null||userIp.isEmpty......
  • mysql如何实现左连接、右连接
    学生表 students学生ID学生姓名1张三2李四3王五4小六5小七成绩表 grades学生ID课程学生成绩1数学862语文793数学914英语881、查询所有学生的id、姓名、成绩用左连接可以实现:SELECTstudents.学生ID,students.学生姓名,grades.成绩FROMstudentsLEFTJOINgradesONstudents.......
  • 理解日志基础:使用Python进行有效的日志记录
    源码分享https://docs.qq.com/sheet/DUHNQdlRUVUp5Vll2?tab=BB08J2日志记录是任何软件开发过程中的一个基本组成部分,尤其是在爬虫开发中。有效的日志记录策略可以帮助开发者监控爬虫的行为,诊断问题,以及追踪爬虫的性能。Python的logging模块提供了一套强大的日志记录工具,它可以帮助......