mock管理之本地部署:centos+nodejs+redis+easymock

1.EasyMock简介:

      手动的构造 Mock 对象会给开发人员带来额外的编码量,而且这些为创建 Mock 对象而编写的代码很有可能引入错误。目前,有许多开源项目对动态构建 Mock 对象提供了支持,这些项目能够根据现有的接口或类动态生成,这样不仅能避免额外的编码工作,同时也降低了引入错误的可能。
      EasyMock是一套用于通过简单的方法对于给定的接口生成 Mock 对象的类库。它提供对接口的模拟,能够通过录制、回放、检查三步来完成大体的测试过程,可以验证方法的调用种类、次数、顺序,可以令 Mock 对象返回指定的值或抛出指定异常。通过 EasyMock,我们可以方便的构造 Mock 对象从而使单元测试顺利进行。这次我们要在本地搭建easymock服务,方便使用。

2.安装配置

前提:centos 64位

2.1 nodejs安装

#下载安装包
wget https://nodejs.org/dist/v9.9.0/node-v9.9.0-linux-x64.tar.gz
#解压 
tar zxvf node-v9.9.0-linux-x64.tar.gz 
#移动到/usr/local/目录下并改名 
mv node-v9.9.0-linux-x64 /usr/local/node

配置环境变量:

#打开系统配置文件
vi /etc/profile
 
#最下方添加如下代码:
#set node
export NODE_HOME=/usr/local/node
export PATH=$PATH:$NODE_HOME/bin
 
#保存并退出
 
#使环境变量生效
source /etc/profile

校验是否成功:

node -v

坑一:报错-----bash: /usr/local/node/bin/node: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory

解决办法:执行如下命令

yum -y install glibc.i686

坑二:报错-----node: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

解决办法:执行如下命令

yum -y install libstdc++.so.6

再次运行:node -v,出现以下页面说明成功;

2.2 更新npm

npm install npm@latest -g

2.3 安装redis

#选择目录(如opt)
cd /opt
#下载redis压缩包
wget http://download.redis.io/releases/redis-4.0.10.tar.gz
#解压
tar zxvf redis-4.0.10.tar.gz
#重命名
mv redis-4.0.10 redis
#切换目录
cd redis
#编译
make
make install

配置初始化脚本启动redis:

# 1.配置初始化脚本
#复制utils下的redis_init_script初始化脚本文件到/etc/init.d目录下bin改名,文件名为redis_端口号
cp /opt/redis/utils/redis_init_script  /etc/init.d/redis_6379
 
#修改脚本第6行的REDISPORT变量的值为同样的端口号。
 
#2.新建文件夹
#存放Redis的配置文件
mkdir /etc/redis
#存放Redis的持久化文件
mkdir /var/redis
mkdir /var/redis/6379
 
#3.修改配置文件
cp /opt/redis/redis.conf /etc/redis/6379.conf
vi /etc/redis/6379.conf

修改配置文件如下:

redis开机启动:

vi /etc/init.d/redis_6379
 
#在打开的redis初始化脚本文件头部第四行的位置,追加下面两句:
# chkconfig: 2345 90 10 
# description: Redis is a persistent key-value database

追加后效果如下:

设置开机执行redis脚本:

chkconfig redis_6379 on

更改redis为所有用户均可访问:

#打开配置文件
vi /etc/redis/6379.conf
#找到bind 127.0.0.1这一行,修改为:bind 0.0.0.0
#保存后重启redis
service redis_6379 stop
service redis_6379 start

2.4 安装mongdb

mongdb安装包:链接:https://pan.baidu.com/s/1Xu8qfgcdn2b-VvPHifIIpQ 密码:51j5

上传并解压安装包,复制到对应目录中;

#先将安装包上传到服务器
#选择存储安装包目录
cd /opt
#解压
tar zxvf mongodb-linux-x86_64-rhel70-3.6.5.tgz
#移动安装包并改名
mv mongodb-linux-x86_64-rhel70-3.6.5 /usr/local/mongodb
#切换到目录下
cd /usr/local/mongodb

创建数据库目录和日志文件:

#/usr/local/mongodb/创建数据库目录和日志目录
mkdir data
#进入data目录
cd data
#创建两个文件夹
mkdir db
mkdir log
cd log
#建立日志文件
touch logs.log

创建开机自启动脚本文件:

vi /etc/init.d/mongodb

添加脚本内容:

