Ngnix的一大特性是7 * 24小时不间断停止服务,其中一个重要的需求是当碰到双11这样的活动的时候,如果停止了一分钟,对于经营活动将会造成严重的影响:
现在有一个需求:
需求:Nginx的版本最开始使用的是Nginx-1.14.2,由于服务升级,需 要将Nginx的版本升级到Nginx-1.16.1,要求Nginx不能中断提供服务。
请问该怎样做?
环境准备 (1)先准备两个版本的Nginx分别是 1.14.2和1.16.1 (2)使用Nginx源码安装的方式将1.14.2版本安装成功并正确访问
先准备两个Ngnix的版本的相关文件
将Nginx1.16.1进行参数配置和编译,不需要进行安装。
进入安装目录
./configure
make && make install
进入到cd /usr/local/nginx/的资料里面有一个二进制文件,就可以重新启动了
使用Nginx服务信号进行升级
第一步:将1.14.2版本的sbin目录下的nginx进行备份
cd /usr/local/nginx/sbin mv nginx nginxold
第二步:将Nginx1.16.1安装目录编译后的objs目录下的nginx文件,拷贝 到原来 /usr/local/nginx/sbin目录下
cd ~/nginx/core/nginx-1.16.1/objs cp nginx /usr/local/nginx/sbin
第三步:发送信号USR2给Nginx的1.14.2版本对应的master进程
第四步:发送信号QUIT给Nginx的1.14.2版本对应的master进程
kill -QUIT `more /usr/local/logs/nginx.pid.oldbin`
第一步切换到存储到二进制的文件内 /usr/local/ngnix/sbin
第二步切换到cd ~/nginx/core/ngnix-1.16.1/文件下,经过编译后会有文件存储到objs当中
cd objs/当中
使用cp ngnix /usr/local/ngnix/sbin 可以拷贝相应的文件,
然后使用cd /usr/local/ngnix/sbin/可以切换到对应的文件当中
使用-USR2产生的影响是在后台开通一个worker进程和master进程的文件
使用cd ../logs/可以查看相关的配置文件
nginx.pid.oldbin这里是之前的进程信息,存储着之前的版本的文件
最后使用kill -QUIT xxxxx 向Ngnix服务器发送请求,要求他把之前的进程关闭掉
查看命令之后可以之前产生的两个进程都关闭了,现在已经替换为了1.6版本的Ngnix的版本的了