linux 操作系统离线升级,Linux 离线升级nginx版本

版本说明

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

环境说明

服务器中最开始使用的是Nginx1.13.9版本,上线前该版本被安全部门扫出安全漏洞,故将当前运行Nginx服务版本升级到最新的稳定版,(从1.13升级到1.18版本的跨度不要太大,容易造成服务的崩溃),且在服务不停止的前提下经行升级。

1. 在不停掉老进程的情况下,启动新进程。

2. 老进程负责处理仍然没有处理完的请求,但不再接受处理请求。

3. 新进程接受新请求。

4. 老进程处理完所有请求,关闭所有连接后,停止。

操作步骤

获取nginx的安装目录

ps -ef | grep nginx | grep master | awk -F" " '{print $11}'

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

查看升级之前的nginx版本,同时获取旧nginx版本的编译参数

/usr/local/nginx/sbin/nginx -V #注意是大写的V

输出: nginx version: nginx/1.13.9

解压下载好的文件并上传linux服务器对应的文件夹中,并进入文件夹进行编译(只编译不安装)

# tar xf nginx-1.18.0.tar.gz

# cd nginx-1.18.0

# ./configure

# make

备份旧版本的nginx的执行程序

# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx13.old

替换旧的Nginx的执行程序

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

# cd /usr/local/nginx/sbin/

# ls

nginx nginx13.old nginx.old

发送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`

查看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

查看升级后的版本

[root logs]# /usr/local/nginx/sbin/nginx -v

nginx version: nginx/1.18.0

你可能感兴趣的:(linux,操作系统离线升级)