首页 > 系统相关 >nginx平衡升级在线升级

nginx平衡升级在线升级

时间:2023-12-27 18:02:10浏览次数:28  
标签:在线 temp 编译 -- 升级 nginx 进程

nginx在线升级:

nginx根据安装方式不同,升级方式也不同,一般有三种:

  • yum方式安装,通过yum升级,不停机升级。
  • 编译方式安装,通过编译方式升级,不停机升级。
  • 容器方式安装,启动新容器方式升级,如果端口不变,需要停机,否则容器启动提示端口冲突。

yum升级

1、首选查看yum安装的nginx版本,

nginx -V

查看版本。

2、添加新的nginx源,并安装,如下:

wget https://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm

3、清除当前的yum缓存后,升级nginx,命令如下:

yum clean all  && yum makecache

yum update nginx  #升级nginx

4、再次检查nginx版本,已经升级到最新版本。

nginx -V

通过编译安装升级

编译方式升级nginx的前提,是您当前nginx是编译安装的(非编译安装未操作过)

1、从图中查看nginx版本是1.24,现在我们升级到1.25.0

nginx平衡升级在线升级_nginx在线升级

2、下载1.25.0版本nginx到机器上,并解压

mkdir /opt/softwar/ && cd /opt/softwar
wget  https://nginx.org/download/nginx-1.25.0.tar.gz
tar zxvf nginx-1.25.0.tar.gz  -C /opt
cd nginx-1.25.0

3、编译nginx,注意编译时候需要将第一步中的相关模块添加上,如下:

./configure --prefix=/usr/local/nginx  ---xxxxx

prefix制定的路径要与之前编译制定的路径一致。

测试:
$ ./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi \--with-http_stub_status_module \--with-http_ssl_module \--with-file-aio \--with-http_realip_module

4、执行make命令,注意不要执行make install,会导致覆盖

make

5、备份原来的nginx可执行文件

如下 cp /usr/local/nginx/sbing/nginx   /usr/local/nginx/sbin/nginx.bak

6、替换新的二进制文件覆盖旧的,如下

cp /opt/softwar/nginx-1.25.0/objs/nginx /usr/local/nginx/sbin/nginx

注意:新的二进制文件是在源码包编译后的objs目录下。

7、检查nginx配置,可以看到配置正常

nginx  -t

8、发送USR2信号给nginx master进程,执行新的主进程和新的工作进程,依次启动新的主进程和新的工作进程。

kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
ps -aux|grep nginx 
cd /opt/nginx/logs 
nginx -V

nginx平衡升级在线升级_nginx_02

nginx平衡升级在线升级_nginx在线升级_03

若是需要降回老版本

sbin/nginx  还原启动文件。
kill -USR2  `cat /opt/nginx/logs/nginx.pid` 
nginx -V

● Nginx 的信号控制 

TERM, INT 快速关闭
QUIT 从容关闭
HUP 平滑重启,重新加载配置文件
USR1 重新打开日志文件,在切割日志时用途较大
USR2 平滑升级可执行程序
WINCH 从容关闭工作进程

 Nginx 的平滑升级 

        当需要将正在运行中的 nginx 升级、添加/删除服务器模块时,可以在不中断服务的情况下,使用新版本、重编译的 nginx 可执行程序替换旧版本的课执行程序。步骤如下: 

        (1) 使用新的可执行程序替换旧的可执行程序,对于编译安装的 nginx,可以将新版本编译安装到旧版本的 nginx 安装路径中。替换之前,最好备份一下旧的可执行文件。 

        (2) 发送以下指令: 

  1. [root@localhost ~]# kill -USR2 【旧颁布的Nginx主进程号】  

        (3) 旧版本 nginx 的主进程将重命名它的 pid 文件为 .oldbin(例如:/usr/local/nginx/logs/nginx.pid.oldbin),然后执行新版本的 nginx 可执行程序,依次启动新的主进程和新的工作进程。 

        (4) 此时,新、旧版本的 nginx 实例会同时运行,共同处理输入的请求。要逐步停止旧版本的 nginx 实例,你必须发送 WINCH 信号给旧的主进程,然后,它的工作进程就将开始从容关闭: 

  1. kill -WINCH 【旧版本的Nginx主进程号】  

        (5) 一段时间后,旧的工作进程(worker process)处理了所有已连接的请求后退出,仅由新的工作进程来处理输入的请求了。 

        (6) 这时候,我们可以决定是使用新版本,还是恢复到旧版本: 
            

