nginx平滑升级

1. 环境说明

当前服务器中正在运行Nginx服务,现想将当前运行的Nginx服务的版本经行升级,(从1.6升级到1.8,版本的跨度不要太大,容易造成服务的崩溃),且在服务不停止的前提下经行升级。

2. 实现原理

1.在不停掉老进程的情况下,启动新进程。
2.老进程负责处理仍然没有处理完的请求,但不再接受处理请求。
3.新进程接受新请求。
4.老进程处理完所有请求,关闭所有连接后,停止。

3. 实现步骤

nginx软件包下载地址: http://nginx.org/download/

1.编译安装nginx-1.6
yum -y install pcre-devel zlib-devel    #安装依赖包
useradd -M -s /sbin/nologin nginx    #添加程序运行用户
tar -zxvf nginx-1.6.0.tar.gz -C /usr/src/    #解包
cd /usr/src/nginx-1.6.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make && make install    #配置编译并且安装
/usr/local/nginx/sbin/nginx        #启动nginx服务                

2. 编译nginx-1.8(只编译不安装)
tar -zxvf nginx-1.8.1.tar.gz -C /usr/src/    #解包
cd /usr/src/nginx-1.8.1/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make    #配置编译并且安装

3. 查看升级之前的版本
#/usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.6.0

4.  备份旧版本的nginx的执行程序
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old

5. 替换旧的Nginx的执行程序
cp /usr/src/nginx-1.8.1/objs/nginx /usr/local/nginx/sbin/

6. 发送USR2信号给nginx master 进程(nginx服务接收到USR2信号后,首先会将旧的nginx.pid文件添加后缀.oldbin,
变为nginx.pid.oldbin,然后执行新版本的二进制文件启动服务,如果新的服务启动成功,系统中将有新旧两个Nginx服务共同提供web服务),
且老进程处理完所有请求,关闭所有连接后,停止
kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`


8. 查看nginx日志目录会生成一个nginx.pid.oldbin文件,存放旧版本nginx 的pid号
ls /usr/local/nginx/logs/
access.log  error.log  nginx.pid  nginx.pid.oldbin

8.查看升级升级后的版本
/usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.8.1

9. 查看服务运行状态
netstat -lntup | grep nginx

10. 使用客户端验证Nginx服务是否可以继续访问
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值