2020-04-02
服务部署
0

目录

安装
1. 创建docker容器
2. 安装mongodb
3. 安装node
4.安装pm2
5.安装yapi 命令
6.提前启动mongod命令
7.运行yapi server 进行可视化安装
8.安装过程中报错问题解决(1.8.8版本)。若没有问题,略过该条
9. 利用脚本运行
10. 容器打包成镜像
11. 编写Dockerfile (/dockerFile/yapi/Dockerfile 路径)
12. 利用DockerFile再次打包镜像
13. 利用我们的镜像创建容器
14. yapi config 配置
权限
项目权限
分组权限

YAPI (Yet Another Programming Interface) 是一种开源的 API 管理工具,可以帮助开发人员创建、测试和文档化 RESTful API。

本文将记录 YAPI 的本地部署方法,以下操作均在Linux环境下进行

安装

1. 创建docker容器

bash
docker run -it -p 3000:3000 -p 9090:9090 --name yapi centos bash

2. 安装mongodb

bash
cd /opt curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.10.tgz # 下载压缩包 tar -zxvf mongodb-linux-x86_64-4.0.10.tgz # 解压 mv mongodb-linux-x86_64-4.0.10 /usr/local/mongodb # 移动 ln -s /usr/local/mongodb/bin/mongod /usr/bin/mongod # 软链接,全局变量 ln -s /usr/local/mongodb/bin/mongo /usr/bin/mongo # 软链接,全局变量 cd / && mkdir data && cd data && mkdir db # mongodb默认存放位置,需提前创建

3. 安装node

bash
# 下面两个安装方式,任选其一就行 curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash source ~/.bashrc nvm --version # 可查看nvm版本,说明安装成功 nvm install v12.16.1 # 安装node的稳定版本(npm会同步当前版本的node)

4.安装pm2

bash
npm install -g pm2

5.安装yapi 命令

bash
npm install -g yapi-cli --registry https://registry.npm.taobao.org

6.提前启动mongod命令

bash
nohup mongod & mondo # 查看mongod是否正常启动

7.运行yapi server 进行可视化安装

bash
cd / yapi server

打开 http://127.0.0.1:9090按照提示进行安装

image.png

8.安装过程中报错问题解决(1.8.8版本)。若没有问题,略过该条

报错:

Error: (node:689) DeprecationWarning: current Server Discovery and Monitoring engine is deprecated, and will be removed in a future version. To use the new Server Discover and Monitoring engine, pass option { useUnifiedTopology: true } to the MongoClient constructor.

1.删除目录下的init.lock

2.更改配置文件

bash
vi vendors/server/utils/db.js

修改db.js,在19行下面加上

mongoose.set('useUnifiedTopology', true);

3.删除db文件夹

bash
rm -rf /data/db cd /data mkdir db # 重新创建db文件夹 mkdir log # 创建log文件夹,后续会用到 nohup mongod & # 重启mongodb服务

4.开启yapi服务

bash
cd /my-yapi/vendors/ npm run install-server # 启动服务端进程 # 初始化管理员账号成功,账号名:"admin@admin.com",密码:"ymfe.org" 则成功,否则继续查看问题 npm run start # 启动yapi服务 # log: 服务已启动,请打开下面链接访问: # http://127.0.0.1:3000

9. 利用脚本运行

创建脚本

bash
vi /my-yapi/start.sh

在start.sh加入下面内容:

bash
#!/bin/bash source ~/.bashrc # (或者尝试source /etc/profile) mongod --fork --dbpath=/data/db --logpath=/data/log/mongo.log --logappend pm2 start ./vendors/server/app.js tail -f /dev/null

脚本运行

bash
chmod 777 ./start.sh ./start.sh # 查看脚本是否正常运行

如果登录功能无法运行,检查mongodb是否正常开启

10. 容器打包成镜像

bash
docker stop yapi # 暂停容器 docker commit yapi docker/yapi # 将yapi容器打包成docker/yapi镜像

11. 编写Dockerfile (/dockerFile/yapi/Dockerfile 路径)

FROM docker/yapi WORKDIR /my-yapi ENTRYPOINT ["./start.sh"]

