CentOS下Nginx平滑升级

目前使用Nginx来当做Web服务的网站越来越多,而Nginx的版本更新速度也很快。想要使用最新的功能或者修复漏洞,就面临着升级问题。

0x00 下载Nginx

我的博客一直使用的是淘宝的Tengine,所以这边直接下载了最新版Tengine

下载版本大家可以去官网查找:Tengine

 

0x01  编译Nginx

编译Nginx前,可以先查看下之前的编译命令,然后在这个参数的基础上加上本次编译想新增的参数即可。

$ nginx -V
Tengine version: Tengine/2.3.1
nginx version: nginx/1.16.0
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC)
built with OpenSSL 1.0.2g 1 Mar 2016
TLS SNI support enabled
configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-http_sub_module --add-module=../ngx_cache_purge --with-http_v2_module --with-openssl=../openssl-1.0.2g

从返回参数看,可以知道使用的是Tengine的2.3.1版本,也是nginx的1.16.0版本。configure arguments后面跟的就是之前编译的参数,需要注意的是参数中有../xxx这种路径,必须保证相对路径里存在对应的模块或者直接使用绝对路径

–with-http_v2_module是开启支持http2,建议启用了HTTPS网站都开启支持http2

 

接下去操作就很简单了,解压、编译、平滑升级

#解压
$ tar -zxvf tengine-2.3.1.tar.gz
$ cd tengine-2.3.1
#编译
$ ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module  --with-http_gzip_static_module  --with-http_sub_module --add-module=../ngx_cache_purge --with-http_v2_module --with-openssl=../openssl-1.0.2g
#编译完成后没有报错就直接运行make命令
$ make
#备份nginx二进制文件
$ mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
#替换nginx二进制文件
$ cp objs/nginx /usr/local/nginx/sbin
#执行升级命令
$ make upgrade