[步骤] Nginx 的升级

软件准备:

在 Nginx 官网上下载搭建集群所需软件 Nginx:

http://nginx.org/en/download.html

正文:

步骤一:确认升级目标

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

(注意:建议升级的版本不要太大,否则服务可能会无法启动)

步骤二:安装一个旧版本的 Nginx

# 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


补充:
1) 这里以编译安装 nginx-1.6 为例
2) 如果已经安装了旧版本的 Nginx 这一步可以忽略

步骤三:安装一个较新版本的 Nginx

# 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

(补充:这里以编译 nginx-1.8 为例)

(注意:这里只编译不安装)

步骤四:升级 Nginx

4.1 显示升级之前的版本

# /usr/local/nginx/sbin/nginx -v
# nginx version: nginx/1.6.0

4.2 备份旧版本的 Nginx 执行程序

# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old

4.3 替换旧的 Nginx 执行程序

# cp /usr/src/nginx-1.8.1/objs/nginx /usr/local/nginx/sbin/

4.4 使 Nginx 的旧版本停止进程

# kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`

4.5 显示 Nginx 日志目录会生成一个 nginx.pid.oldbin 文件,存放旧版本 nginx 的 pid 号

# ls /usr/local/nginx/logs/
access.log  error.log  nginx.pid  nginx.pid.oldbin

4.6 显示 Nginx 升级后的版本信息

# /usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.8.1

4.7 运行 Nginx ,之后显示它的运行状态

/usr/local/nginx/sbin/nginx
# netstat -aupt | grep nginx
getnameinfo failed
tcp        0      0 *:http                      *:*                         LISTEN      6963/nginx