docker的fastDFS容器升级内置nginx版本
基础环境
操作系统
linux centOS 7.X
fastDFS镜像
镜像版本:delron/fastdfs:latest
fastDFS-Storage容器
fastDFS,docker版本分为两个容器,一个是tracker容器,一个是storage容器。
fastDFS内置的nginx是在storage容器
升级storage容器内的nginx
进入storage容器
docker exec -it 62d7bf770ff5 /bin/bash
查看当前nginx进程
[root@jeecg-boot-redis nginx]# ps aux | grep nginx
root 2685 0.0 0.0 28052 1784 ? S Nov19 0:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody 2686 0.0 0.0 28628 2136 ? S Nov19 0:00 nginx: worker process
root 2721 0.0 0.0 9044 660 pts/2 S+ 02:44 0:00 grep --color=auto nginx
下载编译1.21.4版本的nginx
下载并解压
依次执行命令:
wget http://nginx.org/download/nginx-1.21.4.tar.gz
mv nginx-1.21.4.tar.gz /usr/local
cd /usr/local
tar xf nginx-1.21.4.tar.gz
获取旧版本nginx编译的内容
[root@jeecg-boot-redis nginx]# sbin/nginx -V
nginx version: nginx/1.12.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC)
configure arguments: --prefix=/usr/local/nginx --add-module=/tmp/nginx/fastdfs-nginx-module-master/src
在解压后的新的nginx文件里执行旧版本的configure arguments:里面的内容
./configure --prefix=/usr/local/nginx --add-module=/tmp/nginx/fastdfs-nginx-module-master/src
执行make命令
make
ps:不需要make install命令!!!
新版本替换旧版本
首先备份旧的nginx可执行程序文件
[root@jeecg-boot-redis /]# cd /usr/local/nginx/sbin/
[root@jeecg-boot-redis sbin]# ls
nginx nginx.bak
[root@jeecg-boot-redis sbin]# cp nginx{,.bak}
cp: overwrite 'nginx.bak'? y
[root@jeecg-boot-redis sbin]# ls
nginx nginx.bak
[root@jeecg-boot-redis sbin]#
找到新版本的nginx的可执行程序文件
[root@jeecg-boot-redis sbin]# cd /usr/local/nginx-1.21.4/
[root@jeecg-boot-redis nginx-1.21.4]# ls
CHANGES CHANGES.ru LICENSE Makefile README auto conf configure contrib html man objs src
[root@jeecg-boot-redis nginx-1.21.4]# cd objs/
[root@jeecg-boot-redis objs]# ls
Makefile addon autoconf.err nginx nginx.8 ngx_auto_config.h ngx_auto_headers.h ngx_modules.c ngx_modules.o src
[root@jeecg-boot-redis objs]#
上图红框框起来的就是nginx可执行程序文件
用新版本的nginx可执行程序文件覆盖旧版本的nginx可执行程序文件
[root@jeecg-boot-redis objs]# cp -f nginx /usr/local/nginx/sbin/nginx
cp: overwrite ‘/usr/local/nginx/sbin/nginx’? y
将旧的nginx服务下线
1、查看旧的服务进程
[root@jeecg-boot-redis objs]# ps aux | grep nginx
root 2685 0.0 0.0 28052 1784 ? S Nov19 0:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody 2686 0.0 0.0 28628 2136 ? S Nov19 0:00 nginx: worker process
root 2733 0.0 0.0 9044 664 pts/2 S+ 03:04 0:00 grep --color=auto nginx
[root@jeecg-boot-redis objs]#
找到nginx父进程的pid号,发送USR2信号
依次执行命令:
kill -USR2 2685
kill -WINCH 2685
kill -QUIT 2685
查看当前nginx版本
[root@jeecg-boot-redis objs]# cd /usr/local/nginx
[root@jeecg-boot-redis nginx]# ls
client_body_temp conf fastcgi_temp html logs proxy_temp sbin scgi_temp uwsgi_temp
[root@jeecg-boot-redis nginx]#
[root@jeecg-boot-redis nginx]# sbin/nginx -V
nginx version: nginx/1.21.4
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC)
configure arguments: --prefix=/usr/local/nginx --add-module=/tmp/nginx/fastdfs-nginx-module-master/src
[root@jeecg-boot-redis nginx]#
升级完成。
此次操作,是升级nginx版本来处理旧版本有漏洞的情况。如有更好的办法能解决旧版本的漏洞(在下是运维业余选手),欢迎一起分享一下。