版本说明
Nginx1.6.2升级到Nginx1.20.2稳定版本
环境说明
服务器中最开始使用的是Nginx1.6.2版本,由于这个版本在配置socket-io负载均衡时,仅支持ip_hash,故将当前运行Nginx服务版本升级到最新的稳定版,且在服务不停止的前提下经行升级。
1. 在不停掉老进程的情况下,启动新进程。
2. 老进程负责处理仍然没有处理完的请求,但不再接受处理请求。
3. 新进程接受新请求。
4. 老进程处理完所有请求,关闭所有连接后,停止。
操作步骤
获取nginx的安装目录
ps-ef|grep nginx|grep master|awk-F" "'{print $11}'
我的安装目录为/usr/local/webserver/nginx/sbin/nginx
查看升级之前的nginx版本,同时获取旧nginx版本的编译参数
/usr/local/webserver/nginx/sbin/nginx -V #注意是大写的V
输出: nginx version: nginx/1.6.2
到官网下载1.20.2版本的nginx (下载地址:http://nginx.org/en/download.html)
解压下载好的文件并上传linux服务器对应的文件夹中,并进入文件夹进行编译(只编译不安装)
# sudo tar xf nginx-1.20.2.tar.gz
# cd nginx-1.20.2/
# ./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35(注意实际安装目录)
# sudo make
备份旧版本的nginx的执行程序
# sudo mv /usr/local/webserver/nginx/sbin/nginx /usr/local/webserver/nginx/sbin/nginx6.old
替换旧的Nginx的执行程序
# sudo cp objs/nginx /usr/local/webserver/nginx/sbin/
# cd /usr/local/webserver/nginx/sbin/
# ls
nginx nginx6.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
[<u>root</u>logs]# kill-USR2 `cat /usr/local/webserver/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
查看升级后的版本
[<u>root</u>logs]#/usr/local/webserver/nginx/sbin/nginx -V
nginx version:nginx/1.20.2
网友评论