标签:
初学nginx,用的苗泽老师的《Nginx高性能Web服务器详解》作参考,在升级这块儿,书上用nginx -g USR2,我没做出来,还有,书上平滑重启使用nginx -g HUP [-c newConfile],这个我测试也没弄出来,-g选项不是这么用的吧。希望知道的网友可以为我解惑
于是在网上查了资料,整理如下:
1.查看之前的编译选项
nginx -V
2.备份旧版本nginx主程序
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
3.编译新版nginx,使用之前的选项
./configure .......
make (有的资料没提到这一步,我发现若不make,则在objs下没有nginx程序;也有的资料提到make upgrade,这个之后再测试)
4.在源码目录中的objs目录下找到新的nginx主程序
cp nginx /usr/local/nginx/sbin/
此时nginx -v可看到新版本号
nginx -t测试新版是否正常
5.平滑升级
kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
此时,在logs目录下,之前的pid文件变为nginx.pid.oldbin
ps -ef | grep nginx可以看到新旧的nginx都在运行
关闭旧的worker进程
kill -WINCH `cat /usr/local/nginx/logs/nginx.pid.oldbin`
关闭旧的master进程,同时nginx.pid.oldbin文件也没了
kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`
Nginx可接收信号
TERM或 INT 快速停止nginx
QUIT 平缓停止nginx
HUP 平滑重启
USR1 重新打开日志文件,常用于日志切割
USR2 平滑升级
WINCH 平缓停止worker process,用于nginx平滑升级
标签:
原文地址:http://my.oschina.net/cqslpxzzp/blog/384744