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

1.EasyMock簡介:

      手動的構造 Mock 對象會給開發人員帶來額外的編碼量,並且這些爲建立 Mock 對象而編寫的代碼頗有可能引入錯誤。目前,有許多開源項目對動態構建 Mock 對象提供了支持,這些項目可以根據現有的接口或類動態生成,這樣不只能避免額外的編碼工做,同時也下降了引入錯誤的可能。
      EasyMock是一套用於經過簡單的方法對於給定的接口生成 Mock 對象的類庫。它提供對接口的模擬,可以經過錄制、回放、檢查三步來完成大致的測試過程,能夠驗證方法的調用種類、次數、順序,能夠令 Mock 對象返回指定的值或拋出指定異常。經過 EasyMock,咱們能夠方便的構造 Mock 對象從而使單元測試順利進行。此次咱們要在本地搭建easymock服務,方便使用。node

2.安裝配置

前提:centos 64位python

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

配置環境變量:linux

#打開系統配置文件
vi /etc/profile
 
#最下方添加以下代碼:
#set node
export NODE_HOME=/usr/local/node
export PATH=$PATH:$NODE_HOME/bin
 
#保存並退出
 
#使環境變量生效
source /etc/profile

校驗是否成功:c++

node -v

坑一:報錯-----bash: /usr/local/node/bin/node: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directorygit

解決辦法:執行以下命令github

yum -y install glibc.i686

坑二:報錯-----node: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directoryredis

解決辦法:執行以下命令mongodb

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:npm

# 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,界面以下所示:

相關文章
相關標籤/搜索