q9989 发表于 2018-11-14 09:42:47

不停止nginx服务的情况下替换nginx执行文件

  参考文章:
  1、http://www.linuxde.net/2011/08/554.html
  2、http://www.cnblogs.com/sayou/p/3711918.html
  目前老的nginx正在运行中,我们要进行nginx执行文件的替换。下面我记录一下我的操作:
  1、下载一个新版本的nginx源码包儿解压,写好参数比如./configure --prefix=/usr/local/ --with-http_mp4_module --with-http_flv_module 然后执行make,但不make install。或者将同一个版本的nginx的源码包更新参数,比如增加一个模块--with-http_stub_status_module然后make,还是一样不要执行make install
  2、替换nginx执行文件。
  备份原nginx执行文件
  mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/1.10.0_nginx
  进入源码包所在目录下的objs目录,将nginx文件复制到/usr/local/nginx/sbin/
  cp /tmp/nginx-1.11.3/objs/nginx /usr/local/nginx/sbin/
  3、旧的请求,继续由旧执行文件处理,新的请求统统由新程序执行。
  新执行文件启动,生成新进程号,新旧的进程共存!
  kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
  或kill -12 `cat /usr/local/nginx/logs/nginx.pid`
  新来的请求统统由新程序处理,老的连接还继续由老程序处理。
  kill -WINCH `cat /usr/local/nginx/logs/nginx.pid.oldbin`
  或kill -28 `cat /usr/local/nginx/logs/nginx.pid.oldbin`
  愣一段儿时间,你觉得没有人还在用旧的程序了。时机到了,彻底弃用旧程序!
  kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`
  或kill -3 `cat /usr/local/nginx/logs/nginx.pid.oldbin`
  就算不去kill旧的nginx进程也会在所有请求都处理完毕了自动退出。所以也可以不执行kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`

页: [1]
查看完整版本: 不停止nginx服务的情况下替换nginx执行文件