12. 利用DockerFile再次打包镜像

以 /dockerFile/yapi/下的Dockfile为配置创建镜像,镜像名为docker.privete/yapi

bash
docker build -t docker.privete/yapi /dockerFile/yapi/

13. 利用我们的镜像创建容器

  • 端口映射 3000,9090 -d(开启后台进程)
  • --restart=always 关闭时,会自动重启,比如进入容器时,exit退出,容器会自动重启,比如docker start -i 进入,退出后,也会自动重启。除非手动stop
  • 容器名字为yapi,以 docker.privete/yapi镜像为基础
bash
docker rm yapi # 删除原先的容器 docker run -itd -p 3000:3000 -p 9090:9090 --restart=always --name yapi docker.privete/yapi bash

通过exec方式进入容器,如果出现Can't contact LDAP server (-1),重启容器尝试

bash
docker stop ldap docker start ldap

14. yapi config 配置

bash
docker exec -it yapi /bin/bash # 进入容器

config.json 初始化配置

yaml
{ "port": "3000", "adminAccount": "admin@admin.com", "db": { "servername": "127.0.0.1", "DATABASE": "yapi", "port": "27017" }, "mail": { "enable": false, "host": "smtp.163.com", "port": 465, "from": "***@163.com", "auth": { "user": "***@163.com", "pass": "*****" } }, }

修改的部分

yaml
# LDAP 配置 "ldapLogin": { "enable": true, "server": "ldap://129.211.61.3", "searchDn": "ou=People,dc=myhqq,dc=cn", "searchStandard": "uid" }, # 邮箱配置 "mail": { "enable": true, "host": "smtp.qq.com", # 邮箱服务器 "port": 587, # 端口 "from": "284942955@qq.com", # 发送人邮箱 "auth": { "user": "284942955@qq.com", # 邮箱服务器账号 "pass": "txderowwhgxmbihb" # 邮箱服务器密码 } }, # 禁止注册 "closeRegister":true

最终版本

yaml
{ "port": "3000", "adminAccount": "admin@admin.com", "db": { "servername": "127.0.0.1", "DATABASE": "yapi", "port": "27017" }, "mail": { "enable": true, "host": "smtp.qq.com", "port": 587, "from": "284942955@qq.com", "auth": { "user": "284942955@qq.com", "pass": "txderowwhgxmbihb" } }, "ldapLogin": { "enable": true, "server": "ldap://129.211.61.3", "searchDn": "ou=People,dc=myhqq,dc=cn", "searchStandard": "uid" }, "closeRegister":true }

更多配置,参考

权限

项目权限

项目owner 主要有创建该项目的人、项目中的组长、创建分组的人、分组中的组长

owner 权限判断的优先级是 项目权限 > 分组权限

  • 接口-编辑页面:只有管理员和该项目的 owner 权限和项目开发者
  • 接口-高级mock-脚本:只有管理员和该项目的 owner 权限和项目开发者
  • 接口-高级mock-期望:只要能看到项目的人
  • 数据管理页面:只有管理员和该项目的 owner 权限和项目开发者
  • 成员管理页面:只有管理员和该项目的 owner 权限
  • 设置页面下
  • 项目配置页面: 只有管理员和该项目的 owner 权限
  • 项目配置页面-公开按钮:只有管理员才能进行修改
  • 环境配置页面:只有管理员和该项目的 owner 权限和项目开发者
  • token配置页面:只有管理员和该项目的 owner 权限
  • 全局mock脚本页面:只有管理员和该项目的 owner 权限

分组权限

分组 owner 主要有创建分组的人、分组中的组长

owner 权限判断的优先级是 项目权限 > 分组权限

  • 添加项目按钮:管理员和该分组owner权限和分组开发者
  • 成员列表页面:管理员和该分组owner权限
  • 分组设置页面:管理员和该分组owner权限
  • 分组设置页面 -删除分组按钮:只有管理员才能进行修改
  • 添加分组按钮:所有人
  • 复制项目按钮:管理员和该分组owner权限和分组开发者

本文作者:BARM

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!