当前位置: > Linux服务器 > nginx >

Nginx平滑升级问题

时间:2014-12-27 20:35来源:linux.it.net.cn 作者:IT

我想在Nginx添加一个新的模块,重新编译生成新的nginx可执行程序,然后旧的nginx重命名为那个nginx.old,把新的nginx复制到/usr/local/nginx/sbin/下,启动新的nginx,出现如下错误: 

网上的解决方发是kill掉原来nginx进程,可是这就不符合平滑升级了,请问有没有什么解决办法?

Nginx官方源里提供有Nginx服务管理脚本,里面的平滑升级脚本函数: 

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
do_upgrade() {
    OLDBINPIDFILE=$PIDFILE.oldbin
 
    do_configtest -q || return 6
    start-stop-daemon --stop --signal USR2 --quiet --pidfile $PIDFILE --name $NAME
    RETVAL="$?"
    sleep 1
    if [ -f $OLDBINPIDFILE -a -f $PIDFILE ]; then
        start-stop-daemon --stop --signal QUIT --quiet --pidfile $OLDBINPIDFILE --name $NAME
        RETVAL="$?"
    else
        echo $"Upgrade failed!"
        RETVAL=1
        return $RETVAL
    fi
}




 

在Nginx平滑upgrade时: 首先发送USR2信号(平滑升级可执行程序)给原master,原master进程会额外启动一个master进程和若干worker进程,新旧worker进程同时提供对外服务. 第二步发送WINCH信号(从容关闭工作进程),原worker进程停止服务并退出. 最后发送QUIT信号(从容关闭)给原master使之退出,只保留新的master和worker.



 

(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容