linux下应用程序不同版本平滑升级的一个疑问

chinatree 发布于 2012/11/23 17:35
阅读 284
收藏 0

模拟环境:

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的问题得到解决,我猜这些程序的平滑升级也是类似。

加载中
返回顶部
顶部