本文最后更新于:1 个月前

参考文章:内网搭建yapi接口管理平台

环境准备

  • 操作系统:centos 7

  • 环境要求:

    • nodejs 7.6+
    • mongodb 2.6+
    • git

安装nodejs

  1. 获取资源(部署nodejs尽可能选择偶数版本,因为偶数版本官方有较长的维护时间,故这次选择8.x。)
    curl -sL https://rpm.nodesource.com/setup_8.x | bash -
  2. 安装
    yum install -y nodejs
  3. 查看版本
    node -v
  4. 查看npm版本
    npm -v

安装mongodb

  1. 更新yum源,非必须但是更新一下无害
    yum -y update
  2. 添加mongodb源文件,在/etc/yum.repos.d 创建一个 mongodb-org.repo 文件
    touch /etc/yum.repos.d/mongodb-org.repo
  3. 编辑mongodb-org.repo文件
    vim /etc/yum.repos.d/mongodb-org.repo
  4. 添加文件内容
[mongodb-org]

name=MongoDB Repository
baseurl=http://mirrors.aliyun.com/mongodb/yum/redhat/7Server/mongodb-org/3.2/x86_64/
gpgcheck=0
enabled=1

这里可能退不出Vim,参考https://www.cnblogs.com/melodyjerry/p/13714705.html

  1. 安装mongodb
    yum install -y mongodb-org
  2. 启动mongodb
    service mongod start
  3. 设置开机启动
    chkconfig mongod on
  4. 打开moMongoDB(可忽略)
    /bin/mongo
  5. 配置远程访问
  • 修改mongod.conf配置文件
    vim /etc/mongod.conf
  • 注释 bindIp: 127.0.0.1
    #bindIp: 127.0.0.1
  • 重启mongod
    service mongod restart

安装git

  • 官方推荐,在内网部署的时候安装git,可以根据自己所需安装
    yum -y install git

搭建YApi环境

搭建YApi

  1. 准备环境搭建完成后,开始搭建YApi,安装命令
npm install -g yapi-cli --registry https://registry.npm.taobao.org

yapi server
$ yapi server
/usr/lib/node_modules/yapi-cli/src/utils.js:68
  getVersions: async function(){
                     ^^^^^^^^

SyntaxError: Unexpected token function
    at createScript (vm.js:56:10)
    at Object.runInThisContext (vm.js:97:10)
    at Module._compile (module.js:549:28)
    at Object.Module._extensions..js (module.js:586:10)
    at Module.load (module.js:494:32)
    at tryModuleLoad (module.js:453:12)
    at Function.Module._load (module.js:445:3)
    at Module.require (module.js:504:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/usr/lib/node_modules/yapi-cli/src/index.js:4:15)

解决办法:将node升级到版本>7.6

https://www.cnblogs.com/melodyjerry/p/13715111.html

  • 实例截图:

    wXMJrq.png

yapi server后提示:

Accessing non-existent property 'cat' of module exports inside circular dependency

产生这个的原因是node的版本太高了
解决的办法很简单,卸载最新版的node v14,重新安装稳定版的node v12,这个问题就解决了

有使用宝塔的话,还需要到宝塔防火墙里放行9090端口

部署YApi

  1. 执行 yapi server 启动可视化部署程序,浏览器打开提示窗口上的地址,非本地服务器,将0.0.0.0替换指定的域名或IP,进入部署页面。
  • 实例截图
    wjZPfA.png
  1. 根据项目实际需要可以修改部署信息,点击【开始部署】,完成部署任务
  • 部署成功截图
    wj66rn.png

  • MongoDB数据库连接失败,检查是不是配置文件的ip、port出错。或者,直接shutdown -r now重启一下服务器,反正我就是hh。
    wjKeiD.png

3.根据部署日志截图上的提示信息,启动服务
启动服务:node vendors/server/app.js
浏览器打开部署日志上的访问地址 http://127.0.0.1:3000 就可以访问搭建的YApi工具了(非本地服务器,将127.0.0.1替换指定的域名或IP),此时YApi本地环境搭建完成

如果是阿里云ecs服务器,端口需要在安全组里开放,不然访问不了

4.pm2方式管理进程

要保证后台保持进程,需要安装pm2。
全局安装:

npm install -g pm2`

启动:

pm2 start /root/my-yapi/vendors/server/app.js --watch -i 1

这样以后就可以很方便的用pm2就行启动关闭啦~

  1. 通过pm2 save保存当前进程状态。

查看:

pm2 list

重启:

pm2 restart service/app.js

停止:

可以先通过pm2 list获取应用的名字(–name指定的)或者进程id。

# pm2 stop app_name|app_id
pm2 stop /root/my-yapi/vendors/server/app.js

pm2使用参考文档:
http://imweb.io/topic/57c8cbb27f226f687b365636

6.升级

升级项目版本是非常容易的,并且不会影响已有的项目数据,只会同步 vendors 目录下的源码文件。

cd {项目目录}
yapi ls //查看版本号列表
yapi update //更新到最新版本
yapi update -v {Version} //更新到指定版本

9.nginx代理

如果您是将服务器代理到 nginx 服务器,请配置 nginx 支持 websocket。

在location /添加

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

10.禁止注册

在 config.json 添加 closeRegister:true 配置项,就可以禁止用户注册 yapi 平台,修改完成后,请重启 yapi 服务器。

{

"port": "*****",

"closeRegister":true

}

 目录