Nginx平滑升级

595 阅读1分钟

Nginx平滑升级

查看当前 Nginx 编译参数

# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.15.8
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-5) (GCC)
built with OpenSSL 1.1.1a  20 Nov 2018
TLS SNI support enabled
configure arguments: --user=www --group=www --prefix=/usr/local/nginx 

升级nginx

下载新版Nginx

cd ~
wget http://nginx.org/download/nginx-1.16.1.tar.gz
tar xzvf nginx-1.16.1.tar.gz

编译Nginx

  • configure
cd nginx-1.16.1/
./configure --user=www --group=www --prefix=/usr/local/nginx 

注意:这里的 configure需跟上边 nginx -V 的编译参数一致。

  • make

注意:这里一定 不要 执行 make install

替换旧的程序并重启

  • 备份旧的执行程序

    mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
    
  • 替换新的执行程序

    cp objs/nginx /usr/local/nginx/sbin/
    
  • 检查nginx配置文件是否正常

    # /usr/local/nginx/sbin/nginx -t
    nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
    nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
    
  • 查看nginx版本

    /usr/local/nginx/sbin/nginx -V
    

    此时已经变成了新版本

重启

找到 nginx.pid 文件

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

此时会生成一个新的文件:

/usr/local/nginx/logs/nginx.pid.oldbin
kill -QUIT cat /usr/local/nginx/logs/nginx.pid.oldbin

回滚方案

将备份的nginx还原并重启即可

mv /usr/local/nginx/sbin/nginx.bak /usr/local/nginx/sbin/nginx
kill -USR2 cat /usr/local/nginx/logs/nginx.pid
kill -QUIT cat /usr/local/nginx/logs/nginx.pid.oldbin

原文链接:Nginx平滑升级