使用境外服务器部署 YApi 避坑全过程
个人博客地址:https://www.jdassd.top/
以下安装步骤使用宝塔面板,如未安装宝塔面板,请点击这里进行安装
问题
如果你是国内服务器的话,按照 官方教程 安装基本没什么问题,但是如果是境外服务器(包含香港服务器)的话,因为使用的淘宝源的缘故,会出现一些问题。
以下则详细记录了笔者本次安装中出现的问题,以及实践过后的解决方案。
笔者所使用的服务器为腾讯 香港 轻量云。
安装方式
官方提供了两种安装方式:
- 可视化方式
- 命令行方式
笔者在安装的过程中,因为觉得可视化方便的原因,先是使用了可视化的方式,前期出现了一堆恼人的问题不说,过关斩将最后打开可视化页面进行最后一步:点击一键部署,还是出现了各种问题。
笔者建议:境外服务器使用命令行方式部署 YApi 或许来得较为愉悦
环境配置
按照官方要求以及笔者尝试,选择了这样的环境:
- MongoDB
在宝塔面板-软件商店中搜索 MongoDB 安装即可
- PM2 管理器
这一步境外服务器会出现一些问题,主要是由于使用淘宝源下载 Node.js 造成下载缓慢最终超时。如果不为境外服务器,那么在宝塔面板的软件管理中,搜索后点击下载安装即可。而对于境外服务器会出现的问题,解决的方案有以下两种:
- 手动下载指定版本 Node.js 压缩包,然后放到下载缓存位置
- 查看失败的日志信息(也可使用宝塔面板的文件管理进入指定目录查看该文件)
cat /www/server/panel/logs/error.log
- 找到下载链接地址
笔者的下载链接为: http://npm.taobao.org/mirrors/node/v12.19.0/node-v12.19.0-linux-x64.tar.xz
- 复制链接,自行下载该文件
- 将下载好的文件上传到服务器的
/www/server/nvm/.cache/bin/node-v12.19.0-linux-x64/
目录下,如果没有该目录可以自行创建该目录mkdir /www/server/nvm/.cache/bin/node-v12.19.0-linux-x64/
,再上传 - 重新尝试下载,直至下载 真正 成功,如何确保安装成功,请看第二点
- 在宝塔的软件管理界面,反复安装和卸载 PM2 管理器(其中可能会有安装成功提示,但实际上没有安装成功),可以用以下两种方案来确保安装成功(其中 1 仅为 2 的辅助方法):
- 在宝塔消息盒子的执行日志中发现下载源不是淘宝源而是
https://nodejs.org/dist/v12.19.0/node-v12.19.0-linux-x64.tar.xz
- 打开宝塔 PM2 管理器界面,能够在 Node 版本中正确看到 Node 版本,而不为 node,且模块管理中也能够看到 pm2 和 npm 模块,则为安装成功
- 在宝塔消息盒子的执行日志中发现下载源不是淘宝源而是
确保环境安装成功后,即可进行 YApi 安装
YApi 安装
方式一:可视化部署
- 下载以及运行安装向导 yapi-cli
官方的写法为:
npm install -g yapi-cli --registry https://registry.npm.taobao.org
yapi server
同理,如果你是境外服务器,访问淘宝源很慢,那么使用下面的方式来替换官方的写法:
npm install -g yapi-cli
yapi server
- 启动安装向导后,访问
ip:9090
即可看到可视化安装界面
如果你进不去,可能是你 没开端口 ,首先你得在你的 服务器供应商 (如阿里云、腾讯云)里的控制台开放 9090 端口,其次你需要在 宝塔面板-安全 里开放 9090 端口。 - 如果,当你填完可视化界面的内容之后,点击部署按钮,发现 YApi 部署过程中,依旧需要使用淘宝源下载一些依赖,然后进度条仿佛卡住一般一动不动,不知道你会是什么心情。所以如果你是境外服务器,你应该事先这么做:
- 在刚刚 YApi 安装成功的显示里,可以看到 YApi 的安装目录:
/usr/local/src/nodejs/bin/yapi -> /usr/local/src/nodejs/lib/node_modules/yapi-cli/bin/yapi-cli /usr/local/src/nodejs/bin/yapi-cli -> /usr/local/src/nodejs/lib/node_modules/yapi-cli/bin/yapi-cli + yapi-cli@1.5.0 updated 121 packages in 11.981s
- 进入 YApi 安装目录下的 src 文件夹,开始编辑 utils.js 文件。找到
function github()
函数,在函数代码块内部的开头,加上type = 'github'
,即可使用 github 源进行下载 - 刷新浏览器,重新填写表格信息,点击一键部署按钮,等待部署完成(如果你在这一步像笔者一样悲惨,仍然没有部署完成,出现了其他的错误,可以采用笔者下面推荐的命令行部署方式)
方式二:命令行部署【推荐】
- 首先 cd 进你想存放 YApi 文件夹的目录,然后
mkdir yapi
创建 YApi 文件夹 - cd 进入 YApi 文件夹,复制
git clone --depth=1 https://github.com/YMFE/yapi.git vendors
然后黏贴+回车 cp vendors/config_example.json ./config.json
执行完这句话之后,在 yapi 文件夹下找到 config.json 文件,修改配置。配置文件中,user 和 pass 留空- cd 进入 vendors 文件夹,复制黏贴加回车
npm install --production --registry https://registry.npm.taobao.org
如果你是境外服务器,那么npm install --production
- 运行安装程序:
npm run install-server
整个部署过程如下:
mkdir yapi
cd yapi
git clone https://github.com/YMFE/yapi.git vendors //或者下载 zip 包解压到 vendors 目录(clone 整个仓库大概 140+ M,可以通过 `git clone --depth=1 https://github.com/YMFE/yapi.git vendors` 命令减少,大概 10+ M)
cp vendors/config_example.json ./config.json //复制完成后请修改相关配置
cd vendors
npm install --production --registry https://registry.npm.taobao.org // 如果是境外服务器那么 npm install --production
npm run install-server //安装程序会初始化数据库索引和管理员账号,管理员账号名可在 config.json 配置
node server/app.js //启动服务器,访问 127.0.0.1:{config.json配置的端口}
创建守护线程(使用 PM2)
为了解决重启之后服务停止不能访问的问题,创建守护线程
-
在执行完命令行方式的安装之后,已经 位于 vendors 文件夹下 。(如果使用的可视化安装方式,请参照命令行安装方式中的目录顺序,自行进入 vendors 文件夹下)
-
此时运行指令:
pm2 start server/app.js --watch -n YApi
即可
绑定域名
在宝塔的 PM2 管理器中,找到刚刚创建完守护进程的名为 “YApi” 的项目,点击后面的映射再填写域名即可
如果是使用 nginx 的宝塔环境,还需要在 nginx 中配置支持 websocket
在location /添加
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
且 YApi 官方建议部署成 http 站点,因 chrome 浏览器安全限制,部署成 https 会导致测试功能在请求 http 站点时文件上传功能异常。