0
回答
linux下应用程序不同版本平滑升级的一个疑问
滴滴云服务器,限时包月0.9元,为开发者而生>>>   

模拟环境:

Nginx升级:

旧版本:nginx-1.2.2  新版本nginx-1.2.5

旧版的nginx安装情况如下:

wget http://nginx.org/download/nginx-1.2.2.tar.gz
cd nginx-1.2.2
./configure --prefix=/usr/local/services/nginx-1.2.2
make
sudo make install
sudo ln -s /usr/local/services/nginx-1.2.2 /usr/local/services/nginx

编译安装目录:/usr/local/services/nginx-1.2.2

启动程序:/usr/local/services/nginx/sbin/nginx (上面已经做了软链)


假设我现在需要更新到新版本nginx-1.2.5

wget http://nginx.org/download/nginx-1.2.5.tar.gz
cd nginx-1.2.5
./configure --prefix=/usr/local/services/nginx
make
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx-122
cp objs/nginx /usr/local/nginx/sbin/nginx
sudo make upgrade
参考网址:http://www.discuz.net/thread-2362196-1-1.html

问题出现了:

1、参考网址上强调不用make install,原因是什么?

PS:本人先前在线上升级时采用的就是

kill -USR2 `cat /usr/local/services/nginx-1.2.2/logs/nginx.pid`
sleep 1
test -f /usr/local/services/nginx-1.2.2/logs/nginx.pid.oldbin
/usr/local/services/nginx/sbin/nginx
kill -QUIT `cat /usr/local/services/nginx-1.2.2/logs/nginx.pid.oldbin`

2、如果我新版本的安装目录--prefix指定的是/usr/local/services/nginx-1.2.5时,如何平滑重启?

注:这里强调的是平滑,而不是kill掉旧版本的进程再启新版本的进程,因为这方法不平滑。

3、软链除了rm掉后再ln -s外,是否有直接modify的方法,查看man ln和google都未果?


当然,同样有此疑问的程序有php-fpm、apache等,上面nginx的问题得到解决,我猜这些程序的平滑升级也是类似。

举报
chinatree
发帖于5年前 0回/274阅
顶部