前言
最近有需要和团队成员使用到yapi,但是有些接口不太适合放在公司已经部署好的yapi上,所有就有了自己部署一套yapi的想法,中间曲曲折折,最终终于搭建好了。
1. 环境
最初我是在某云网站申请了一个免费的云服务器,虽说是免费,但是只是五天,想继续使用,需要在各贴吧发布广告贴来进行续期,每次续期五天。续期三次后,第四次忘记了,想起来的时候,发现云服务器已经被删除了。最终我索性花了点money购买了比较靠谱的某云服务器,使用的系统是Alibaba Cloud Linux 2,完美兼容centos7。
我是新建了一个yapi用户来进行yapi的部署,在Linux上新建用户的命令:
# 添加用户,指定家目录,并同时创建和用户名相同的组
useradd -d /home/yapi -U yapi
# 修改密码
passwd yapi
2. 部署nodejs
我用的nodejs是12.20.2版本,一开始下载的最新的14版本,但是一直部署失败,网上翻阅有说需要降版本的,就降到了12版本。在官网下载后,直接解压。
官网下载地址:http://nodejs.cn/download/
阿里云镜像地址,可以任意选择版本:https://npm.taobao.org/mirrors/node/
# tar -xvf node-v12.20.2-linux-x64.tar.gz 解压后
$ ls
node-v12.20.2-linux-x64
# 设置环境变量
vi ~/.bash_profile
# nodejs 将下面四行写进文件
NODE_VER=v12.20.2
NODE_OS=linux-x64
NODE_HOME=$HOME/tools/node-$NODE_VER-$NODE_OS
PATH=$NODE_HOME/bin:$PATH
# 保存后,生效
source ~/.bash_profile
# 使用node -v ; npm -v 查看是否设置成功
$ node -v
v12.20.2
3. 部署mongodb
我使用的mongodb是社区版4.0.27版本。
官网下载:https://www.mongodb.com/try/download/community
# 下载后解压
$ ls
mongodb-4.0.27
# 创建存放数据和日志目录
$ cd mongodb-4.0.27/
$ mkdir data logs
# 创建配置文件
$ mkdir etc
$ vi mongod.conf
# 配置文件内容
systemLog:
destination: file
path: "/home/yapi/tools/mongodb-4.0.27/logs/mongod.log" #日志存放路径
logAppend: true
storage:
dbPath: "/home/yapi/tools/mongodb-4.0.27/data" #数据存放路径
journal:
enabled: true
processManagement:
fork: true
net:
bindIp: localhost
port: 27017
# 启动
$ cd bin
$ ./mongod --config ../etc/mongod.conf./mongod --config ../etc/mongod.conf
#查看是否成功
$ ./mongo
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
yapi 0.001GB
>
4. 部署yapi
根据这个文档进行部署。
官网地址:http://yapi.smart-xwork.cn/doc/devops/index.htmlhttp://yapi.smart-xwork.cn/doc/devops/index.html
两种方式我都试过,第一种比较简单:
# 安装yapi-cli, 指定使用淘宝镜像,速度比较快
$ npm install -g yapi-cli --registry https://registry.npm.taobao.org
# 安装完成后,直接使用命令,会提示在浏览器打开一个地址,把ip替换成自己虚拟机地址后,在浏览器打开
$ yapi server
在浏览器打开 http://0.0.0.0:9090 访问。非本地服务器,请将 0.0.0.0 替换成指定的域名或ip
这是可视化界面进行部署,在浏览器打开地址后,填入相应信息,就开始进行自动部署了。部署成功后,进入yapi的安装目录(部署时填写)。
$ ls
config.json init.lock log vendors
$ cd vendors
# 启动yapi服务,部署成功后,应该会自动启动,这个地方我忘记了,但是不是后台运行的,退出后服务就停了。可以使用下面命令手动启动
$ node server/app.js
会提示登录地址及管理员用户、密码。 登录地址为 http://ip:3000,用户名为部署时自己填入的,密码一般默认为ymfe.org
5. pm2后台管理
yapi服务可以使用pm2进行后台运行。
pm2安装很简单
# 安装命令
npm install -g pm2
# 运行yapi服务,进入yapi部署的目录
cd vendors/server
pm2 start app.js --name myyapi
# yapi服务就会一直在后台运行了, pm2 status 查看
$ pm2 status
┌─────┬───────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │
├─────┼───────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0 │ myyapi │ default │ 1.10.1 │ fork │ 8330 │ 4D │ 0 │ online │ 0% │ 85.3mb │ yapi │ disabled │
└─────┴───────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
6. 完结
至此,yapi部署完成,简单功能可以使用,高价功能尚未使用。不过有个问题,明明部署了1.10.1,在登录后提示版本为1.10.0,建议升级1.10.1。 也没有找到是什么原因,不过不影响使用,就没有再关注。如果有知道的小伙伴,欢迎留言解疑。
部署时,遇到过好多问题,一开始操作系统使用的是Alibaba Cloud Linux 3(完美兼容centos8),可能是操作系统兼容问题,换了好几个node和mongodb的版本,都没有成功。 后来换了Alibaba Cloud Linux 2之后,把node版本降到12,才部署成功。兼容问题害死人啊。