Linux 离线升级nginx版本

版本说明

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新版本接替,且老进程处理完所有请求,关闭所有连接后,停止
[root sbin]# cd ..

[root nginx]# cd logs/

[root logs]# ls

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

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

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

9、从容关闭旧进程

[root logs]# kill -QUIT `cat nginx.pid.oldbin`

[root logs]# ls

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

nginx version: nginx/1.18.0

你可能感兴趣的:(Linux 离线升级nginx版本)