##简介
YApi 是高效、易用、功能强大的 api 管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务。可以帮助开发者轻松创建、发布、维护 API,YApi 还为用户提供了优秀的交互体验,开发人员只需利用平台提供的接口数据写入工具以及简单的点击操作就可以实现接口的管理。
YApi 的一些客户:
去哪儿,携程,艺龙,京东,唯品支付,链家网,快手,便利蜂
YApi 是去哪儿公司的产品,以上摘自去哪儿YApi官网,下边是我搭建过程中的记录:
##环境要求
nodejs(7.6+)
mongodb(2.6+)
安装这2个,YApi官网没有介绍,需求自己去摸索,我的安装过程:
####安装nodejs
参考文档:http://blog.csdn.net/jonatha_n/article/details/75271050
注意必须是7.6以上版本,我第一次安装的版本比较低,没成功.
在这个地方http://nodejs.org/dist/v8.0.0/找到你要安装的版本,复制下载地址,我要安装的是v8,其地址是
https://nodejs.org/dist/latest-v8.x/node-v8.15.1-linux-x64.tar.gz
(注意正常选择32位或64位版本)
我的服务器是centos系统,操作起来:
cd /usr/local/
wget https://nodejs.org/dist/latest-v8.x/node-v8.15.1-linux-x64.tar.gz
tar zxvf node-v8.15.1-linux-x64.tar.gz
重命名为node
mv node-v8.15.1-linux-x64 node
配置环境变量
vim /etc/profile
添加:
export NODE_HOME=/usr/local/node
export PATH=$NODE_HOME/bin:$PATH
生效:
source /etc/profile
使用命令查看版本,出现相应版本号则表示成功
node -v
npm -v
注意:
有的系统需要使用
sudo node -v才能执行
##mongdb安装
参考:http://blog.csdn.net/zhuchuangang/article/details/51202752
centos7参考这个:http://www.cnblogs.com/flying1819/articles/9035408.html
mongdb删除数据库命令:http://www.runoob.com/mongodb/mongodb-dropdatabase.html
vi /etc/yum.repos.d/mongodb-org-3.2.repo
repo文件内容如下:
[mongodb-org-3.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc
安装所有的mongodb组件:
yum install -y mongodb-org
启动:
service mongod start
[root@CENTSVR247 vendors]# mongo
> use admin #切换到admin数据库
switched to db admin
#创建dba用户
> db.createUser(
{
user: "dba",
pwd: "dba",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
#创建yapi数据库
> use yapi
switched to db yapi
给yapi数据库添加test1用户,权限为读写
> db.createUser(
{
user: "test1",
pwd: "test1",
roles: [
{ role: "readWrite", db: "yapi" }
]
}
)
##安装YApi
官网安装说明:https://yapi.ymfe.org/devops/index.html
[root@CENTSVR247 local]# pwd
/usr/local
[root@CENTSVR247 local]# mkdir yapi
[root@CENTSVR247 local]# cd yapi
[root@CENTSVR247 yapi]git clone https://github.com/YMFE/yapi.git vendors //或者下载 zip 包解压到 vendors 目录
[root@CENTSVR247 yapi]cp vendors/config_example.json ./config.json //复制完成后请修改相关配置,注意config.json中可以配置端口及mongdb相关的数据库及账号密码,参考上面的安装mongdb的步骤
[root@CENTSVR247 yapi]cd vendors
[root@CENTSVR247 vendors]sudo npm install --production --registry https://registry.npm.taobao.org
如果出现js权限问题,请执行这个:
npm install --production --registry https://registry.npm.taobao.org --unsafe-perm
[root@CENTSVR247 vendors]# sudo npm run install-server
(下边是打印到屏幕上的字符,不是命令)
yapi@1.3.1 install-server /usr/local/yapi/vendors
node server/install.js
log: mongodb load success…
初始化管理员账号成功,账号名:“admin@admin.com”,密码:“ymfe.org”
[root@CENTSVR247 vendors]# sudo node server/app.js
load websocket…
log: the server is start at port 3000
log: mongodb load success…
##启动方式优化
以上启动的方式,如果关闭SecureCRT窗口,那么node的服务就停止了,如何让node服务在后台运行呢?
使用pm2 管理 node 服务器启动,停止及后台运行
pm2使用介绍:http://imweb.io/topic/57c8cbb27f226f687b365636
安装pm2:
linux命令行中执行:
[root@CENTSVR247 vendors]npm install -g pm2
如果上面安装时出现"npm install rollbackFailedOptional: verb npm-session",先执行
npm config set registry http://registry.npm.taobao.org,再重新安装
启动:
[root@CENTSVR247 vendors]# pm2 start server/app.js
[PM2] Starting /usr/local/yapi/vendors/server/app.js in fork_mode (1 instance)
[PM2] Done.
┌──────────┬────┬──────┬───────┬────────┬─────────┬────────┬─────┬───────────┬──────┬──────────┐
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │
├──────────┼────┼──────┼───────┼────────┼─────────┼────────┼─────┼───────────┼──────┼──────────┤
│ app │ 0 │ fork │ 24282 │ online │ 0 │ 0s │ 1% │ 12.3 MB │ root │ disabled │
└──────────┴────┴──────┴───────┴────────┴─────────┴────────┴─────┴───────────┴──────┴──────────┘
Use `pm2 show <id|name>` to get more details about an app
这样node就在后台运行了,即使关闭了SecureCRT窗口,服务还在运行中
异常问题解决
今天出现yapi登陆不了的问题,解决方式如下:
[root@CENTSVR247 yapi]# pwd
/usr/local/yapi
[root@CENTSVR247 yapi]# cd vendors/
[root@CENTSVR247 vendors]# pm2 stop server/app.js
[root@CENTSVR247 vendors]# pm2 start server/app.js
服务好了,可以登陆了,怀疑是不是这台服务器上安装了docker引起的,在上面这些操作之前,把所有docker进程都kill了
几个有用的命令:
[root@CENTSVR247 vendors]# pm2 list 查询所有nodejs的进程
#pm2 show <id|name>
[root@CENTSVR247 vendors]# pm2 show app 显示某个进程的详细信息,包括日志文件