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版本来处理旧版本有漏洞的情况。如有更好的办法能解决旧版本的漏洞(在下是运维业余选手),欢迎一起分享一下。

经验分享 程序员 微信小程序 职场和发展