大家好,我是一直默默努力的大龄程序媛大丫姨,今天要修复一些nginx的漏洞,查看官方解决方案有一些麻烦,干脆对nginx版本进行平滑升级,什么叫平滑升级,就是不停用nginx的情况下升级nginx版本,听着有一些绕口,总之因为升级的是生产,我也不想影响到用户使用,因为nginx上部署了太多的映射。于是上网查了一下如何操作,得到了一个非常好的参考网址,文末放了参考链接。
ps:由于领导没有给我root权限,导致我每一步都需要加sudo,蓝瘦香菇,2-3步是为了了解nginx的现状的,下面操作只是如何平滑升级,但是回退方法只能想看文末链接了,因为这个作者整理的真的非常好。
#1、最重要的一步,将nginx进行备份,我直接将整个安装地址进行了压缩
sudo tar -zcvf nginx20220325.tar.gz /usr/local/nginx
#2、查看一下nginx路径
sudo ls -l /usr/local
#3、查看nignx的版本号
sudo /usr/local/nginx/sbin/nginx -V
#4、查看nginx的进程
ps aux | grep nginx
#5、将nginx上传到该用户指定目录下,如、home/weblogic/nginx,因为我是同事给的包,所以我没有从网上wget,此处省略
#6、进入到新的nginx版本里
tar -zxvf nginx-1.21.6.tar.gz
cd nginx-1.21.6
#7、根据当前的配置可弹性修改configure要配置的模块
./configure --prefix=/usr/local/nginx --with-http_ssl_module
#8、按照,注意只执行make
make
#9、将老的nginx进行备份
sudo cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
#10、查询备份情况
sudo ls -l /usr/local/nginx/sbin
#11、查看nignx的版本号
sudo /usr/local/nginx/sbin/nginx -V
#12、进入到新的nginx的objs目录下
cd objs/
#13、将新的nginx拷贝替换旧的
sudo cp -f nginx /usr/local/nginx/sbin/nginx
#14、查看nginx的进程
ps aux | grep nginx
#15、将进程进行修改,进程号注意修改,设定新的子进程开始接收用户的访问请求,旧的不再接受用户的访问请求
sudo kill -USR2 12567 11992
#16、查看nginx的进程
ps aux | grep nginx
#17、查看目前27007端口是否监听,有数据就是“虽然在监听,但实际不会处理新连接”进程号注意修改,
sudo lsof -p 12567 | grep LISTEN
#18、查看nignx的版本号,此时应该为新版本了
sudo /usr/local/nginx/sbin/nginx -V
#19、保留旧版本的master是为了方便回滚(当然你可以发信号QUIT或者直接杀掉进程),此时如果再执行以下操作将不能进行回退了。删除旧版本的端口号,进程号注意修改,
sudo kill -WINCH 12567
sudo kill -QUIT 12567
————————————————
参考链接:https://blog.csdn.net/shimiso/article/details/6045160