软件准备:
在 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