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


    转至:https://blog.csdn.net/midion9/article/details/49684325

    一、平滑升级概述
    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.

  • 相关阅读:
    HDU 2955 Robberies(01背包)
    HDU 2602 Bone Collector(01背包)
    HUST 1352 Repetitions of Substrings(字符串)
    HUST 1358 Uiwurerirexb jeqvad(模拟解密)
    HUST 1404 Hamming Distance(字符串)
    HDU 4520 小Q系列故事――最佳裁判(STL)
    HDU 2058 The sum problem(枚举)
    【破解】修改程序版权、添加弹窗
    HDU 1407 测试你是否和LTC水平一样高(枚举)
    HDU 1050 Moving Tables(贪心)
  • 原文地址:https://www.cnblogs.com/my-first-blog-lgz/p/15304153.html
Copyright © 2020-2023  润新知