nginx的平滑升级(热部署)

本文介绍了如何进行nginx的源码安装,并详细讲解了平滑升级(热部署)的过程,包括设置worker数,查看进程,以及在升级过程中如何为文件添加高光以便于编辑。在升级时,新旧版本的nginx通过特定的进程管理方式实现无缝切换,确保服务的连续性和稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、nginx的源码安装

[root@server1 nginx-1.14.2]# vim auto/cc/gcc 
# debug
#CFLAGS="$CFLAGS -g"(注销debug日志)


[root@server1 nginx-1.14.2]# yum install -y gcc pcre-devel zlib-devel(安装编译软件、依赖性软件)
[root@server1 nginx-1.14.2]# ./configure --prefix=/usr/local/nginx/

此时,objs目录如下:
在这里插入图片描述

[root@server1 nginx-1.14.2]# make && make  install(安装)

objs目录发生改变:
在这里插入图片描述

  • 设置Nginx的worker数:
    查看cpu内核数:
    在这里插入图片描述
    编辑nginx配置文件,worker数为自动。

      [root@server1 nginx]# vim conf/nginx.conf
      #user  nobody;
      worker_processes  auto;(worker数与cpu内核数相同或选取自动,根据访问数据自动调节worker数)
    

    [root@server1 nginx-1.14.2]# /usr/local/nginx/sbin/nginx (打开nginx服务)
    查看进程ps ax | grep nginx:
    在这里插入图片描述

  • 为使编辑文件更容易,我们为文件添加高光:

      [root@server1 ~]# mkdir .vim
      [root@server1 ~]# cd nginx-1.14.2/contrib/
      [root@server1 contrib]# ls
      geo2nginx.pl  README  unicode2nginx  vim
      [root@server1 contrib]# cp -r vim/* ~/.vim
      [root@server1 ~]# vim /usr/local/nginx/conf/nginx.conf
    

下图,文件有高光,便于提示我们错误。
在这里插入图片描述

二、平滑升级(热部署)

旧的mask和work开启时,被新的mask和work替换。新版本的不能make install

  • 安装nginx-1.15.8

     [root@server1 ~]# ls
     nginx-1.14.2  nginx-1.14.2.tar.gz  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]# vim auto/cc/gcc 
     # debug
     #CFLAGS="$CFLAGS -g"(注销debug日志)
     [root@server1 nginx-1.15.8]# cd
     [root@server1 ~]# cd /usr/local/nginx/sbin/
     [root@server1 sbin]# cp nginx nginx_old(备份原版的执行脚本)
     [root@server1 nginx-1.15.8]# ./configure --prefix=/usr/local/nginx/
     [root@server1 nginx-1.15.8]# make
    

因为此时旧版本还在运行,所以要强制复制。
在这里插入图片描述
查看进程,此时只有原版本的一个master进程和两个work进程,通过kill信号拉起新的nginx服务。再查看nginx进程此时有两个master进程和两个work进程。之后的访问都会连接到新nginx服务上,但旧版本nginx的work进程此时仍在处理已接收的访问,等连接断开后,其自动关闭。但为限制持续连接,旧版nginx此时的连接时有时间限制的,到时间后自动关闭。
在这里插入图片描述
停止旧nginx,但master进程依然在,为防止新Nginx故障,可及时补救.
在这里插入图片描述
如果新服务出现故障,旧服务上线:
将备份好的原版nginx脚本覆盖掉新nginx的执行脚本。

[root@server1 sbin]# cp nginx_old nginx -f
cp: overwrite ‘nginx’? y

kill -HUP (重载)与reload相同
在这里插入图片描述
停止新nginx服务。查看进程,此时运行的work进程都是旧版nginx的进程。
在这里插入图片描述
此时查看运行的版本恢复成原版本

[root@server1 sbin]# /usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.14.2

可通过查看进程pid关闭服务

[root@server1 sbin]# cat /usr/local/nginx/logs/nginx.pid
6090
[root@server1 sbin]# kill -9 6090
### Nginx 1.27 版本的平滑升级方法 对于Nginx 1.27版本而言,实现平滑升级的关键在于确保服务不间断的同时完成新旧版本之间的切换。具体操作涉及编译安装新的Nginx版本并调整现有配置以兼容新版特性。 #### 编译安装新版本 首先获取最新版源码包: ```bash wget -c http://nginx.org/download/nginx-1.27.0.tar.gz ``` 解压后按照官方文档说明进行编译安装[^1]。需要注意的是,在此过程中应保留原有配置文件路径不变,以便后续迁移设置更加简便。 #### 修改配置文件 找到当前使用的`nginx.conf`位置,并对其进行适当修改适应新版本需求: ```bash vi /usr/local/nginx-1.27.0/conf/nginx.conf ``` 特别注意取消某些特定指令前后的注释标记,比如用户权限设定部分: ```vim user nobody; ``` 这一步骤有助于确保所有工作进程能够正常启动运行[^3]。 #### 创建可执行文件快捷方式 为了简化命令调用流程,建议建立指向新安装目录下的Nginx二进制程序的符号链接: ```bash ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx ``` 此举可以避免因路径问题引发的各种错误提示信息[^4]。 #### 执行平滑重启过程 当一切准备就绪之后,可以通过发送信号给主控进程来触发无中断的服务更新动作。这里推荐采用SIGUSR2信号来进行热部署操作——它允许在不停止对外提供访问的前提下加载最新的二进制镜像以及应用层面上所做的任何改动。 ```bash kill -USR2 `cat /usr/local/nginx/logs/nginx.pid` ``` 此时系统内部将会逐步替换掉老的工作线程实例而不会影响到正在进行中的请求处理任务。待确认新版本已经稳定接管流量之后再手动终止遗留下来的旧版组件即可[^5]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值