zoukankan      html  css  js  c++  java
  • 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,界面如下所示:

  • 相关阅读:
    Java Stax操作XML简介
    使用JAXB来实现Java合xml之间的转换
    WebService学习笔记系列(四)
    JavaWeb学习笔记总结 目录篇
    成为谷歌的java程序员首先要做到这五点!
    Java实现快速排序
    二叉树遍历(Java实现)
    Java单链表反转
    学好java,做好工程师必读的15本书
    最全前端资源汇集
  • 原文地址:https://www.cnblogs.com/cocc/p/12365854.html
Copyright © 2011-2022 走看看