获取Yapi源码

在github上获取最新的yapi源码

$ git clone https://github.com/YMFE/yapi.git ~/yapi

通过npm或cnpm安装依赖:

$ cd ~/yapi
$ npm install

这样准备工作就完成了一半了,接下来安装mongodb。

安装和配置MongoDB(Ubuntu 18.04)

一些说明

这一部分建议读完之后再进行操作,有些操作可能会产生一些问题,为避免不必要的麻烦,特此声明!

安装MongoDB服务端

安装MongoDB的服务端可以通过官网进行下载,记得选择与自己系统相匹配的版本

mongodb.png

下载完成后,可以使用dpkg命令进行安装

$ sudo dpkg -i mongodb-org-server_4.2.2_amd64.deb

创建mongodb的默认数据目录

$ sudo mkdir -p /data/db

运行mongodb

$ sudo mongod

这样,mongodb服务就启动了。

安装MongoDB客户端

安装了服务端后,还要安装客户端才能够连接数据库进行控制,官网也提供了Mongo Shell,在Package处选择shell即可下载,不过由于是企业版本里的,我也没有去确认是否会收费,就没有尝试了。

我用的是Ubuntu包管理里的mongodb-clients

$ sudo apt install mongodb-clients

安装完成后,运行客户端

$ mongo

PS:如果通过包管理安装了mongodb-clients,最好还是通过包管理安装mongodb,下载的服务端可能和包管理中的客户端版本不匹配,然后被包管理卸载掉服务端,/(ㄒoㄒ)/~~

配置MongoDB

使用客户端连接mongodb后,需要创建yapi数据库

> use yapi
> db.yapi.insert({"name":"init_data"})

当然,你也可以用MongoDB Compass操作数据库。

添加用户

> use yapi
> db.createUser({ 
     user: "yapi", 
     pwd: "123456", 
     roles: [ { role: "dbOwner", db: "yapi" } ]
   })

如果发生

Error: couldn’t add user: Use of SCRAM-SHA-256 requires undigested passwords

请增加 mechanisms 属性

> use yapi
> db.createUser({ 
     user: "yapi", 
     pwd: "123456",
     roles: [ { role: "dbOwner", db: "yapi" } ],
     mechanisms : ["SCRAM-SHA-1"] 
   })

对新增的用户进行验证

> use yapi
> db.auth('yapi','123456')

返回1的话就没有什么问题啦!记得一定要切换到对应数据库下建立用户!!!

配置Yapi

创建config.json配置文件

$ cd ~/yapi
$ cp config_example.json config.json

修改config.json文件

{
  "port": "3000",
  "adminAccount": "you_email_address@email.com",
  "db": {
    "servername": "127.0.0.1",
    "DATABASE": "yapi",						//这里是刚才创建的mongo数据库
    "port": 27017,
    "user": "yapi",									//这里是刚才创建的用户
    "pass": "123456",
    "authSource": ""
  }

最后就是运行Yapi了

$ cd ~/yapi
$ npm start

> yapi-vendor@1.8.6 start /home/liang/projects/git/yapi
> node server/app.js

log: -------------------------------------swaggerSyncUtils constructor-----------------------------------------------
log: 服务已启动,请打开下面链接访问: 
http://127.0.0.1:3000/
log: mongodb load success...

PS:不知道是不是我哪里弄得不对,在yapi的目录直接运行npm start会找不到config.json配置文件,因为提示config.json文件的路径在"../../config.json",这个位置是相对"server/app.js"来说的,也就是yapi目录的上级目录,这个地方我不是很理解,所以我直接把文件里声明的路径改了。

//文件路径是 ~/yapi/server/yapi.js
const config = require('../../config.json');  //这里改成  ../config.json

这样Yapi目录中的config.json就可以正常生效了,log日志目录也可以采用类似的方式处理。