如何使用官方最新源代码部署yapi?

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介: 我们之前使用的yapi 1.9.2,存在高危漏洞,攻击者可利用该漏洞在目标服务器上执行任意代码,导致服务器被攻击者控制,植入木马或挖矿病毒。通过目前网络上给出的安全解决方案,总感觉解决的不彻底,yapi 官方仓库已经修复了沙箱提权的问题,我尝试使用官方最新源代码部署yapi,遇到好多问题,顺手记录下来,无论部署新环境或者升级新版本,日后方便自己回顾或者他人参考。


一、命令行 or web界面 那种部署方式更好?


yapi github 官方仓库提供了通过执行yapi server启动http服务,然后在web浏览器配置部署yapi的方式,但笔者更喜欢通过命令行的方式来部署,

因为在命令行中通过源码部署yapi,更易于理解程序其中的运行逻辑,方便日后运维。而且随时使用官方仓库最新源代码,不用等待作者更新yapi-cli部署工具。



二、配置node环境


配置node环境,推荐使用旧版v14.19.0,使用最新的node,我这边安装测试会出现各种各样的问题。从国内镜像站下载node http://nodejs.cn/download/current/


下载nodejs,解压到 /usr/local 下


wget https://cdn.npmmirror.com/binaries/node/v14.19.0/node-v14.19.0-linux-x64.tar.xz
tar -xf  node-v14.19.0-linux-x64.tar.xz  -C  /usr/local/
配置node 环境变量
cat <<__EOF__   >> /etc/profile
exportNODE_HOME=/usr/local/node-v14.19.0-linux-x64
exportPATH=$PATH:${NODE_HOME}/bin
__EOF__
让环境变量生效
source /etc/profile
su- root
查看node版本
node--version



三、配置yapi


笔者看了好多网络上的文章,大部分人喜欢把文件夹名改为 vendors, 刚开始一脸疑惑,其实大可不必,命名为其他名称也可以,不影响正常部署,我这里就保留了yapi-master的命名

需要注意的是config.json 必须放在源码的上一层级的目录。


git clone  https://github.com/YMFE/yapi.git  或者浏览器里下载yapi master分支 yapi-master.zip
mkdir /opt/yapi-project
cp  yapi-master.zip  /opt/yapi-project/
cd  /opt/yapi-project/
unzip yapi-master.zip
cp yapi-master/config_example.json   config.json
配置mongodb 管理员用户名和密码, mongodb 用户名和密码需要手工创建,在安装mongodb那一步我们会讲到,这里的密码用的比较简单,生产环境强烈建议使用高复杂度密码。
vim config.json  
{
"port": "3000",
"closeRegister":true,
"adminAccount": "admin@admin.com",
"timeout":120000,
"db": {
"servername": "127.0.0.1",
"DATABASE": "yapi",
"port": 27017,
"user": "root",
"pass": "123456",
"authSource": ""  },
"mail": {
"enable": true,
"host": "smtp.163.com",
"port": 465,
"from": "***@163.com",
"auth": {
"user": "***@163.com",
"pass": "*****"    }
  }
}
现在的目录层级结构如下,新建的config.json在源码的上一层级目录
[root@pangu yapi-project]# tree -L 2.
├── config.json
├── yapi-master
│   ├── CHANGELOG.md
│   ├── client
│   ├── common
│   ├── config_example.json
│   ├── docs
│   ├── exts
│   ├── LICENSE
│   ├── nodemon.json
│   ├── npm-publish.js
│   ├── package.json
│   ├── package-lock.json
│   ├── plugin.json
│   ├── README.md
│   ├── SECURITY.md
│   ├── server
│   ├── static
│   ├── test
│   ├── webpack.alias.js
│   ├── yapi-base-flow.jpg
│   ├── ydocfile.js
│   ├── ydoc.js
│   └── ykit.config.js
└── yapi-master.zip
在yapi-master路径下安装npm依赖包
cd /opt/yapi-project/yapi-master
rm  package-lock.json  -rfnpm install --production--registry=https://registry.npmmirror.com  --unsafe-perm


