docker升级yapi(运维功力不减当年)
事件起因:之前在服务器上搭建了Yapi,属于很久没用了,但是最近服务器上的其他应用出现崩溃的现象,查了一下,cpu爆炸了,顺藤摸瓜,发现是老版本的yapi 出现了Yapi api mongodb 注入致远程命令执行漏洞和Yapi Mock远程命令执行漏洞,因此急需关闭yapi开放注册功能和升级yapi
关闭yapi开放注册功能
1.docker安装情况下:
docker exec -u root -it 容器名 /bin/sh
使用上诉命令进入容器,其他安装方式可以跳过此步骤
2.进入安装目录/api
cd /api
3.找到config.json配置文件,编辑配置文件,新增"closeRegister": true,关闭注册功能
关于这个参数,有兴趣的同学可以cd到/api/vendors/server/controllers这个目录下,user.js中有个注册接口reg,里面第一个判断就是查看yapi.WEBCONFIG.closeRegister参数是否配置为true,如果配置即为关闭注册功能。
yapi更新
说完关闭注册,现在来看下更新,打开vendors的那一刻,看到熟悉的node_modules,哟,这不是nodejs嘛(手动狗头),才发现yapi是用nodejs+mongodb开发的。言归正传,更新我是用官方给的工具yapi-cli来更新的,这样操作难度和维护数据完整度来说消耗最小
1.安装yapi-cli,建议是使用国内镜像源,第一是快一点,第二是可以避免某些莫名其妙的问题?我在安装的时候就遇到了node-sass依赖问题。
npm install yapi-cli -g --registry https://registry.npm.taobao.org
2.查看可升级版本
yapi-cli ls
3.升级
yapi-cli update
or
yapi-cli update -v v1.12.0 // 按指定版本升级
升级注意:我在升级过程中,升级脚本跑完之后,显示没问题,但是重启镜像之后,显示缺失qs模块,有点坑...,这个问题会导致docker容器启动不起来,然后也不能进容器解决问题,最后是通过,硬改docker yapi容器的有问题的js文件,也就是注释qs。待重启好之后,进入npm 安装qs解决。
总结:之前做过运维相关的工作,对Linux和docker还算熟悉,不过很久没用了,这次解决这两个问题,发现自己对命令的掌握还是比较熟悉的,很多命令还是记得住的,这就是孰能生气噶,同时也感谢之前的工作经历吧~
评论区