Nginx平滑升级的详细操作方法

 更新时间:2014年03月06日 10:47:48   作者:  
这篇文章主要介绍了Nginx平滑升级的详细操作方法,适应编译安装ningx的情况,yum安装的直接用yum更新即可,需要的朋友可以参考下

一、平滑升级概述
Nginx方便地帮助我们实现了平滑升级。其原理简单概括,就是:
(1)在不停掉老进程的情况下,启动新进程。
(2)老进程负责处理仍然没有处理完的请求,但不再接受处理请求。
(3)新进程接受新请求。
(4)老进程处理完所有请求,关闭所有连接后,停止。
这样就很方便地实现了平滑升级。一般有两种情况下需要升级Nginx,一种是确实要升级Nginx的版本,另一种是要为Nginx添加新的模块。
二.、升级过程
具体的操作也很简单,如下:

(0)查看当前版本
在存放Nginx的可执行文件的目录下输入:

复制代码 代码如下:
./nginx -V 

(1)下载新的Nginx版本并编译。

复制代码 代码如下:
wget nginx-1.0.11.tar.gz 
tar zxvf nginx-1.0.11.tar.gz 
cd nginx-1.0.11 
./configure --add-module=/customized_module_0 --add-module=/customized_module_1 
make 

注意不要进行make install

(2)备份老版本的可执行文件

复制代码 代码如下:
cd /usr/local/nginx/sbin 
sudo cp nginx nginx.old 

(3)修改配置文件
如果有必要的话,进行配置文件的修改。

(4)拷贝新的可执行文件

复制代码 代码如下:
sudo cp /home/michael/tmp/nginx-1.0.11/objs/nginx /usr/local/nginx/sbin/ 

(5)升级

复制代码 代码如下:
cd /home/michael/tmp/nginx-1.0.11 
make upgrade 

(6)清理多余文件

复制代码 代码如下:
rm -rf /home/michael/tmp/nginx-1.0.11 

(7)查看Nginx版本

复制代码 代码如下:
cd /usr/local/nginx/sbin 
./nginx -V 

三、观察进程变化

在我的机器上可以观察到,我配置的是10个worker进程,启动后观察到:

复制代码 代码如下:
root      6241 10419  0 10:51 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx 
nobody    6242  6241  2 10:51 ?        00:00:00 nginx: worker process       
nobody    6243  6241  0 10:51 ?        00:00:00 nginx: worker process       
nobody    6244  6241  0 10:51 ?        00:00:00 nginx: worker process       
nobody    6245  6241  0 10:51 ?        00:00:00 nginx: worker process       
nobody    6246  6241  0 10:51 ?        00:00:00 nginx: worker process       
nobody    6247  6241  0 10:51 ?        00:00:00 nginx: worker process       
nobody    6248  6241  0 10:51 ?        00:00:00 nginx: worker process       
nobody    6249  6241  0 10:51 ?        00:00:00 nginx: worker process       
nobody    6250  6241  0 10:51 ?        00:00:00 nginx: worker process       
nobody    6251  6241  1 10:51 ?        00:00:00 nginx: worker process       
nobody    6252  6241  0 10:51 ?        00:00:00 nginx: cache manager process 
nobody    6253  6241  0 10:51 ?        00:00:00 nginx: cache loader process 
luming    6310 25051  0 10:51 pts/1    00:00:00 grep --color=auto nginx 
nobody    7995 10419  0 Jan12 ?        00:20:37 nginx: worker process is shutting down 
nobody    7996 10419  0 Jan12 ?        00:20:11 nginx: worker process is shutting down 
nobody    7998 10419  0 Jan12 ?        00:20:04 nginx: worker process is shutting down 
nobody    8003 10419  0 Jan12 ?        00:20:12 nginx: worker process is shutting down 
root     10419     1  0 Jan08 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx 

可见新的进程有1个master和10个worker,另外还有1个老的master(可以从时间上看出)和4个worker(其他6个老的worker已经处理完所有连接而shutdown了)。还有一个loader进程。过几秒种可以看到worker只有两个了:

复制代码 代码如下:
root      6241 10419  0 10:51 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx 
nobody    6242  6241  1 10:51 ?        00:00:00 nginx: worker process       
nobody    6243  6241  0 10:51 ?        00:00:00 nginx: worker process       
nobody    6244  6241  0 10:51 ?        00:00:00 nginx: worker process       
nobody    6245  6241  0 10:51 ?        00:00:00 nginx: worker process       
nobody    6246  6241  0 10:51 ?        00:00:00 nginx: worker process       
nobody    6247  6241  0 10:51 ?        00:00:00 nginx: worker process       
nobody    6248  6241  0 10:51 ?        00:00:00 nginx: worker process       
nobody    6249  6241  0 10:51 ?        00:00:00 nginx: worker process       
nobody    6250  6241  0 10:51 ?        00:00:00 nginx: worker process       
nobody    6251  6241  0 10:51 ?        00:00:00 nginx: worker process       
nobody    6252  6241  0 10:51 ?        00:00:00 nginx: cache manager process 
nobody    6253  6241  0 10:51 ?        00:00:00 nginx: cache loader process 
luming    6430 25051  0 10:51 pts/1    00:00:00 grep --color=auto nginx 
nobody    7996 10419  0 Jan12 ?        00:20:11 nginx: worker process is shutting down 
nobody    8003 10419  0 Jan12 ?        00:20:12 nginx: worker process is shutting down 
root     10419     1  0 Jan08 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx 

