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)
我想在Nginx添加一个新的模块,重新编译生成新的nginx可执行程序,然后旧的nginx重命名为那个nginx.old,把新的nginx复制到/usr/local/nginx/sbin/下,启动新的nginx,出现如下错误:
网上的解决方发是kill掉原来nginx进程,可是这就不符合平滑升级了,请问有没有什么解决办法?
在Nginx平滑upgrade时: 首先发送USR2信号(平滑升级可执行程序)给原master,原master进程会额外启动一个master进程和若干worker进程,新旧worker进程同时提供对外服务. 第二步发送WINCH信号(从容关闭工作进程),原worker进程停止服务并退出. 最后发送QUIT信号(从容关闭)给原master使之退出,只保留新的master和worker. (责任编辑:IT) |