您的位置:首页 > 运维架构 > Nginx

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

2016-09-07 16:25 579 查看
参考文章:

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`
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