四、 安装mongodb


我从mongodb 官方网站 https://www.mongodb.com/try/download/community 下载了server,shell,tools 三个 mongodb rpm 包,分别对应服务器,mongo客户端,还有mongodump 备份工具,所以这三个包都需要安装。


[root@pangu opt]# ls -1 mongo*mongodb-org-server-3.2.22-1.el7.x86_64.rpm
mongodb-org-shell-3.2.22-1.el7.x86_64.rpm
mongodb-org-tools-3.2.22-1.el7.x86_64.rpm
yum  -y localinstall  mongodb*
systemctl start mongod
systemctl enable mongod
使用mongo客户端工具在命令行登陆数据库
mongo 
创建mongodb高权限用户,如图1
use yapi
db.createUser(
     {
       user:"root",
       pwd:"123456",
       roles:[{role:"root",db:"admin"}]
     }
  )
exit

1.png


五、初始化数据库,启动服务



# 初始化mongodb数据库,config.json里的用户名和密码必须和 mongo命令行手工创建的用户名和密码一致,否则加载数据库会失败如图2
npm run install-server
# 启动服务,如图3node  /opt/yapi-project/yapi-master/server/app.js

2.png3.png


六、使用pm2管理yapi服务


最后安装pm2,以便更好地管理node服务,比如,我们要关闭注册或者mock等功能,修改完配置,直接执行pm2 restart yapi就可以完成配置加载,使用pm2 info yapi 可以查看服务使用资源等一些统计信息。


安装pm2
npm install  pm2  -g--registry=https://registry.npmmirror.com 
pm2管理yapi服务,如图4
pm2 start"/opt/yapi-project/yapi-master/server/app.js"--name yapi 
查看服务信息
pm2 status
pm2 info yapi 
停止服务
pm2 stop yapi 
重启服务
pm2 restart yapi 
删除服务
pm2 delete yapi

4.png

通过以上我们回顾了yapi从源码部署的整个过程,其实只要不厌其烦,仔细认真,我们就能很准确快速地完成yapi新版本部署啦。






相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
NoSQL Cloud Native 数据可视化
云原生之使用Docker部署YApi接口管理服务平台
云原生之使用Docker部署YApi接口管理服务平台
373 0
云原生之使用Docker部署YApi接口管理服务平台
|
8天前
|
NoSQL JavaScript Linux
一篇文章带你完成内网部署YApi以及踩坑过程
一篇文章带你完成内网部署YApi以及踩坑过程
114 0
|
JavaScript 前端开发 数据可视化
04 提效工具之swagger&yapi转换可视化部署
04 提效工具之swagger&yapi转换可视化部署
|
JSON 资源调度 前端开发
Nest集成Swagger并部署至YAPI
Nest集成Swagger并部署至YAPI
Nest集成Swagger并部署至YAPI
|
NoSQL 测试技术 API
[ 环境搭建篇 ] docker 搭建部署 YAPI 框架
[ 环境搭建篇 ] docker 搭建部署 YAPI 框架
1052 0
[ 环境搭建篇 ] docker 搭建部署 YAPI 框架
|
数据可视化 Linux API
Centos7下docker部署YApi 可视化接口管理平台
Centos7下docker部署YApi 可视化接口管理平台
882 0
Centos7下docker部署YApi 可视化接口管理平台
|
NoSQL JavaScript 数据可视化
Centos7下YApi 可视化接口管理平台安装和部署
Centos7下YApi 可视化接口管理平台安装和部署
1354 0
Centos7下YApi 可视化接口管理平台安装和部署
|
8天前
|
数据可视化 JavaScript NoSQL
搭建接口平台YApi详解(含搭建node环境)
搭建接口平台YApi详解(含搭建node环境)
32 0
|
8月前
|
Web App开发 JSON 安全
【漏洞复现】Yapi接口管理平台远程代码执行漏洞
Yapi接口管理平台远程代码执行漏洞,攻击者可通过特定Payload对目标实施恶意攻击,获取敏感信息,操控服务器指令。
153 1