RAP2 详细部署、操作指南
RAP2 详细部署、操作指南
文章目录
- RAP2 详细部署、操作指南
- 什么是RAP2
- 项目地址
- 前后端部署指南
- 后端
- 安装node
- 安装mysql
- 安装redis
- 下载源码
- 修改配置文件
- MySQL创建schema
- 编译
- 初始化数据库
- 启动后端
- 检查是否启动成功
- 查看后端日志
- 前端
- RAP2操作指南
- 账号系统
- 权限系统
- API管理
什么是RAP2
RAP通过GUI工具帮助WEB工程师更高效的管理接口文档,同时通过分析接口结构自动生成Mock数据、校验真实接口的正确性,使接口文档成为开发流程中的强依赖。有了结构化的API数据,RAP可以做的更多,而我们可以避免更多重复劳动。
基于RAML的接口定义、文档生成、Mock Server完成了定义和使用的分离,通过一套规范完成的接口定义,可以用不同的工具得到适应不同API管理系统的输出,有更多的可能性,同时保持了核心定义不变。
RAP较之于RAML,前者更加集中,所有的定义、文档、mock都在同一个服务中完成,并且实时生效,方便快捷,如果只考虑方便易用,RAP是更好的选择,而RAML显得更加繁琐,更适合于公开的接口定义,方便在各个系统之间流转。
项目地址
RAP地址:https://github.com/thx/rap ,但目前RAP2已经发布,RAP已经停止维护。
RAP2前后端分离,因此RAP2有两个地址:后端https://github.com/thx/rap2-delos 前端http://github.com/thx/rap2-dolores
前后端部署指南
前后端部署在同一台机器上,所需环境如下:
- Node.js 8.9.4+
- npm 6.9.0+
- MySQL 5.7+
- Redis 4.0+
已有系统环境:
- CentOS 7.2
- Git 1.8.3.1
后端
安装node
假设nodejs已安装,这里nodejs安装不做记录,安装参考:https://www.cnblogs.com/liangjiongyao/p/9120535.html
node和npm验证:
> node -v
v8.11.3> npm -v
6.9.0
如果node镜像速度太慢,建议使用taobao的cnpm代替npm,使用方法:https://npm.taobao.org/
后面就可以直接使用cnpm xxx代替npm xxx,当然这两个命令是等价的,只不过cnpm使用的是tabao镜像源,速度更快。
安装mysql
假设mysql已安装好,或者使用已有的mysql服务,这里使用已有的mysql服务。
安装redis
假设redis已安装好,或者使用已有的redis服务,这里使用已有的redis服务。
下载源码
git clone https://github.com/thx/rap2-delos.git
修改配置文件
进入目录:rap2-delos/src/config
目录文件如下:
├── config.dev.ts
├── config.local.ts
├── config.prod.ts
└── index.ts
修改三个config文件的mysql数据库配置和redis配置:
serve: {port: 8080,
},
...
db: {dialect: 'mysql',host: '192.168.20.61',port: 3306,username: 'root',password: 'root',database: 'RAP2_DELOS_APP',pool: {max: 5,min: 0,idle: 10000,},logging: false,},
其他两个配置文件也修改对应的db配置,redis配置只需修改prod,因为安装在本机,所以local和dev的redis配置可以不用修改。
端口默认是80,这里修改为8080。
之前尝试过只修改prod配置,但是create-db好像不成功,为保证100%成功,直接改三个文件。
其中prod的配置略有区别但道理都是一样:
serve: {port: (process.env.EXPOSE_PORT && parseInt(process.env.EXPOSE_PORT)) || 8080,
},
...
db: {dialect: 'mysql',host: process.env.MYSQL_URL || '192.168.20.61',port: (process.env.MYSQL_PORT && parseInt(process.env.MYSQL_PORT)) || 3306,username: process.env.MYSQL_USERNAME || 'root',password: process.env.MYSQL_PASSWD || 'root',database: process.env.MYSQL_SCHEMA || 'RAP2_DELOS_APP',pool: {max: 80,min: 0,idle: 20000,acquire: 20000,},logging: false,
},
redis: {host: process.env.REDIS_URL || 'localhost',port: (process.env.REDIS_PORT && parseInt(process.env.REDIS_PORT)) || 6379
}
MySQL创建schema
在配置的mysql数据库中创建rap2需要的schema:
CREATE DATABASE IF NOT EXISTS RAP2_DELOS_APP DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
编译
# 切换到根目录
cd ../..
# 安装依赖包
npm install
# 安装PM2
# 可能会出现什么gcc版本过低等问题,出现后请自行升级
npm install -g pm2
# 安装TypeScript编译包
npm install -g typescript
# 编译
# 修改了项目的代码或配置文件之后一定重新编译,不然修改不起作用
# 如果报错说没有权限创建文件夹,可以在后面加上--unsafe-perm参数
npm run build
初始化数据库
# 初始化数据库
# 确保数据库可连,控制台会打印初始化内容和进度
npm run create-db
# 检查
npm run check
启动后端
# 启动
npm run start
# 控制台输出成功
检查是否启动成功
访问服务器8080端口,出现如下信息表明启动成功:
查看后端日志
有时前端报错,需要查看后端日志,操作如下:
# 查询pm2进程
pm2 ls
┌──────────────────┬────┬─────────┬──────┬───────┬────────┬─────────┬────────┬──────┬───────────┬──────┬──────────┐
│ App name │ id │ version │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │
├──────────────────┼────┼─────────┼──────┼───────┼────────┼─────────┼────────┼──────┼───────────┼──────┼──────────┤
│ rap-server-delos │ 0 │ 1.0.0 │ fork │ 15499 │ online │ 0 │ 8h │ 0.2% │ 35.7 MB │ root │ disabled │
└──────────────────┴────┴─────────┴──────┴───────┴────────┴─────────┴────────┴──────┴───────────┴──────┴──────────┘
# 拿到后端的pm2 id 为0
# 查看实时日志
pm2 logs 0
# 日志将会以类似tail的方式打开,再次操作即可看见错误信息
前端
前端和后端启动过程差不多:
# 获取源代码
git clone https://github.com/thx/rap2-dolores.git# 修改配置文件
cd rap2-dolores/src/config
# 文件目录如下
├── config.dev.js
├── config.prod.js
└── index.js
# 修改两个配置文件的如下部分
serve: 'http://192.168.5.224:8080'
# 注意ip不能写localhost,即使是在同一个机器上写的前端和后端# 回到根目录
cd ../..
# 安装依赖包
npm install
# 编译
# 修改了项目的代码或配置文件之后一定重新编译,不然修改不起作用
# 如果报错说没有权限创建文件夹,可以在后面加上--unsafe-perm参数
npm run build# 安装serve
npm install -g serve
# 启动
# 其中./build是编译生成的文件路径,8090是前端访问的端口
serve -s ./build -p 8090
# 这里启动后会阻塞会话,可以使用nohup,并且指定全路径启动
nohup serve -s /root/rap/build -p 8090 &
访问服务器8090端口:
RAP2操作指南
账号系统
可直接申请账号,申请账号后可登陆。
权限系统
- 登陆后可查看所有公开仓库(那些稀奇古怪的仓库是初始化数据,到时可以用管理员账户删除)
但仅仅有查看查库列表的权限,如果需要查看仓库内容的权限,请继续往下看 - 登陆后可创建仓库
- 自己创建的仓库只能自己修改,可以编辑仓库添加成员,加入的成员可以修改和添加接口
- 可以创建团队,然后创建团队的API仓库,这样团队里的人就都有权限修改API
API管理
api可以随时创建、修改、删除,并且保存后会mock接口会马上生效。mock-server基于mockjs,接口的入参和出参都可以根据一些特殊规则来生成:
- 创建API
- 定义入参出参:
入参有parameter和body两种方式,mock后,并不会检查参数是否满足生成规则,只会检查必填参数是否填写,生成规则适用于随机生成一个参数用于测试API:
- 入参和出参规则
类型 生成规则 初始值 导入写法 描述 举例 string min-max 任意字符串 {"name|min-max": "xyz"} 名称为name的属性,其值为“xyz”字符串重复n次,min<=n<=max count 任意字符串 {"name|count": "xyz"} 名称为name的属性,其值为“xyz”重复count次 number +1 任意整数 {"name|+1": value} 作为array属性中某个object对象的属性name,列表中对象的该属性会从value开始自增 min-max 任意数字,可以是小数 {"name|min-max": 5} 名称为name的属性,其值为min-max的随机整数 min-max.dmin-dmax 任意数字,可以是小数 {'name|min-max.dmin-dmax': 1.2} 名称为name的属性,其值为整数部分为min-max,小数部分保留dmin-dmax位的小数 其中小数部分或整数部分可以固定 boolean 1 true/false {"name|1": true} 名称为name的属性,其值为true/false的概率都是1/2 min-max true/false {"name|min-max": value} 名称为name的属性,其值为 value 的概率是 min / (min + max) 值为 !value 的概率是 max / (min + max) object count {"name|count": {"key": value}} 名称为name的属性,其值为对象中任取count个属性组成的新对象 min-max {"name|min-max": {"key": value}} 名称为name的属性,其值为对象中任取min-max个属性组成的新对象 array min-max {"name|min-max": [{"key": value}]} 名称为name的属性,其值为数组中对象重复min-max次 count {"name|count": [{"key": value}]} 名称为name的属性,其值为数组中对象重复count次 function 函数体 {"name": function(){}} 名称为name的属性,其值为执行函数 function返回值 函数的上下文为属性 'name' 所在的对象 regexp /regexp/ {"name": /regexp/} 名称为name的属性,其值为满足regexp正则表达式的任意值 占位符(string) @placeholder_name {"name": "@placeholder_name"} 名称为name的属性,其值为placeholder_name函数随机生成的值生成 更多占位符请参考mockjs文档 http://mockjs.com/0.1/#Mock.Random
- 导入功能:
导入时,属性值不能为null,否则点击提交API会卡住,查看后台日志已报错,所有属性都不支持null值,即使导入成功,提交编辑的时候也会卡住(F12查看network已经失败,页面不会有明显提示)
RAP2 详细部署、操作指南相关推荐
- 自动化运维工具SaltStack详细部署
2019独角兽企业重金招聘Python工程师标准>>> 自动化运维工具SaltStack详细部署 2014-12-28 17:30:34 标签:saltstack 原创作品,允许转载 ...
- 自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客
自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客 自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客 自动化运维工具Ansib ...
- 遵化市10余个局委办一把手调研九次方大数据,详细部署数字遵化建设
7月20日,遵化市人民政府市长董学忠.副市长王洪军率领市政府办.农业农村局.自然资源与规划局.交通运输局.商务和投资促进局.文化广电与旅游局.金融办.国资办.城投公司等10余个局.委.办一把手到九次方 ...
- Ceph集群详细部署配置图文讲解(二)
活动地址: 开发云 - 一站式云服务平台 文章目录 Ceph集群详细部署配置 一.部署结构 二.系统配置 1.修改主机名称 2.编辑hosts文件 3.修改yum源 4.安装ceph与ceph-dep ...
- APP分发系统源码 全开源超级签名系统源码 附带详细部署文档
介绍: APP分发系统源码.全开源超级签名系统源码. 附带详细部署文档. 源码全开源的!!! 后台账号:admin 后台密码:123456 需要的资料:阿里云账户 服务器 linux(4核8G) 阿里 ...
- 全网最全无坑!!! Centos8环境 安装MySQL8 (单机版详细部署及问题汇总)
Centos8 环境 安装MySQL8 详细部署 文章目录 检查是否已安装(强力卸载) 安装MySQL8.0 查看MySQL是否安装成功 设置MySQL服务为开机自启动项 启动MySQL服务 相关安装 ...
- CloudStack+XenServer详细部署方案 交换机配置和服务器连线
CloudStack+XenServer详细部署方案(2):交换机配置和服务器连线 本文将根据设计文档, 对交换机进行配置和服务器网络连线方式进行说明. Step1.交换机规划, 根据功能将交换机端 ...
- MySQL之MHA高可用配置及故障切换(理论加实战详细部署步骤)
MySQL之MHA高可用配置及故障切换(理论加实战详细部署步骤) 文章目录 一.MHA介绍 (一).什么是MHA (二).MHA 的组成 (三).MHA 的特点 二.搭建 MySQL MHA (一). ...
- OCS 企业版图解详细部署
目录 先决条件 3 安装 5 1. 准备AD 6 1.1 扩展架构 6 1.2准备林 8 1.3准备域 12 2.创建池 13 2.1准备 13 2.2部署 14 3.配置池 19 4.添加服务器到池 ...
- Python+Django+Nginx+Uwsgi 详细部署过程(爬坑过程,可以了解各个软件的执行流程,看过)
这个部署,我真的是爬了好久的坑,才爬出来,所以给大家分享一下,避免入坑. 首先我们先了解一下相关知识: wsgi: 一种实现python解析的通用接口标准/协议,是一种通用的接口标准或者接口协议, ...
最新文章
- loadrunner提高篇 - 结果分析实践
- pythonweb扫描器_Python安全工具之web目录扫描
- 常见的网络工程师面试问题
- ktv 上传图片 1218
- python/进程线程的总结
- jQuery Moblie 页面模版(基础)
- JavaScript的排序算法
- 修改RHEL6的root超级用户密码
- C语言中逻辑非和取反的不同
- mt管理器主题修改教程_手机全局主题:美乐蒂
- 树莓派+aria2+yaaw搭建下载机
- 百度 tts 语音合成前端无法播放问题解决
- VC静态库开发与使用
- 四级常见英语短语1000条
- git push 报错 error: failed to push some refs to ‘git@xxx/xx.git‘
- 组装计算机必须要有显卡吗,组装电脑应该侧重CPU还是显卡
- 你的睡眠时间和睡眠质量达标了么
- CC2640R2F之基础--工程管理篇(下)--外设驱动IO口分配(纯干货)
- 7.Markdown图片
- Dad34 Java对象的内存形式
热门文章
- 死亡时间推断MATLAB,AGU 本周精选文章:火星陨石坑;气候敏感性;水资源压力;洪水灾害建模...
- Python爬虫入门教程: 半次元COS图爬取
- UE4 初学者内容包介绍
- 什么是带宽,举个例子说一下,整天说的服务器带宽有限,是什么意思?
- c/c++游戏编程之Easyx图形库基础
- javascript案例26——求100以内所有7倍数之和
- OS开学考前临时抱佛jio(2)
- opencv第九天pro
- KK 的99 条额外的建议[翻译]#yyds干货盘点#
- python实现蜂鸣器演奏两只老虎