kill -HUP 【旧的主进程号】:nginx 将在不重载配置文件的情况下启动它的工作进程 
kill -QUIT 【新的主进程号】:从容关闭其工作进程(worker process) 
kill -TERM 【新的主进程号】:强制退出 
kill 【新的主进程号或旧的主进程号】:如果因为某些原因新的工作进程不能退出,则向其发送 kill 信号

        新的主进程退出后,旧的主进程会移除 .oldbin 后缀,恢复为它 的 .pid 文件,这样,一切就恢复到升级之前了。如果尝试升级成功,而你也希望保留新的服务器时,可发送 QUIT 信号给旧的主进程,使其退出而只留下新的服务器运行。

docker方式升级

docker方式升级比较简单,只要停止旧容器,然后新运行一个容器,并且保证新容器的挂载路径和旧的相同即可

1、首先查看当前容器运行的Nginx版本,执行命令如下:

docker inspect nginx

2、查看当前Nginx的挂载文件信息。

3、停止当前Nginx,使用新镜像启动一个新的容器,如下:

 

docker stop nginx
docker run -itd --name new-nginx -v /data/nginx/nginx.conf:/etc/nginx/nginx.conf -p 80:80 nginx

4、再次查看容器中的Nginx镜像版本,已经升级成功,如图:

nginx -V

注意:新的容器运行一段时间后,如果没有问题,就可以将旧的容器删除

参考:https://www.cnblogs.com/cherishthepresent/p/17668713.html

标签:在线,temp,编译,--,升级,nginx,进程
From: https://blog.51cto.com/sry2004/9002686

相关文章

  • 什么是在线客服系统
    在线客服系统是一种通过互联网提供实时客户支持和服务的系统。它通常包括一系列工具和功能,旨在帮助企业与其客户进行即时的在线交流。这种系统可以以多种形式存在,其中最常见的是通过网站、移动APP或社交软件,提供在线聊天、语音通话或视频通话等形式的客户支持。在线客服系统的主......
  • 牛客OJ在线编程常见输入输出练习
    练习链接:https://www.nowcoder.com/exam/test/76850250/detail?pid=27976983&examPageSource=Search 题目:A+B(4)输入数据包括多组。每组数据一行,每行的第一个整数为整数的个数n(1<=n<=100),n为0的时候结束输入。接下来n个正整数,即需要求和的每个正整数。示例:输入......
  • nginx切割日志部署脚本编写
    #!/bin/bash#utf-8#description:部署nginx_lograte.sh脚本#---------------------------------------------------------------------script_name="logrotate_new.sh"script_download_directory="http://172.20.147.61/CentOS/app/script/hby"#......
  • Oracle 11g RAC(openfiler +multipath +udev +补丁升级)
    配套视频:《Oracle11gRAC安装》 或《Oracle11gRAC安装》配套文档:《一步一步在linux上部署Oracle11gR2RAC》......
  • 虚拟机 搭建 nginx
    1虚拟机安装nginx      关于systemctl的一些使用命令systemctlstartxxxsystemctlstopxxxsystemctlenablexxxsystemctldisablexxxsystemctlstatusxxxsystemctlreloadxxx  2关闭防火墙或者打开相应的端口     关于nginx......
  • Nginx项目部署
    本篇来总结一下vue项目打包部署到nginx上的流程和注意事项使用1.Vue打包在NPM脚本中找到build,或者在终端控制台输入npmrunbuild就可以对vue项目进行打包在文件目录dist中的文件就是本次打包的文件2.nginx简介Nginx是一款轻量级的Web服务器/反向代理服务器及其电子邮件......
  • CentOS7下快速升级至OpenSSH9.3p2安全版本
    之前的文章可供参考:CentOS7下快速升级OpenSSH至8.9p1安全版本一、CentOS7服务器上编译生成OpenSSH9.3p2的RPM包1、编译打包的shell脚本来源于该项目https://github.com/boypt/openssh-rpms复制(图片点击放大查看)unzipopenssh-rpms-main.zip-d/optcd/opt/cdop......
  • [Nginx] API请求体过大时,报:Nginx 413 Request Entity Too Large [转载]
    1问题描述此问题(通过方法1)已解决,但整体的解决思路,参考自网友,故著名为【转载】文章昨晚压测时,通过API请求10000个设备的若干信号(5个)状态时,Postman返回Nginx的如下错误API整个请求有1.37MB413RequestEntityTooLarge2问题分析通过字面意思,即可知悉:nginx的cl......
  • nginx 安装
    #!/bin/bash###############################################################FileName:install_nginx.sh#Version:V1.0#Author:junwang#Organization:#CreatedTime:2021-04-1317:12:54#Description:###############################################......
  • mongo升级服务,数据迁移迁移
    3*升级到5.*,会碰到索引不兼容问题 usestars_salesvarcollections=db.getCollectionNames();collections.forEach(function(collection){varindexes=db[collection].getIndexes();print("Indexesforcollection"+collection+":");printjson(......