再过一小会儿观察:

复制代码 代码如下:
root      6241     1  0 10:51 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx 
nobody    6242  6241  0 10:51 ?        00:00:01 nginx: worker process       
nobody    6243  6241  0 10:51 ?        00:00:01 nginx: worker process       
nobody    6244  6241  0 10:51 ?        00:00:01 nginx: worker process       
nobody    6245  6241  0 10:51 ?        00:00:00 nginx: worker process       
nobody    6246  6241  0 10:51 ?        00:00:00 nginx: worker process       
nobody    6247  6241  0 10:51 ?        00:00:00 nginx: worker process       
nobody    6248  6241  0 10:51 ?        00:00:00 nginx: worker process       
nobody    6249  6241  0 10:51 ?        00:00:00 nginx: worker process       
nobody    6250  6241  0 10:51 ?        00:00:01 nginx: worker process       
nobody    6251  6241  0 10:51 ?        00:00:02 nginx: worker process       
nobody    6252  6241  0 10:51 ?        00:00:00 nginx: cache manager process 
luming    8680 25051  0 10:56 pts/1    00:00:00 grep --color=auto nginx 

Congratulations! You can upgrade your Nginx server gracefully.

 

相关文章

  • Nginx配置并开启WebDAV服务的完整指南

    Nginx配置并开启WebDAV服务的完整指南

    本文主要介绍了Nginx上配置并开启WebDAV服务的完整指南,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-02-02
  • 前端异常502 bad gateway的原因和解决办法

    前端异常502 bad gateway的原因和解决办法

    本文详细讲解了前端异常502 bad gateway的原因和解决办法,文中通过示例代码介绍的非常详细。对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧<BR>
    2021-12-12
  • Nginx实现Nacos反向代理的项目实践

    Nginx实现Nacos反向代理的项目实践

    在日常的web网站部署中,经常会用到nginx反向代理,本文主要介绍了Nginx实现Nacos反向代理的项目实践,Nginx实现Nacos反向代理的项目实践
    2022-03-03
  • Nginx防盗链与服务优化配置的全过程

    Nginx防盗链与服务优化配置的全过程

    由于Nginx本身的一些优点,轻量,开源,易用,越来越多的公司使用nginx作为自己公司的web应用服务器,下面这篇文章主要给大家介绍了关于Nginx防盗链与服务优化配置的相关资料,需要的朋友可以参考下
    2022-01-01
  • 聊聊配置 Nginx 访问与错误日志的问题

    聊聊配置 Nginx 访问与错误日志的问题

    这篇文章主要介绍了配置 Nginx 访问与错误日志,Nginx是一个开放源代码的高性能HTTP和反向代理服务器,负责处理Internet上某些最大站点的负载,对Nginx 错误日志相关知识感兴趣的朋友一起看看吧
    2022-05-05
  • Nginx配置入门教程

    Nginx配置入门教程

    这篇文章主要介绍了Nginx配置入门教程,本文讲解了反向代理的概念、初始配置、进阶配置、负载均衡配置等内容,需要的朋友可以参考下
    2015-02-02
  • Windows系统下安装及部署Nginx详细教程(含多个站点部署)

    Windows系统下安装及部署Nginx详细教程(含多个站点部署)

    Nginx是一个很强大的高性能Web和反向代理服务,也是一种轻量级的Web服务器,可以作为独立的服务器部署网站,应用非常广泛,这篇文章主要给大家介绍了关于Windows系统下安装及部署Nginx(含多个站点部署)的相关资料,需要的朋友可以参考下
    2024-01-01
  • Nginx使用反向代理实现负载均衡过程解析

    Nginx使用反向代理实现负载均衡过程解析

    这篇文章主要介绍了Nginx使用反向代理实现负载均衡过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • windows7下安装PHP+nginx的方法

    windows7下安装PHP+nginx的方法

    这篇文章主要介绍了windows7下安装PHP+nginx的方法,较为详细的分析了Windows7环境下安装php与nginx服务器环境的具体步骤与相关设置技巧,需要的朋友可以参考下
    2016-05-05
  • NGINX基于cookie针对同一域名进行分流转发

    NGINX基于cookie针对同一域名进行分流转发

    本文介绍了利用NGINX基于cookie进行多环境分流的方法,通过在Docker中部署两个后端NGINX容器,并在前端NGINX配置中设置map规则,根据cookie值将请求分发到不同后端,感兴趣的可以了解一下
    2025-07-07

最新评论