Nginx1.12升级到Nginx1.16稳定版本
环境说明
服务器中最开始使用的是Nginx1.3.14版本,目前正在运行Nginx1.12版本,现在想将当前运行的Nginx服务的版本进行升级到最新的稳定版,(从1.12升级到1.16,版本的跨度不要太大,容易造成服务的崩溃),且在服务不停止的前提下经行升级。
1. 在不停掉老进程的情况下,启动新进程。
2. 老进程负责处理仍然没有处理完的请求,但不再接受处理请求。
3. 新进程接受新请求。
4. 老进程处理完所有请求,关闭所有连接后,停止。
实现步骤:
1、获取nginx的安装目录
[root@XiaoFeng logs]# ps -ef | grep nginx | grep master | awk -F" " '{print $11}' /usr/local/nginx/sbin/nginx
2、查看升级之前的nginx版本,同时获取旧nginx版本的编译参数
[root@XiaoFeng sjd]# /usr/local/nginx/sbin/nginx -V #注意是大写的V nginx version: nginx/1.12.2 built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC) built with OpenSSL 1.0.1e-fips 11 Feb 2013 TLS SNI support enabled configure arguments: --user=nginx --group=nginx --prefix=/usr/local/nginx/ --with-http_v2_module --with-http_ssl_module --with-http_sub_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-http_realip_module
3、到官网下载1.16.0版本的nginx (下载地址:http://nginx.org/en/download.html)
[root@XiaoFeng sjd]# wget http://nginx.org/download/nginx-1.16.0.tar.gz
4、解压下载好的文件,并进入文件夹进行编译(只编译不安装)
[root@XiaoFeng sjd]# tar xf nginx-1.16.0.tar.gz [root@XiaoFeng sjd]# cd nginx-1.16.0 [root@XiaoFeng nginx-1.16.0]# ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx/ --with-http_v2_module --with-http_ssl_module --with-http_sub_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-http_realip_module [root@XiaoFeng nginx-1.16.0]# make
5、备份旧版本的nginx的执行程序
[root@XiaoFeng nginx-1.16.0]# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx12.old
6、替换旧的Nginx的执行程序
[root@XiaoFeng nginx-1.16.0]# cp objs/nginx /usr/local/nginx/sbin/ [root@webserver nginx-1.16.0]# cd /usr/local/nginx/sbin/ [root@XiaoFeng sbin]# ls nginx nginx12.old nginx.old
7、发送USR2信号给旧版本主进程号,使nginx的旧版本停止接收请求,用nginx新版本接替,且老进程处理完所有请求,关闭所有连接后,停止
[root@webserver sbin]# cd .. [root@webserver nginx]# cd logs/ [root@XiaoFeng logs]# ls access.log error.log nginx.pid shunjie.access.log [root@XiaoFeng logs]# kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
8、查看nginx pid目录,多了个nginx.pid.oldbin文件,存放了旧版本nginx的pid号
[root@XiaoFeng logs]# ls access.log error.log nginx.pid nginx.pid.oldbin #查看服务运行状态 [root@XiaoFeng logs]# netstat -aupt | grep nginx tcp 0 0 *:http *:* LISTEN 793/nginx
9、从容关闭旧进程
[root@XiaoFeng logs]# kill -QUIT `cat nginx.pid.oldbin` [root@XiaoFeng logs]# ls access.log error.log nginx.pid shunjie.access.log
10、查看升级后的版本
[root@XiaoFeng logs]# /usr/local/nginx/sbin/nginx -v nginx version: nginx/1.16.0
平滑升级完毕!
附:如果是yum安装的nginx,升级就很简单了,直接yum update nginx即可安装到仓库有的最新版,不过通常库更新的比较慢。
rpm包安装的话,就直接rpm -Uvh nginx-1.16.0.rpm即可
封面美图
本文为 小风原创文章,转载无需和我联系,但请注明来自 小风博客www.hotxf.com