centos部署yapi爬坑記

前言

這幾天終於完成了爲期三個月的公司某個demo版的項目,在這期間和公司的後臺由於API的事懟過無數次了,'個人接口沒問題,是你請求的方式不對吧!'、'必定是你請求的參數不對'......諸如此類問題貫穿這三個月,僅僅由於咱們沒有一個良好的接口管理習慣,一堆省事的工具沒有被利用起來,接口定義很隨意基本靠口頭傳達。因而乎,我想YApi接口管理平臺必須先用起來,再者,張鑫旭大大也在爲接口管理打call,前端也應該把工具用起來。解放生產力,提升效率!html

安裝node

由於yapi的安裝必須依賴node,centos環境安裝node的各類方法google一下,千千萬萬種。而我仍是踩到坑了,不知道爲何我根據wget安裝源碼的方法,失敗了,固然也不是徹底失敗,是make的時候,等的過久,我直接ctrl+c了。仍是用nvm安裝吧,儘管我也不知道合不合理。請代碼說話:前端

  • Wget下載安裝nvmnode

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

    或者Curlgit

    curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
  • 下載完成後加入系統環境github

    source   ~/.bashrc
  • 驗證安裝mongodb

    command -v nvm
  • 查看遠程node版本數據庫

    nvm ls-remote
  • 安裝所需版本 要求nodejs(7.6+)express

    nvm install 10.2.1

安裝mongdb

yapi依賴mongodb(2.6+,理論上可配置遠程的mlab,此處安裝centos的mongdb,前提是確保centos爲64位。
一樣安裝方法也有千千萬萬種,這裏用yum安裝npm

  • 修改yum包管理配置json

    vi /etc/yum.repos.d/mongodb-org-3.4.repo   // 會自動新建mongodb-org-3.4.repo文件
  • 複製下面配置信息:

    [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

    yum install -y mongodb-org   // 一路yes安裝mongodb
  • 修改mongdb配置(公網可訪問:127.0.0.1 => 0.0.0.0)

    vi /etc/mongod.conf
  • 啓動mongodb

    systemctl start mongod.service  // 啓動mongodb

此時若是是阿里雲服務器,安全組添加端口12071就能經過公網地址訪問,固然此時是不安全的

clipboard.png

clipboard.png
此時任何一我的都能經過鏈接你的mongdb數據篡改你的數據,這時候試着加下驗證試試,這裏方法也有千千萬萬種,請自行google,例如:

mongo --port 27017

use admin

db.createUser(
  {
    user: "adminUser",
    pwd: "adminPass",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

## 部署yapi
根據官方文檔部署方法有兩種,鑑於我前幾天在電腦上用第一種方法安裝時失敗,因而就採用第二種複雜一點的方法

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

    npm i pm2 -g
  • 切換到yapi的vendors目錄 執行pm2 start

    pm2 start server/app.js  --watch

clipboard.png

正常的話,應該能正常訪問到,默認接口是3000

clipboard.png

總結

至此,已經把yapi的源代碼clone了一份到你本身的內網,固然,期間仍是會遇到很多的坑,我遇到的主要仍是mongdb認證的坑:好比認證設置不成功、config文件配置不正確之類的,甚至pm2啓動yapi失敗,總之多嘗試多動手,本身實在不能解決再去請教大牛。

① mongdb認證獲取失敗

clipboard.png
解決: 檢查mongdb配置是否正確、認證設置是否成功,yapi的config文件是否配置正確

② pm2啓動yapi失敗,一直重啓

clipboard.png

clipboard.png

解決:經過pm2 log查看是以前經過npm開啓的服務沒有結束,致使端口占用,ctrl+c以前的服務就行
前兩個問題貌似都不算是坑,無非就是攔路虎

③配置好的郵箱失敗

clipboard.png
解決:那確定是郵箱配置不對嘍,重來吧!而後就繼續採坑
不肯定是否是網易郵箱有點問題仍是怎麼的,換成qq的就行,修改完config.json文件,我覺得重npm run install-server就萬事大吉了,其實 -->

clipboard.png

應該是mongdb中yapi已經存在這個管理員的信息,若是admin下面沒有數據的話就直接刪掉這條,若是有點話就修改數據吧。我很懶,直接用mongdb compass把整個yapi都刪掉了,刪庫跑路!

不足之處歡迎拍磚指正!

clipboard.png

yapi開啓https訪問

雖然對小白來講https然並卵,我仍是想搗鼓一下試着經過https來訪問個人yapi,首先證書我是有了,獲取證書的方法也有千千萬萬種,我這裏用的阿里雲的免費證書,總之有證書的話應該能拿到證書文件如.pem、.key、.pfx之類文件。技術菜的我天真的覺得還能開啓3000端口的https訪問,結果啪啪啪打臉打的很清脆,因而乎把https的端口設定成了8443。大概步驟以下:

  • 獲取證書文件(默認有證書而且能拿到.key和.pem文件或者.pfx文件)

    clipboard.png

  • 上傳證書(我直接放在app.js同級,根據我的喜愛)

    clipboard.png

  • 修改app.js 是基於koa的 不過我沒有再引用koa-ssl,直接用的node的https方法的第一種

    // 引入相關的服務和文件
    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

    clipboard.png

  • 一樣仍是踩了很多坑

相關文章
相關標籤/搜索