使用境外(香港)服务器部署 YApi 避坑全过程

    科技2024-08-18  31

    使用境外服务器部署 YApi 避坑全过程

    个人博客地址:https://www.ymjhnb.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 站点时文件上传功能异常。

    Processed: 0.013, SQL: 8