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 版本。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
## 下载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
1 2 3 4 5 6 7 8 9 10 11 12 |
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 |
下载完毕之后,创建配置文件并启动服务:
1 2 3 4 5 6 7 |
## 创建数据目录 mkdir /data mkdir /data/mongo ## 创建配置文件 vi /data/mongo/mongodb.cnf |
其中配置文件的内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
## /data/mongo/mongodb.cnf dbpath=/data/mongo/ logpath=/data/mongo/mongo.log logappend=true fork=true port=27017 journal=true |
通过读取配置文件启动 MongoDB 服务:
1 2 3 4 5 6 |
## 配置文件方式启动mongo mongod -f /data/mongo/mongodb.cnf mongod -f /data/mongo/mongodb.cnf & (放到后台执行) |
4. 安装 Redis
1 2 3 4 5 6 |
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 服务:
1 2 3 |
cd src ./redis-server & |
4. 部署服务
如果没有 Libra 目录就新建该目录,我们将应用放在/usr/libra
目录下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
cd /usr/libra git clone https://github.com/easy-mock/easy-mock.git ## 安装依赖 cd easy-mock && npm install ## 运行 [root@1.1.1.1 easy-mock]# npm run dev > easy-mock@1.6.0 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 服务。
1 2 3 4 5 6 |
## 安装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 版本。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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... |
本文作者:冯白杨