前言
這幾天終于完成了為期三個(gè)月的公司某個(gè)demo版的項(xiàng)目,在這期間和公司的后臺(tái)因?yàn)锳PI的事懟過(guò)無(wú)數(shù)次了,'我的接口沒(méi)問(wèn)題,是你請(qǐng)求的方式不對(duì)吧!'、'一定是你請(qǐng)求的參數(shù)不對(duì)'……諸如此類(lèi)問(wèn)題貫穿這三個(gè)月,僅僅因?yàn)槲覀儧](méi)有一個(gè)良好的接口管理習(xí)慣,一堆省事的工具沒(méi)有被利用起來(lái),接口定義很隨意基本靠口頭傳達(dá)。于是乎,我想YApi接口管理平臺(tái)必須先用起來(lái),再者,張?chǎng)涡翊蟠笠苍跒榻涌诠芾泶騝all,前端也應(yīng)該把工具用起來(lái)。解放生產(chǎn)力,提高效率!
安裝node
因?yàn)閥api的安裝必須依賴(lài)node,centos環(huán)境安裝node的各種方法google一下,千千萬(wàn)萬(wàn)種。而我還是踩到坑了,不知道為什么我根據(jù)wget安裝源碼的方法,失敗了,當(dāng)然也不是完全失敗,是make的時(shí)候,等的太久,我直接ctrl+c了。還是用nvm安裝吧,盡管我也不知道合不合理。請(qǐng)代碼說(shuō)話:
-
Wget下載安裝nvm
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
或者Curl
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
-
下載完成后加入系統(tǒng)環(huán)境
source ~/.bashrc
-
驗(yàn)證安裝
command -v nvm
-
查看遠(yuǎn)程node版本
nvm ls-remote
-
安裝所需版本 要求nodejs(7.6+)
nvm install 10.2.1
安裝mongdb
yapi依賴(lài)mongodb(2.6+,理論上可配置遠(yuǎn)程的mlab,此處安裝centos的mongdb,前提是確保centos為64位。
同樣安裝方法也有千千萬(wàn)萬(wàn)種,這里用yum安裝
-
修改yum包管理配置
vi /etc/yum.repos.d/mongodb-org-3.4.repo // 會(huì)自動(dòng)新建mongodb-org-3.4.repo文件
-
復(fù)制下面配置信息:
[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配置(公網(wǎng)可訪問(wèn):127.0.0.1 => 0.0.0.0)
vi /etc/mongod.conf
-
啟動(dòng)mongodb
systemctl start mongod.service // 啟動(dòng)mongodb
此時(shí)如果是阿里云服務(wù)器,安全組添加端口12071就能通過(guò)公網(wǎng)地址訪問(wèn),當(dāng)然此時(shí)是不安全的
此時(shí)任何一個(gè)人都能通過(guò)連接你的mongdb數(shù)據(jù)篡改你的數(shù)據(jù),這時(shí)候試著加下驗(yàn)證試試,這里方法也有千千萬(wàn)萬(wàn)種,請(qǐng)自行g(shù)oogle,例如:
mongo --port 27017 use admin db.createUser( { user: "adminUser", pwd: "adminPass", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } )
## 部署yapi
根據(jù)官方文檔,部署方法有兩種,鑒于我前幾天在電腦上用第一種方法安裝時(shí)失敗,于是就采用第二種復(fù)雜一點(diǎn)的方法
mkdir yapi cd yapi git clone https://github.com/YMFE/yapi.git vendors //或者下載 zip 包解壓到 vendors 目錄 cp vendors/config_example.json ./config.json //復(fù)制完成后請(qǐng)修改相關(guān)配置 cd vendors npm install --production --registry https://registry.npm.taobao.org npm run install-server //安裝程序會(huì)初始化數(shù)據(jù)庫(kù)索引和管理員賬號(hào),管理員賬號(hào)名可在 config.json 配置 node server/app.js //啟動(dòng)服務(wù)器后,請(qǐng)?jiān)L問(wèn) 127.0.0.1:{config.json配置的端口},初次運(yùn)行會(huì)有個(gè)編譯的過(guò)程,請(qǐng)耐心等候
此時(shí)只是暫時(shí)成功部署了,還要永久守護(hù)這個(gè)yapi進(jìn)程,這里用到pm2
-
安裝pm2
npm i pm2 -g
-
切換到y(tǒng)api的vendors目錄 執(zhí)行pm2 start
pm2 start server/app.js --watch
正常的話,應(yīng)該能正常訪問(wèn)到,默認(rèn)接口是3000
總結(jié)
至此,已經(jīng)把yapi的源代碼clone了一份到你自己的內(nèi)網(wǎng),當(dāng)然,期間還是會(huì)遇到不少的坑,我遇到的主要還是mongdb認(rèn)證的坑:比如認(rèn)證設(shè)置不成功、config文件配置不正確之類(lèi)的,甚至pm2啟動(dòng)yapi失敗,總之多嘗試多動(dòng)手,自己實(shí)在不能解決再去請(qǐng)教大牛。
① mongdb認(rèn)證獲取失敗
解決: 檢查mongdb配置是否正確、認(rèn)證設(shè)置是否成功,yapi的config文件是否配置正確
② pm2啟動(dòng)yapi失敗,一直重啟
解決:通過(guò)pm2 log查看是之前通過(guò)npm開(kāi)啟的服務(wù)沒(méi)有結(jié)束,導(dǎo)致端口占用,ctrl+c之前的服務(wù)就行
前兩個(gè)問(wèn)題貌似都不算是坑,無(wú)非就是攔路虎
③配置好的郵箱失敗
解決:那肯定是郵箱配置不對(duì)嘍,重來(lái)吧!然后就繼續(xù)采坑
不確定是不是網(wǎng)易郵箱有點(diǎn)問(wèn)題還是怎么的,換成qq的就行,修改完config.json文件,我以為重npm run install-server就萬(wàn)事大吉了,其實(shí) –>
應(yīng)該是mongdb中yapi已經(jīng)存在這個(gè)管理員的信息,如果admin下面沒(méi)有數(shù)據(jù)的話就直接刪掉這條,如果有點(diǎn)話就修改數(shù)據(jù)吧。我很懶,直接用mongdb compass把整個(gè)yapi都刪掉了,刪庫(kù)跑路!
不足之處歡迎拍磚指正!
yapi開(kāi)啟https訪問(wèn)
雖然對(duì)小白來(lái)說(shuō)https然并卵,我還是想搗鼓一下試著通過(guò)https來(lái)訪問(wèn)我的yapi,首先證書(shū)我是有了,獲取證書(shū)的方法也有千千萬(wàn)萬(wàn)種,我這里用的阿里云的免費(fèi)證書(shū),總之有證書(shū)的話應(yīng)該能拿到證書(shū)文件如.pem、.key、.pfx之類(lèi)文件。技術(shù)菜的我天真的以為還能開(kāi)啟3000端口的https訪問(wèn),結(jié)果啪啪啪打臉打的很清脆,于是乎把https的端口設(shè)定成了8443。大概步驟如下:
- 獲取證書(shū)文件(默認(rèn)有證書(shū)并且能拿到.key和.pem文件或者.pfx文件)
- 上傳證書(shū)(我直接放在app.js同級(jí),根據(jù)個(gè)人喜好)
-
修改app.js 是基于koa的 不過(guò)我沒(méi)有再引用koa-ssl,直接用的node的https方法的第一種
// 引入相關(guān)的服務(wù)和文件 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; //... //開(kāi)啟https端口 https.createServer(options, app.callback()).listen(port)
- 成功開(kāi)啟https
-
同樣還是踩了不少坑
- 文件徑不對(duì) not such file
解決:用__dirname - mac verify failure
解決: 用node https提供的第一種方法引入證書(shū)文件
- 文件徑不對(duì) not such file
推薦:《centos教程》