版本说明
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
- 到官网下载1.18.0版本的nginx (下载地址:http://nginx.org/en/download.html)
- 解压下载好的文件并上传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新版本接替,且老进程处理完所有请求,关闭所有连接后,停止
[<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`
- 查看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
- 查看升级后的版本
[<u>root</u> logs]# /usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.18.0