nginx平滑升级

      初学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编译;也有的资料提到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平滑升级


你可能感兴趣的:(nginx,平滑升级)