本文最后更新于:25 天前
需求
Yapi内外部署
部署前环境描述
1 2 3 4 5 6 7
| OS: Windows 10
> node --version v16.13.0
> npm --version 8.1.0
|
1、简单部署
按照官方文档 内网部署 (smart-xwork.cn)
一开始选择了懒人法也是推荐法,可视化部署
1 2
| npm install -g yapi-cli --registry https://registry.npm.taobao.org yapi server
|
一开始安装到yapi服务启动都是没有问题的
按照提醒 在浏览器打开 http://0.0.0.0:9090 访问
即通过浏览器访问 http://127.0.0.1:9090/
打开界面,提交表单初始化平台部署
等待配置时间过长,发现异样,打开cmd检查,果然有错误
错误日志为:
1 2 3 4 5 6
| <ref *1> Error: getaddrinfo ENOTFOUND yapi.demo.qunar.com at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:71:26) { errno: -3008, code: 'ENOTFOUND', syscall: 'getaddrinfo', hostname: 'yapi.demo.qunar.com',
|
寻找了一下大佬的方案后,只在一 Github issues 中找到了解决流程
便是接下来的 命令行部署
2、命令行部署
先构建一个项目文件夹 如 D:\Project\Yapi
在 yapi
中打开 CMD clone
yapi 项目
1
| git clone https://github.com/YMFE/yapi.git vendors
|
下载完成后在 yapi
下产生 vendors
文件夹,
在 yapi
文件夹下创建配置文件,可以通过拷贝 config_example.json
更改文件名于为 config.json
文件内容
同时删除 vendors
文件夹下的 package-lock.json
config的参考
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| { "port": "3000", "adminAccount": "admin@admin.com", "timeout":120000, "db": { "servername": "127.0.0.1", "DATABASE": "yapi", "port": 27017 }, "mail": { "enable": false, "host": "smtp.163.com", "port": 465, "from": "***@163.com", "auth": { "user": "***@163.com", "pass": "*****" } } }
|
参考 shell 命令为
1 2 3
| cp vendors/config_example.json ./config.json // ⚠️ 复制完成后把内容修改为 config.json cd vendors rm package-lock.json // ⚠️ 一定要删除 package-lock.json
|
接下来安装依赖,进入 vendors
文件夹,执行
1
| npm install --production --registry https://registry.npm.taobao.org
|
此时可能会出现报错如 —— 依赖冲突、推荐你使用 --force or --legacy-peer-deps:
此时我是使用 --force 解决,即:
1
| npm install --force --production --registry https://registry.npm.taobao.org
|
--force 网上的解释是:基于最后下载的依赖项,并将覆盖任何以前下载的依赖项
最后运行
1 2
| npm run install-server node server/app.js
|
运行
但是使用 node
的启动,关闭cmd之后就会停止服务,这里的解决办法是使用 pm2
pm2
的操作命令如下 (在 vendors\server
文件夹下运行)
1 2 3 4 5 6 7 8
| npm install -g pm2 pm2 start app.js // 启动 pm2 start app.js -i max //启动 使用所有CPU核心的集群 pm2 stop app.js // 停止 pm2 stop all // 停止所有 pm2 restart app.js // 重启 pm2 restart all // 重启所有 pm2 delete app.js // 关闭
|