yapi 本地部署(基于 ubuntu 18.04)

环境准备

  • nodejs(7.6+)
  • mongodb(2.6+)
  • git

nodejs 与 git

1
sudo apt install nodejs npm git

mongodb

安装 MongoDB

  1. 导入公钥

Ubuntu 软件包管理器 apt(高级软件包工具)需要软件分销商的 GPG 密钥来确保软件包的一致性和真实性。 运行此命令将 MongoDB 密钥导入到您的服务器。

1
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
  1. 创建源列表文件

使用以下命令在 /etc/apt/sources.list.d/ 中创建一个 MongoDB 列表文件:

1
echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list
  1. 安装 MongoDB
1
2
sudo apt-get update
sudo apt-get install -y mongodb-org

MongoDB apt 安装程序自动为 Systemd 创建了一个 mongod.service 文件,因此不需要再手动创建它。

启动 MongoDB 并将其添加为在启动时启动的服务:

1
2
systemctl start mongod
systemctl enable mongod

配置 MongoDB 用户名和密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
mongo

# 进入 MongoDB shell 后,切换到数据库管理员
use admin
# 创建 root 用户
db.createUser({user:"admin", pwd:"admin123", roles:[{role:"root", db:"admin"}]})


# 切换到数据库 yapi
use yapi
# 创建 yapi 管理员用户
db.createUser({user:"yapiAdmin", pwd:"yapi123", roles:[{role:"dbOwner", db:"yapi"}]})

# 退出
exit

# 重新启动MongoDB并连接创建的用户
sudo service mongod restart

MongoDB 数据迁移

备份
1
mongodump -h dbhost  -d dbname -o dbdirectory
  • -h: mongodb 所在服务器地址,例如 127.0.0.1,也可以指定端口 127.0.0.1:27017
  • -d: 需要备份的数据库名称,例如:yapi
  • -o: 备份的数据存放的位置,例如:/home/bak
  • -u: 用户名称,使用权限验证的 mongodb 服务,需要指明导出账号
  • -p:用户密码,使用权限验证的 mongodb 服务,需要指明导出账号密码
恢复
1
mongorestore -h dbhost -d dbname --drop <path>
  • -h: mongodb 所在服务器地址
  • -d: 需要恢复备份的数据库名称,例如:yapi,可以跟原来备份的数据库名称不一样
  • --drop: 加上这个参数的时候,会在恢复数据之前删除当前数据
  • <path>: 备份数据所在位置,例如:/home/bak/yapi
  • --dir: 指定备份的目录,你不能同时指定 <path>--dir 选项

yapi

方式一. 可视化部署

执行 yapi server 启动可视化部署程序,输入相应的配置和点击开始部署,就能完成整个网站的部署。部署完成之后,可按照提示信息,执行 node/{网站路径/server/app.js} 启动服务器。在浏览器打开指定 url, 点击登录输入您刚才设置的管理员邮箱,默认密码(ymfe.org) 登录系统(默认密码可在个人中心修改)。

1
2
npm install -g yapi-cli --registry https://registry.npm.taobao.org
yapi server

经测试,ubuntu 18.04 中 9090 端口被占用,目前需在源码中修改端口:

1
2
3
4
5
6
7
8
// 注:路径可能有所不同,下面的是我机器上的
// /usr/local/lib/node_modules/yapi-cli/src/commands/server.js
// line 91

...
// app.listen(9090)
app.listen(argv.port || 9090) // 支持 yapi server --port 9290
...

方式二. 命令行部署

1
2
3
4
5
6
7
8
9
10
mkdir yapi
cd yapi
git clone --depth=1 https://github.com/YMFE/yapi.git vendors
cp vendors/config_example.json ./config.json // 复制完成后请修改相关配置
cd vendors
npm install --production --registry https://registry.npm.taobao.org

# 在此之前请先修改配置 config.json
npm run install-server // 安装程序会初始化数据库索引和管理员账号,管理员账号名可在 config.json 配置
node server/app.js // 启动服务器后,请访问 127.0.0.1:{config.json配置的端口},初次运行会有个编译的过程,请耐心等候

请在启动前进行配置

1
sudo vim config.json

pm2 进程守护

1
2
3
4
npm install pm2@latest -g

# 注意目录 app.js 的目录,pm2 start `real_path`/app.js
pm2 start ./server/app.js

pm2 常用命令

  • 开机自启动:pm2 startup,然后按提示操作
  • 取消开机自启动:pm2 unstartup,然后按提示操作
  • 保存当前应用:pm2 save
  • 清理已保存的应用:pm2 cleardump

参考资料

https://yapi.ymfe.org/devops/index.html
https://www.linuxidc.com/Linux/2018-05/152253.htm
https://pm2.io/doc/en/runtime/guide/startup-hook/