Nginx平滑升级

Nginx-1.6.2升级到Nginx-1.7.2

  • 查看目前nginx的相关配置
# /usr/local/nginx/sbin/nginx -V
nginx version: TWS
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)
TLS SNI support enabled
configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
  • 下载需要更新的Nginx源码包
    wget -c http://nginx.org/download/nginx-1.7.2.tar.gz

  • 解压并编译
    cd /usr/local/src/
    tar zxvf nginx-1.7.2.tar.gz
    配置的内容与原版本保持一致
    ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
    配置完成后只需要执行make,切忌不可执行make install

  • 备份旧版本的nginx
    cd /usr/local/nginx/sbin/
    mv nginx nginx.old

  • 同步新版本的nginx
    cp /usr/local/src/nginx-1.7.2/objs/nginx /usr/local/nginx/sbin/

  • 测试新版本配置
    /usr/local/nginx/sbin/nginx –t

  • 平滑重启升级Nginx
    kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`

旧版本Nginx的pid变为oldbin,这是旧版本和新版本的nginx同时运行,过一段时间等就nginx处理完用户请求

  • 从容关闭旧版本的Nginx进程
    kill -WINCH `cat /usr/local/nginx/log/nginx.oldbin`

  • 决定是否升级到新版的nginx
    kill –HUP `cat /usr/local/nginx/log/nginx.oldbin`##nginx在不重载配置文件启动工作进程
    kill –QUIT `cat /usr/local/nginx/log/nginx.oldbin` ##关闭旧版nginx
    验证nginx是否升级成功

  • 成功升级
    /usr/local/nginx/sbin/nginx –V ###显示新版本则升级成功

推荐阅读更多精彩内容