有关centos部署yapi的问题记录


本文摘自PHP中文网,作者藏色散人,侵删。

前言

这几天终于完成了为期三个月的公司某个demo版的项目,在这期间和公司的后台因为API的事怼过无数次了,'我的接口没问题,是你请求的方式不对吧!'、'一定是你请求的参数不对'......诸如此类问题贯穿这三个月,仅仅因为我们没有一个良好的接口管理习惯,一堆省事的工具没有被利用起来,接口定义很随意基本靠口头传达。于是乎,我想YApi接口管理平台必须先用起来,再者,张鑫旭大大也在为接口管理打call,前端也应该把工具用起来。解放生产力,提高效率!

安装node

因为yapi的安装必须依赖node,centos环境安装node的各种方法google一下,千千万万种。而我还是踩到坑了,不知道为什么我根据wget安装源码的方法,失败了,当然也不是完全失败,是make的时候,等的太久,我直接ctrl+c了。还是用nvm安装吧,尽管我也不知道合不合理。请代码说话:

  • Wget下载安装nvm

    1

    wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash

    或者Curl

    1

    curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash

  • 下载完成后加入系统环境

    1

    source   ~/.bashrc

  • 验证安装

    1

    command -v nvm

  • 查看远程node版本

    1

    nvm ls-remote

  • 安装所需版本 要求nodejs(7.6+)

    1

    nvm install 10.2.1

安装mongdb

yapi依赖mongodb(2.6+,理论上可配置远程的mlab,此处安装centos的mongdb,前提是确保centos为64位。
同样安装方法也有千千万万种,这里用yum安装

  • 修改yum包管理配置

    1

    vi /etc/yum.repos.d/mongodb-org-3.4.repo   // 会自动新建mongodb-org-3.4.repo文件

  • 复制下面配置信息:

    1

    2

    3

    4

    5

    [mongodb-org-3.4]

    name=MongoDB Repository

    baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/

    gpgcheck=0

    enabled=1

  • 安装mongodb

    1

    yum install -y mongodb-org   // 一路yes安装mongodb

  • 修改mongdb配置(公网可访问:127.0.0.1 => 0.0.0.0)

    1

    vi /etc/mongod.conf

  • 启动mongodb

    1

    systemctl start mongod.service  // 启动mongodb

此时如果是阿里云服务器,安全组添加端口12071就能通过公网地址访问,当然此时是不安全的

4d96edebd16cf35864f82f0f2798e5e.png

此时任何一个人都能通过连接你的mongdb数据篡改你的数据,这时候试着加下验证试试,这里方法也有千千万万种,请自行google,例如:

1

2

3

4

5

6

7

8

9

10

11

mongo --port 27017

 

use admin

 

db.createUser(

  {

    user: "adminUser",

    pwd: "adminPass",

    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]

  }

)

## 部署yapi
根据官方文档,部署方法有两种,鉴于我前几天在电脑上用第一种方法安装时失败,于是就采用第二种复杂一点的方法

1

2

3

4

5

6

7

8

mkdir yapi

cd yapi

git clone https://github.com/YMFE/yapi.git vendors //或者下载 zip 包解压到 vendors 目录

cp vendors/config_example.json ./config.json //复制完成后请修改相关配置

cd vendors

npm install --production --registry https://registry.npm.taobao.org

npm run install-server //安装程序会初始化数据库索引和管理员账号,管理员账号名可在 config.json 配置

node server/app.js //启动服务器后,请访问 127.0.0.1:{config.json配置的端口},初次运行会有个编译的过程,请耐心等候

此时只是暂时成功部署了,还要永久守护这个yapi进程,这里用到pm2

  • 安装pm2

    1

    npm i pm2 -g

  • 切换到yapi的vendors目录 执行pm2 start

    1

    pm2 start server/app.js  --watch

93714fd7155a8c8d5fb607b7321396a.png

1

正常的话,应该能正常访问到,默认接口是3000

a8b406adfc8b15b9c8f216177dd4ba1.png

总结

至此,已经把yapi的源代码clone了一份到你自己的内网,当然,期间还是会遇到不少的坑,我遇到的主要还是mongdb认证的坑:比如认证设置不成功、config文件配置不正确之类的,甚至pm2启动yapi失败,总之多尝试多动手,自己实在不能解决再去请教大牛。

① mongdb认证获取失败

de9dc8f6fb244cf3087b4ee46c51e64.png

解决: 检查mongdb配置是否正确、认证设置是否成功,yapi的config文件是否配置正确

② pm2启动yapi失败,一直重启

d0398d853ee80b1d2cb9f7619f4d1a0.png

解决:通过pm2 log查看是之前通过npm开启的服务没有结束,导致端口占用,ctrl+c之前的服务就行
前两个问题貌似都不算是坑,无非就是拦路虎

③配置好的邮箱失败

fe5ccc3f56a3099f0548037df55e41d.png

解决:那肯定是邮箱配置不对喽,重来吧!然后就继续采坑
不确定是不是网易邮箱有点问题还是怎么的,换成qq的就行,修改完config.json文件,我以为重npm run install-server就万事大吉了,其实 -->

3f4697d55a2c67ae36695d4de0dfd30.png

应该是mongdb中yapi已经存在这个管理员的信息,如果admin下面没有数据的话就直接删掉这条,如果有点话就修改数据吧。我很懒,直接用mongdb compass把整个yapi都删掉了,删库跑路!

不足之处欢迎拍砖指正!

d1d395a8ce5936a8b7b420925472bec.png

yapi开启https访问

虽然对小白来说https然并卵,我还是想捣鼓一下试着通过https来访问我的yapi,首先证书我是有了,获取证书的方法也有千千万万种,我这里用的阿里云的免费证书,总之有证书的话应该能拿到证书文件如.pem、.key、.pfx之类文件。技术菜的我天真的以为还能开启3000端口的https访问,结果啪啪啪打脸打的很清脆,于是乎把https的端口设定成了8443。大概步骤如下:

  • 获取证书文件(默认有证书并且能拿到.key和.pem文件或者.pfx文件)

    43728a45633599ee828a63068423f3d.png

  • 上传证书(我直接放在app.js同级,根据个人喜好)

    f7b2432a7cbd22da270a985a57ce1e0.png

  • 修改app.js 是基于koa的 不过我没有再引用koa-ssl,直接用的node的https方法的第一种

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    // 引入相关的服务和文件

    const fs = require('fs');

    const https = require('https');

    const options = {

        key: fs.readFileSync(__dirname + '/server.key'),

        cert: fs.readFileSync(__dirname + '/server.pem')

      };

    const port = 8443;

    //...

    //开启https端口

    https.createServer(options, app.callback()).listen(port)

  • 成功开启https

    c480af90e948ef1778bfdceb2b976c5.png

  • 同样还是踩了不少坑

    • 文件径不对 not such file
      解决:用__dirname
    • mac verify failure
      解决: 用node https提供的第一种方法引入证书文件

推荐:《centos教程》

以上就是有关centos部署yapi的问题记录的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

如何解决CentOS搭建dhcp服务器启动失败

CentOS7怎么开启vnc服务

图文详解esxi6.5安装CentOS6.x(6.8)的步骤方法

CentOS下使用yum命令安装mysql失败了怎么办

CentOS系统编译安装实例详解

CentOS如何打开端口?

CentOS中mysql无法远程连接怎么处理

CentOS系统下怎么使用yum安装apache

CentOS找不到eth0设备

CentOS下root用户无法登录

更多相关阅读请进入《CentOS》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...