在滴滴雲上使用 Easy-Mock 進行前後端資料聯調
Why Easy Mock
前後端分離開發模式是目前常見的一種開發方式,雙方在約定開發介面時,常見的約定方式一般有 Wiki 或 Markdown 文件約定,而請求的模擬資料則常常直接寫在程式碼裡,到聯調時再更新介面請求 URL。或者利用 Charles、Fiddler 等代理工具攔截請求。
上述聯調方式各有優劣勢,有程式碼入侵和配置繁瑣等各種問題。
Easy Mock 是一個視覺化且能快速生成模擬資料的持久化服務。利用它我們可以:
- 快速生成模擬資料
- 有視覺化介面進行專案管理
- 支援介面代理、JSONP、團隊協同編輯
如何安裝 Easy Mock
1. 準備滴滴雲伺服器
首先我們需要有一臺雲伺服器來部署服務,可在滴滴雲上進行購買。具體的購買步驟可參考幫助文件。
下面我們看到的是已經購買好的雲伺服器。配置為 2核 4G, 系統為 CentOS7.6。
購買完畢後,遠端登入伺服器,進行服務安裝的安裝與部署。以 dc2-user 的身份登入後,可以通過 sudo su
來切換至管理員身份進行安裝。
2. 安裝 Node
我們將 Node 服務安裝在 /usr/local
目錄下。經過實驗,10.14.0 會有相容性問題,這裡我們安裝 8.9.0 版本。
## 下載node
cd /usr/local/src
wget https://nodejs.org/dist/v8.9.0/node-v8.9.0-linux-x64.tar.xz
## 解壓
tar xf node-v8.9.0-linux-x64.tar.xz
cd /usr/local
## 重新命名
mv src/node-v8.9.0-linux-x64 node
## 將node新增至path
vi ~/.bashrc
export NODE_HOME=/usr/local/node
export PATH=$NODE_HOME/bin:$PATH
source ~/.bashrc
## 安裝成功
node -v // 安裝成功會顯示Node版本
3. 安裝 MongoDB
cd /usr/local/src
curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz
tar -zxvf mongodb-linux-x86_64-3.0.6.tgz
cd /usr/local
mv src/mongodb-linux-x86_64-3.0.6 mongodb
## path
vi ~/.bashrc
export MONGO_HOME=/usr/local/mongodb
export PATH=$MONGO_HOME/bin:$PATH
source ~/.bashrc
下載完畢之後,建立配置檔案並啟動服務:
## 建立資料目錄
mkdir /data
mkdir /data/mongo
## 建立配置檔案
vi /data/mongo/mongodb.cnf
其中配置檔案的內容如下:
## /data/mongo/mongodb.cnf
dbpath=/data/mongo/
logpath=/data/mongo/mongo.log
logappend=true
fork=true
port=27017
journal=true
通過讀取配置檔案啟動 MongoDB 服務:
## 配置檔案方式啟動mongo
mongod -f /data/mongo/mongodb.cnf
mongod -f /data/mongo/mongodb.cnf & (放到後臺執行)
4. 安裝 Redis
cd /usr/local/src
wget http://download.redis.io/releases/redis-2.8.17.tar.gz
tar xzf redis-2.8.17.tar.gz
cd redis-2.8.17
make
Make 完後 redis-2.8.17 目錄下會出現編譯後的 Redis 服務程式 redis-server,還有用於測試的客戶端程式 redis-cli,兩個程式位於安裝目錄 src 目錄下。
下面啟動 Redis 服務:
cd src
./redis-server &
4. 部署服務
如果沒有 Libra 目錄就新建該目錄,我們將應用放在/usr/libra
目錄下:
cd /usr/libra
git clone https://github.com/easy-mock/easy-mock.git
## 安裝依賴
cd easy-mock && npm install
## 執行
[[email protected] easy-mock]# npm run dev
> [email protected] dev /usr/libra/easy-mock
> nodemon --ignore views/ --ignore public/ app
[nodemon] 1.14.11
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node app.js`
server started at http://0.0.0.0:7300
通過上面的部署,便可以訪問 IP:7300埠訪問 Easy Mock 的頁面了。
npm run dev
命令會進行熱更新,對於開發者體驗較好,如果有程式碼改動會重新 load,馬上生效。
如果需要部署穩定的生產版本,可根據 GitHub 文件部署生產版本。還可以通過 PM2 在後臺執行該 Node 服務。
## 安裝pm2
npm install -g pm2
## 使用pm2 執行全需要先build
npm run build
NODE_ENV=production pm2 start app.js
常見問題
Node 版本太高 (10.14.0 ),導致執行時候報錯,最好安裝 8.9.x 的 Node 版本。
Error: listen EADDRINUSE 0.0.0.0:7300
at Server.setupListenHandle [as _listen2] (net.js:1334:14)
at listenInCluster (net.js:1382:12)
at doListen (net.js:1508:7)
at process._tickCallback (internal/process/next_tick.js:63:19)
at Function.Module.runMain (internal/modules/cjs/loader.js:745:11)
at startup (internal/bootstrap/node.js:266:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:596:3)
Emitted 'error' event at:
at emitErrorNT (net.js:1361:8)
at process._tickCallback (internal/process/next_tick.js:63:19)
[... lines matching original stack trace ...]
at bootstrapNodeJSCore (internal/bootstrap/node.js:596:3)
[nodemon] app crashed - waiting for file changes before starting...