美文网首页
详细完整记录 一次 nginx 平滑升级

详细完整记录 一次 nginx 平滑升级

作者: 面试君 | 来源:发表于2019-09-29 10:29 被阅读0次

今天突然收到百度云邮件提醒,发现高危漏洞。吓得我赶紧登陆百度云查看,原来是nginx 的旧版本有漏洞,需要升级

image

问题是服务器上运行着很多服务,如何平滑的进行升级呢?接下来看我表演,哈哈

第一步 准备工作

1 查看当前的版本信息:

执行如下命令:/usr/local/nginx/sbin/nginx -V </br>

nginx version: nginx/1.1.10
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_addition_module --with-http_flv_module --with-http_gzip_static_module --with-http_realip_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_dav_module --with-http_v2_module

显示当前版本为1.1.10 ,最后面有configure arguments: 参数比较重要,接下来新版本需要用到,保证没有漏掉任何一个模块</br>

2 下载要升级的版本

我下载的是1.14.2 版本

第二步 在源码目录下执行 ./configure +第一步看到的configure arguments 后面的参数

以下是我执行的内容

./configure --prefix=/usr/local/nginx \
--with-http_addition_module \
--with-http_flv_module \
--with-http_gzip_static_module \
--with-http_realip_module \
--with-http_ssl_module \
--with-http_stub_status_module \
--with-http_sub_module \
--with-http_dav_module --with-http_v2_module 

第三步 在源码目录下执行 make,切记不要make install

此时make编译完后会在安装目录下生成一个objs目录且在该目录下有一个nginx执行文件。

[root@xxxxx nginx-1.14.2]# make
make -f objs/Makefile
make[1]: Entering directory `/usr/local/download/nginx-1.14.2'
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
    -o objs/src/core/nginx.o \
    src/core/nginx.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
    -o objs/src/core/ngx_log.o \
    src/core/ngx_log.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
    -o objs/src/core/ngx_palloc.o \
    src/core/ngx_palloc.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
    -o objs/src/core/ngx_array.o \
    src/core/ngx_array.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
    -o objs/src/core/ngx_list.o \
    src/core/ngx_list.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
    -o objs/src/core/ngx_hash.o \
    src/core/ngx_hash.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
    -o objs/src/core/ngx_buf.o \
    src/core/ngx_buf.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \

第四步 备份原来老的nginx文件

主要是为了回退

mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

第五步 将新编译的目录copy 到 原来的安装目录下

以下是我本机的操作命令

cp objs/nginx /usr/local/nginx/sbin/

第六步 在源码目录下使用make upgrade替换老的nginx进程

[root@xxx nginx-1.14.2]# make upgrade
/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
kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
sleep 1
test -f /usr/local/nginx/logs/nginx.pid.oldbin
kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`

第七步 执行/usr/local/nginx/sbin/nginx -V查看nginx最新的版本及编译的参数

[root@xxxx nginx-1.14.2]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.14.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_addition_module --with-http_flv_module --with-http_gzip_static_module --with-http_realip_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_dav_module --with-http_v2_module

好了,大功告成

推荐下海量面试题小程序让大家刷刷,哈哈哈哈

image

相关文章

  • 详细完整记录 一次 nginx 平滑升级

    今天突然收到百度云邮件提醒,发现高危漏洞。吓得我赶紧登陆百度云查看,原来是nginx 的旧版本有漏洞,需要升级 问...

  • Nginx实现平滑重启及无损版本升级

    Nginx服务平滑(无损)重启 一般重启过程: Nginx版本平滑(无损)升级 一般升级: 这样就可以实现不中断服...

  • nginx学习目录

    nginx安装部署和配置管理 nginx日志配置 nginx平滑升级与回滚 nginx反向代理 nginx负载均衡...

  • Nginx平滑升级

    Nginx平滑升级,可以在不中断服务的情况下 - 新的请求也不会丢失,使用新的 nginx 可执行程序替换旧的(当...

  • Nginx平滑升级

    Nginx-1.6.2升级到Nginx-1.7.2 查看目前nginx的相关配置 下载需要更新的Nginx源码包w...

  • Nginx平滑升级

    当需要给正在运行的Nginx服务升级,或者添加或者删除模块的时候。可以在不服务不中断的情况下进行操作。 1、使用新...

  • NGINX 平滑升级

    周末吃饭,我的老同事问我nginx的平滑升级会么?我顿时想起来了之前面试过的一道题,考的就是这个问题。我之前的确也...

  • Nginx平滑升级

    线上环境nginx的版本为1.6.3,收到Web漏洞检测:显示:NGINX版本过低,存在整数溢出漏洞(CVE-20...

  • nginx 平滑升级

    nginx平滑升级 a.基本环境原有的基础环境,要注意原有nginx的属主和属组b.安装新的版本和要添加的模块 c...

  • nginx平滑升级

网友评论

      本文标题:详细完整记录 一次 nginx 平滑升级

      本文链接:https://www.haomeiwen.com/subject/zjffpctx.html