Linux 离线升级nginx版本

2020-10-09  本文已影响0人  Hello_Kugou

版本说明

Nginx1.13.9升级到Nginx1.18稳定版本

环境说明

服务器中最开始使用的是Nginx1.13.9版本,上线前该版本被安全部门扫出安全漏洞,故将当前运行Nginx服务版本升级到最新的稳定版,(从1.13升级到1.18版本的跨度不要太大,容易造成服务的崩溃),且在服务不停止的前提下经行升级。
  1. 在不停掉老进程的情况下,启动新进程。
  2. 老进程负责处理仍然没有处理完的请求,但不再接受处理请求。
  3. 新进程接受新请求。
  4. 老进程处理完所有请求,关闭所有连接后,停止。

操作步骤

  1. 获取nginx的安装目录
ps -ef | grep nginx | grep master | awk -F" " '{print $11}'

我的安装目录为/usr/local/nginx/sbin/nginx

  1. 查看升级之前的nginx版本,同时获取旧nginx版本的编译参数
 /usr/local/nginx/sbin/nginx -V #注意是大写的V

输出: nginx version: nginx/1.13.9

  1. 到官网下载1.18.0版本的nginx (下载地址:http://nginx.org/en/download.html)
  2. 解压下载好的文件并上传linux服务器对应的文件夹中,并进入文件夹进行编译(只编译不安装)
# tar xf nginx-1.18.0.tar.gz 

# cd nginx-1.18.0

# ./configure 

# make

  1. 备份旧版本的nginx的执行程序
# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx13.old
  1. 替换旧的Nginx的执行程序
# cp objs/nginx /usr/local/nginx/sbin/

# cd /usr/local/nginx/sbin/

# ls

nginx  nginx13.old  nginx.old
  1. 发送USR2信号给旧版本主进程号,使nginx的旧版本停止接收请求,用nginx新版本接替,且老进程处理完所有请求,关闭所有连接后,停止
[<u>root</u> sbin]# cd ..

[<u>root</u> nginx]# cd logs/

[<u>root</u> logs]# ls

access.log  error.log  nginx.pid  shunjie.access.log  

[<u>root</u> logs]# kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
  1. 查看nginx pid目录,多了个nginx.pid.oldbin文件,存放了旧版本nginx的pid号
[<u>root</u> logs]# ls

access.log  error.log  nginx.pid  nginx.pid.oldbin

9、从容关闭旧进程

[<u>root</u> logs]# kill -QUIT `cat nginx.pid.oldbin`

[<u>root</u> logs]# ls

access.log  error.log  nginx.pid  shunjie.access.log
  1. 查看升级后的版本
[<u>root</u> logs]# /usr/local/nginx/sbin/nginx -v

nginx version: nginx/1.18.0

上一篇 下一篇

猜你喜欢

热点阅读