#!/bin/bash
# chkconfig: - 85 15
name=mongod
path_bin=/usr/local/mongodb/bin/
path=/usr/local/mongodb/
case "$1" in
  start)
    ${path_bin}${name} --dbpath=${path}data/db --logpath=${path}data/log/logs.log --logappend --fork
    if [ $? -eq 0 ];then
      echo "${name}启动成功..."
    else
      echo "${name}启动失败..."
    fi
  ;;
  stop)
    if [ $(ps -ef|grep "mongod" |grep "fork"|awk {'print $2'}) -gt 0 ];then
      kill `ps -ef|grep "mongod" |grep "fork"|awk {'print $2'}`
      if [ $? -eq 0 ];then
        echo "${name}停止成功"
      else
        echo "${name}停止失败"
      fi
    else
      echo "${name}进程已经停止"
    fi
  ;;
  restart)
    if [ $(ps -ef|grep "mongod" |grep "fork"|awk {'print $2'}) -gt 0 ];then
      kill `ps -ef|grep "mongod" |grep "fork"|awk {'print $2'}`
      if [ $? -eq 0 ];then
        echo "${name}停止成功"
      else
        echo "${name}停止失败"
      fi
    else
      echo "${name}进程已经停止"
    fi
    echo "${name}启动中..."
    sleep 3s
    ${path_bin}${name} --dbpath=${path}data/db --logpath=${path}data/log/logs.log --logappend --fork
    if [ $? -eq 0 ];then
      echo "${name}重启成功"
    else
      echo "${name}重启失败"
    fi
   ;;
   *)
    echo "${name}start|stop|restart"
   ;;
esac

加入系统服务和开机启动:

cd /etc/init.d/
#设置执行权限
chmod a+x mongodb
#加入系统服务
chkconfig --add mongodb
#开机服务自启
chkconfig mongodb on
#重启系统生效
reboot now

坑一:启动mongodb时会报错libc.so.6: version `GLIBC_2.15' not found

#查看glibc库版本
strings /lib64/libc.so.6 |grep GLIBC_
#可以看到最高支持GLIBC_2.12,而程序需要GLIBC_2.15,所以需要升级
#选择存储目录
cd /opt
#下载gilbc2.15
wget http://ftp.gnu.org/gnu/glibc/glibc-2.15.tar.gz  
wget http://ftp.gnu.org/gnu/glibc/glibc-ports-2.15.tar.gz 
#解压
tar -xvf  glibc-2.15.tar.gz 
tar -xvf  glibc-ports-2.15.tar.gz
#将glibc-ports-2.15移动到glibc-2.15/ports目录下
mv glibc-ports-2.15 glibc-2.15/ports
#新建构建目录
mkdir glibc-build-2.15
#切换目录
cd glibc-build-2.15/ 
#编译
../glibc-2.15/configure  --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
make
make install
#查看软链
ll /lib64/libc.so.6
#再次查看支持的版本
strings /lib64/libc.so.6 |grep GLIBC_

再次启动:

service mongodb start

坑2:child process failed, exited with error number 100

#一般出现这个报错都是因为锁了
rm -rf /usr/local/mongodb/data/db/mongod.lock

坑3:child process failed, exited with error number 48

#进入到mongod的执行目录,以修复模式启动
cd /usr/local/mongodb/bin
./mongod --dbpath=/usr/local/mongodb/data/db/ --logpath=/usr/local/mongodb/data/log/logs.log --repair
#进入到日志目录,删除自动生成的日志文件
cd ../data/log/
rm -rf logs.log.*
#回到mongod的执行目录,再次启动
cd /usr/local/mongodb/bin
./mongod --dbpath=/usr/local/mongodb/data/db/ --logpath=/usr/local/mongodb/data/log/logs.log --fork

PS:手动启动和关闭mongodb的命令:

service mongodb start
service mongodb stop

2.5 安装EasyMock

#git下载安装包
git clone https://github.com/easy-mock/easy-mock.git
 
#切换目录
cd easy-mock/
 
#安装依赖
npm install ajv@^5.0.0 --unsafe-perm
 
#安装
npm install --unsafe-perm

新建配置文件:

vi config/local.json

文件内容如下:(其中APIPrefix改为自己对应的IP地址)

{
  "port": 7300,
  "host": "0.0.0.0",
  "pageSize": 30,
  "proxy": false,
  "db": "mongodb://localhost:27017/easymockdb",
  "unsplashClientId": "",
  "APIPrefix":"http://192.168.198.132:7300/api",
  "redis": {
    "keyPrefix": "[Easy Mock]",
    "port": 6379,
    "host": "localhost",
    "password": "",
    "db": 0
  },
  "blackList": {
    "projects": [],
    "ips": []
  },
  "rateLimit": {
    "max": 1000,
    "duration": 1000
  },
  "jwt": {
    "expire": "14 days",
    "secret": "easy-mock-jwt-secret"
  },
  "upload": {
    "types": [".jpg", ".jpeg", ".png", ".gif", ".json", ".yml", ".yaml"],
    "size": 5242880,
    "dir": "../public/upload",
    "expire": {
      "types": [".json", ".yml", ".yaml"],
      "day": -1
    }
  },
  "ldap": {
    "server": "",
    "bindDN": "",
    "password": "",
    "filter": {
      "base": "",
      "attributeName": ""
    }
  },
  "fe": {
    "copyright": "",
    "storageNamespace": "easy-mock_",
    "timeout": 25000,
    "publicPath": "/dist/"
  }
}

再次执行以下命令运行:

npm run build
nohup npm run start &

访问http://ip:7300,界面如下所示:

原文地址:https://www.cnblogs.com/cocc/p/12365854.html