Nginx热部署-平滑升级、回退

1.备份当前Nginx二进制文件

[root@vm1 sbin]# ./nginx -v
Tengine version: Tengine/2.3.2
nginx version: nginx/1.17.3
[root@vm1 sbin]# mv nginx nginx.old
[root@vm1 sbin]# ps -ef|grep nginx|grep -v grep
root     21539     1  0 16:35 ?        00:00:00 nginx: master process ./nginx
nobody   21540 21539  0 16:35 ?        00:00:00 nginx: worker process

2.编译新版本到make后,复制二进制nginx文件

[root@vm1 opt]# tar xvf nginx-1.17.10.tar.gz
[root@vm1 opt]# cd nginx-1.17.10
[root@vm1 nginx-1.17.10]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module --with-http_stub_status_module --with-threads --with-file-aio
[root@vm1 nginx-1.17.10]# make
[root@vm1 nginx-1.17.10]# cp -f  objs/nginx /usr/local/nginx/sbin/
[root@vm1 sbin]# ll
total 12428
-rwxr-xr-x 1 root root 6209808 Mar 10 16:49 nginx
-rwxr-xr-x 1 root root 6508960 Mar 10 16:35 nginx.old

3.kill -USR2 旧版本的主进程号
在这里插入图片描述

[root@vm1 sbin]# kill -USR2 21539

在这里插入图片描述
4.kill -WINCH 旧版本的主进程号 (关闭旧版本的worker进程)
在这里插入图片描述
5.验证是否有问题

6.回退
恢复原来的nginx二进制文件

[root@vm1 sbin]# mv nginx.old nginx
mv: overwrite ‘nginx’? y

kill -HUP 旧版本的进程号 (拉起旧版本的worker进程)

[root@vm1 sbin]# kill -HUP 21539
[root@vm1 sbin]# ps -ef|grep nginx
root     21539     1  0 16:35 ?        00:00:00 nginx: master process ./nginx
root     27319 21539  0 16:58 ?        00:00:00 nginx: master process ./nginx
nobody   27320 27319  0 16:58 ?        00:00:00 nginx: worker process
nobody   28739 21539  0 17:08 ?        00:00:00 nginx: worker process
root     28743 17605  0 17:08 pts/1    00:00:00 grep --color=auto nginx

kill -WINCH 新版本的主进程号 (关闭新版本的worker进程)
在这里插入图片描述
如有需要可将新版本master进程杀掉
在这里插入图片描述

你可能感兴趣的:(Nginx,nginx,linux)