DCache搭建测试

工作需要,提前熟悉下部署过程,如有错误还望指点。

简介

背景

Dcache使用腾讯Tars框架开发,属于分布式的NoSQL存储系统。数据存储在内存中,还可以连接后端DB做数据的持久化。

支持平台

Linux

特点

  • 高性能存储引擎

    • 支持多种数据结构,如:

      • key-value
      • k-k-row
      • list
      • set
      • zset
    • 支持数据持久化到后端DB
  • 集群模式

    • 高可用
    • 高扩展
    • 异地镜像
    • 就近接入
  • 通过名字访问

    • 支持同步、异步、单向RPC调用
  • 高效运维平台(提供WebUI)

    • 服务部署
    • 扩缩容
    • 迁移
    • 服务配置
    • 质量监控

组成

  • tars框架
  • 业务服务
    • KVCache模块

      • 存储key-value
    • MKVcache模块
      • k-k-row
      • list
      • set
      • zset
  • 公共基础服务
    • OptServer
    • ConfigServer
    • PropertyServer
    • DCache管理平台

安装部署

tars框架

依赖环境

  1. 操作系统

    • linux内核:2.6.18 or later
  2. C++语言框架依赖

    • gcc:4.8.2 or later
    • glibc-devel
    • bison:2.5 or later
    • flex:2.5 or later
    • cmake:2.8.8 or later
    • rapidjson:1.0.2
  3. tars框架运行依赖

    • mysql:5.6.5 or later
  4. web管理系统依赖

    • nvm:0.33.11 or later
    • node:8.11.3 or later

依赖安装

$ yum -y install gcc gcc-c++ cmake yasm glibc-devel flex bison ncurses-devel zlib-devel autoconf python-requests
复制代码

mysql部署

  1. 下载mysql源码包(5.6.44版本), 官方要求数据库版本不低于5.6.5。
$ wget "https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.44.tar.gz"
复制代码
  1. 安装 - 编译安装
# 创建普通用户
$ useradd -m -d /home/mysql mysql# 解压源码包
$ tar zxf mysql-5.6.44.tar.gz# 创建mysql安装目录, 并做软连接
$ mkdir /usr/local/mysql-5.6.44
$ ln -s /usr/local/mysql-5.6.44 /usr/local/mysql# 修改属主属组
$ chown mysql:mysql /usr/local/mysql-5.6.44 /usr/local/mysql# 切换到源码目录,编译安装
$ cd mysql-5.6.44
$ cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.44 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_USER=mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
$ make && make install
复制代码
  1. mysql服务配置
# 删除原始数据目录, 在数据盘创建数据目录,进行软连
$ rm -rf /usr/local/mysql/data
$ mkdir -p /data/mysql-data
$ ln -s /data/mysql-data /usr/local/mysql/data# 修改属主属组
$ chown -R mysql:mysql /data/mysql-data /usr/local/mysql/data# 配置启动脚本
$ cd /usr/loca/mysql/
$ cp support-files/mysql.server /etc/init.d/mysql# 初始化数据库
$ rm -rf /etc/my.cnf
$ yum -y install perl
$ yum install -y perl-Module-Install.noarch
$ perl scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql --pid-file=/var/run/mysql/mysql.pid --socket=/tmp/mysql.sock # 修改配置文件
$ vim /usr/local/mysql/my.cnf
'''
[mysqld]# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
innodb_buffer_pool_size = 128M# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
log_bin# These are commonly set, remove the # and set as required.
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
# port = .....
# server_id = .....
socket = /tmp/mysql.sockbind-address={$your machine ip}# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
join_buffer_size = 128M
sort_buffer_size = 2M
read_rnd_buffer_size = 2Msql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
'''# 启动服务,设置开机自启
$ service mysql start
$ chkconfig mysql on
复制代码
  1. 设置环境变量
$ echo -e 'PATH=$PATH:/usr/local/mysql/bin\nexport PATH' > /etc/profile.d/mysql_env.sh
$ source /etc/profile
复制代码
  1. 修改root初始密码, 授权登录
$ mysqladmin -u root password 'root@appinside'
$ mysql -uroot -p
mysql> grant all on *.* to "root"@"%" identified by 'root@appinside' with grant option;
mysql> grant all on *.* to "root"@"localhost" identified by 'root@appinside' with grant option;
mysql> grant all on *.* to "root"@"10.80.137.193" identified by 'root@appinside' with grant option;
mysql> grant all on *.* to "root"@"platformxxxx.cdn.idc.com" identified by 'root@appinside' with grant option;
复制代码

tars 内部程序通过'root@{主机名}'登录数据库,需要授权。主机名可以通过/etc/hosts查看。

  1. 添加mysql库路径
$ vim /etc/ld.so.conf/usr/local/mysql/lib/
ldconfig
复制代码
  1. mysql主从配置

测试环境暂不需要,待正式部署后再做补充。#TODO

tars部署

  1. git clone Tars
# 使用递归方式clone
$ git clone  https://github.com/TarsCloud/Tars.git --recursive复制代码
  1. 使用一键部署脚本
$ cd Tars/deploy# 修改数据库信息
$ vim comm.propertyshost = 10.80.137.139
port = 3306
pwd = root@appinside# 授权tars用户权限
mysql> grant all on *.* to 'tars'@'%' identified by 'tars2015' with grant option;
mysql> grant all on *.* to 'tars'@'localhost' identified by 'tars2015' with grant option;
mysql> grant all on *.* to 'tars'@'platformxxxx.cdn.idc.com' identified by 'tars2015' with grant option;# 执行脚本
$ python deploy.py all
复制代码
  1. deploy.py脚本在执行过程中,会报错tars用户的'Access denied', 但是在部署脚本中有tars用户的授权操作。目前观察问题现象是授权未执行成功,且没有报错,具体原因未查明,先手动授权预防报错。
  2. 该执行脚本不具有幂等性,不能重复执行。若必须重新执行的情况,需要修改脚本,注释掉已完成的函数部分,还要根据情况对应修改脚本。
  3. 脚本执行完成后,会自启动web服务,若端口冲突,需要修改/usr/local/app/web/config/webConf.js文件,将port端口号修改。详细操作可以见下面的步骤。
  1. web启停、web切换dcache-alpha分支,以及端口冲突问题解决
## 切换DCache的web分支。
## 目前web管理界面,DCache服务暂时只提供体验版,需要在部署过程中手动切换分支(后期可以考虑修改部署脚本,直接指定tag来clone)。
# 备份文件 config/webConf.js, config/tars.conf
$ cp config/webConf.js ~
$ cp config/tars.conf ~
$ cp package-lock.json ~# 暂存当前master分支, 切换alpha分支。
$ rm -rf package-lock.json
$ git stash
$ git checkout -b dcache-alpha origin/dcache-alpha# 恢复文件
$ cp ~/webConf.js config/webConf.js
$ cp ~/tars.conf config/tars.conf# 端口冲突解决
$ vim config/webConf.jswebConf: {port: 33000,              //服务启动端口, 默认3000loggerPath: path.join(__dirname, '../log'),    //本地日志的目录logFileKeepDays: '1',         //日志保留时间defaultLanguage: 'cn',    //cn 或 en ,用户默认的语言环境},# 修改dcache配置
$ vim config/dcacheConf.jsmodule.exports = {enableDcache: true        //启动dcache界面,默认false
}# 从新安装npm依赖包
$ npm install --registry=https://registry.npm.taobao.org# web启停
# 启动web(prd为脚本名,详细查看package.json)
$ npm run prd# 停止所有web
$ pm2 kill# 使用别名启停单个web
$ pm2 stop tars-node-web
$ pm2 start tars-node-web# 命令行启动界面
┌───────────────┬────┬─────────┬──────┬───────┬────────┬─────────┬────────┬──────┬────────────┬──────┬──────────┐
│ App name      │ id │ version │ mode │ pid   │ status │ restart │ uptime │ cpu  │ mem        │ user │ watching │
├───────────────┼────┼─────────┼──────┼───────┼────────┼─────────┼────────┼──────┼────────────┼──────┼──────────┤
│ tars-node-web │ 0  │ 0.1.0   │ fork │ 29648 │ online │ 0       │ 27h    │ 0.5% │ 103.1 MB   │ root │ disabled │
└───────────────┴────┴─────────┴──────┴───────┴────────┴─────────┴────────┴──────┴────────────┴──────┴──────────┘# Web端访问地址
http://10.80.137.193:33000# tars核心或普通服务端口占用修改
1. 登录web端界面
2. 依次点击 -> 需要修改的服务 -> 服务管理 -> 管理Servants -> 编辑 -> 绑定地址框 -> 修改'-p'后参数 -> 确认
3. 重启 -> 服务管理 -> 重启按钮
复制代码
  1. Tars用户体系模块使用

登录和管理权限模块,测试环境未部署,待补充。#TODO [官方文档]

[坑] web 管理系统中有一处 BUG,将导致“接口测试”功能总是报错。
$ sed -i "s/setName ? setName : '')/setName ? setName : '', {})/g" web/app/service/infTest/TarsClient.js

  1. tars服务手动启停
# 启动基础服务
$ cd /usr/local/app/tars
$ tarsregistry/util/start.sh
$ tarsAdminRegistry/util/start.sh
$ tarsnode/util/start.sh
$ tarsconfig/util/start.sh
$ tarspatch/util/start.sh# 停止基础服务
$ cd /usr/local/app/tars
$ tarsregistry/util/stop.sh
$ tarsAdminRegistry/util/stop.sh
$ tarsnode/util/stop.sh
$ tarsconfig/util/stop.sh
$ tarspatch/util/stop.sh
复制代码
  1. tarsnode配置监控(crontab)
* * * * * /usr/local/app/tars/tarsnode/util/monitor.sh
复制代码
  1. 业务服务节点扩容

主要涉及tarsnode服务的手动安装,测试环境暂无需要,后续补充。#TODO

  1. 放张web端效果图

Tars框架部分,部署完成。

DCache部署

1. 准备工作

# 克隆DCache项目
$ git clone https://github.com/Tencent/DCache.git# 下载第三方依赖代码
$ cd src/thirdParty
$ chmod +x thirdparty.sh
$ ./thirdparty.sh# 编译
# [坑]自动部署脚本将tarscpp编译到framework目录下,与DCache项目指定的路径不一致
# 需要在Tars/cpp目录下从新编译。(说明DCache是按照tarscpp子项目路径规则来指定的,没毛病。)
$ cd Tars/cpp/
$ cmake . && make && make install# 编译DCache服务
$ cd src/
$ make release
$ make all# 分别进入以下目录,生成发布包
$ cat dir_list.txtsrc/OptServer/
src/ConfigServer/
src/PropertyServer/
src/Router/
src/Proxy/
src/KVCacheServer/
src/MKVCacheServer/$ cat dir_list.txt |while read line; do cd ${line}; make tar; cd -; done# 将所有tar包都下载到本地
# 几种方式(看个人喜好)
- sz
- wget (python -m SimpleHTTPServer 8080)
- scp
- git
复制代码

2. 公共服务部署

  • 2.1 安装OptServer
## 数据库环境初始化
# 授权账户
mysql> grant all on *.* to 'dcache'@'%' identified by 'dcache2019' with grant option;
mysql> grant all on *.* to 'dcache'@'localhost' identified by 'dcache2019' with grant option;
mysql> grant all on *.* to 'dcache'@'platformxxxx.cdn.idc.com' identified by 'dcache2019' with grant option;
mysql> flush privileges;# 创建数据库
$ vim src/OptServer/sql/exec-sql.shdb_install_ip="10.80.137.193"
root="root@appinside"
mysql -h $db_install_ip -uroot -p$root -e "drop database if exists db_dcache_relation; create database db_dcache_relation"mysql -h $db_install_ip -uroot -p$root --default-character-set=utf8 db_dcache_relation < db_dcache_relation.sql复制代码

以下为服务部署,图片及说明大部分来源于官方文档。

1 ) 在Tars管理平台主页点击“运维管理”,然后填写必要的信息,如下图:

以上信息除“节点”、“OBJ绑定地址”和“端口号”外,其他必须和上图保持一致;
“节点”填写欲安装OptServer服务的机器IP,“OBJ绑定地址”和“节点”一致,“端口号”可点击右下角“获取端口”按钮自动获取。 一路点击“确定”,等待服务部署完成,最后回到Tars管理平台主页,可看到OptServer已经成功部署,如下图:

2 ) 上传发布包

根据上图数字序号,依次点击,得到如下提示框:

点击“上传发布包”,在新的提示页面上传DCacheOptServer.tgz发布包,得到如下页面:

点击“发布版本”下的输入框,选择目标发布包,然后点击“发布”,如发布成功,会显示如下页面:

3 ) 添加配置文件

<Main># admin registry objAdminRegObj = tars.tarsAdminRegistry.AdminRegObj<DB><tars>charset = utf8dbname  = db_tarsdbhost  = 10.80.137.193dbport  = 3306dbuser  = rootdbpass  = root@appinside</tars><relation>charset = utf8dbname  = db_dcache_relationdbhost  = 10.80.137.193dbport  = 3306dbuser  = dcache dbpass  = dcache2019</relation></DB># 创建路由数据库的用户名和密码<CreateRouterDb>dbuser = router_dcachedbpass = router_dcache_2019</CreateRouterDb><Release># 发布服务线程数ThreadCount = 5</Release><Uninstall># 通知node下线服务超时时间(秒)Timeout = 20# 下线服务备份目录BakPath = /data/dcacheuninstall/# 下线服务线程数ThreadCount = 2</Uninstall>
</Main>
复制代码

根据上图,依次点击,得到下图:

其中文件名称填“DCacheOptServer.conf”, 文件内容按照上面格式填写

4 ) 重启OptServer

根据上图,依次点击,重启OptServer,重启成功后,“当前状态”从“Off”变成“Active”,如下图所示:

  • 2.2 ConfigServer部署

安装ConfigServer的步骤和安装OptServer的步骤类似,除了不需要创建数据库外

添加配置时,可以参考DCache服务配置说明。

以下为我的测试配置示例:

### config
#db_dcache_relation的数据库信息
<Main><DB>dbhost=10.80.137.193dbpass=dcache2019dbuser=dcachedbname=db_dcache_relationcharset=utf8dbport=3306</DB>
</Main>
复制代码
  • 2.3 安装PropertyServer

安装PropertyServer的步骤和安装OptServer的步骤类似,除了不需要创建数据库外。 添加配置时,可以参考DCache服务配置说明。

以下为我的测试配置示例:

<Main><DB>Sql=CREATE TABLE `${TABLE}` (`stattime` timestamp NOT NULL default  CURRENT_TIMESTAMP,`f_date` date NOT NULL default '1970-01-01',`f_tflag` varchar(8) NOT NULL default '',`app_name` varchar(20) default NULL,`module_name` varchar(50) default NULL,`group_name` varchar(100) default NULL,`idc_area` varchar(10) default NULL,`server_status` varchar(10) default NULL,`master_name` varchar(128) NOT NULL default '',`master_ip` varchar(16) default NULL,`set_name` varchar(15) NOT NULL default '',`set_area` varchar(15) NOT NULL default '',`set_id` varchar(15) NOT NULL default  '',`value1` varchar(255) default NULL,`value2` varchar(255) default NULL,`value3` varchar(255) default NULL,`value4` varchar(255) default NULL,`value5` varchar(255) default NULL,`value6` varchar(255) default NULL,`value7` varchar(255) default NULL,`value8` varchar(255) default NULL,`value9` varchar(255) default NULL,`value10` varchar(255) default NULL,`value11` varchar(255) default NULL,`value12` varchar(255) default NULL,`value13` varchar(255) default NULL,`value14` varchar(255) default NULL,`value15` varchar(255) default NULL,`value16` varchar(255) default NULL,`value17` varchar(255) default NULL,`value18` varchar(255) default NULL,`value19` varchar(255) default NULL,`value20` varchar(255) default NULL,`value21` varchar(255) default NULL,`value22` varchar(255) default NULL,`value23` varchar(255) default NULL,`value24` varchar(255) default NULL,`value25` varchar(255) default NULL,`value26` varchar(255) default NULL,`value27` varchar(255) default NULL,`value28` varchar(255) default NULL,`value29` varchar(255) default NULL,`value30` varchar(255) default NULL,`value31` varchar(255) default NULL,`value32` varchar(255) default NULL,`value33` varchar(255) default NULL,`value34` varchar(255) default NULL,`value35` varchar(255) default NULL,KEY(`f_date`,`f_tflag`,`master_name`,`master_ip`),KEY `IDX_MASTER_NAME` (`master_name`),KEY `IDX_MASTER_IP` (`master_ip`),KEY `IDX_TIME` (`stattime`),KEY `IDX_F_DATE` (`f_date`))ENGINE\=MyISAMTbNamePre=t_property_realtimeAppName=dcache_idc5min_147<property>dbhost=10.80.137.193dbname=taf_property_147dbuser=dcachedbpass=dcache2019dbport=3306charset=gbk</property><relation>charset=gbkdbname=db_dcache_relationdbhost=10.80.137.193dbpass=dcache2019dbport=3306dbuser=dcache</relation></DB><HashMap>InsertInterval=1</HashMap><NameMap>BakCenterError = property1BinLogErr = property2BinLogSyn = property3CacheError = property4Chunks/OnceElement = property5BackUpObjAdapter.connectRate = property6BackUpObjAdapter.queue = property7BinLogObjAdapter.connectRate = property8BinLogObjAdapter.queue = property9CacheObjAdapter.connectRate = property10CacheObjAdapter.queue = property11RouterClientObjAdapter.connectRate = property12RouterClientObjAdapter.queue = property13WCacheObjAdapter.connectRate = property14WCacheObjAdapter.queue = property15asyncqueue = property16memsize = property17DataMemUsedRatio = property18DbError = property19DbException = property20DirtyNum = property21DirtyRatio = property22ElementCount = property23Exception = property24HitCount = property25MemSize = property26getBatchCount = property27setBatchCount = property28MKMemUsedRatio = property29eraseCount = property30eraseCountUnexpire = property31asyncqueue0 = property32Jmem0DataUsedRatio = property33Jmem1DataUsedRatio = property34ColdDataRatio = property35expireCount = property36OnlyKeyCount = property37BigChunk = property38</NameMap>
</Main>
复制代码

3. DCache管理平台安装

# 修改web配置文件(前面已经做过了)
$ cat /usr/local/app/web/config/dcacheConf.js# 安装 tars-dcache 模块
$ cd /usr/local/app/web/
$ npm install tars-dcache --save# 新建 db_cache_web 数据库, 并执行 Tars web service 项目sql文件夹下的db_cache_web.sql脚本,创建DCache web所需要的表。
mysql> CREATE DATABASE db_cache_web;
mysql> use db_cache_web;
mysql> source sql/db_cache_web.sql;# 启动或者重启管理平台即可在管理平台看到 Dcache 管理平台的入口。
$ pm2 kill
$ npm run prd
复制代码

4. 创建DCache应用

DCache创建应用操作

  • 上传发布包
  • 上线模块
  • 模块配置

名词解释:

  • 模块:可以理解为mysql中table表的概念,需要创建对应模块来存储数据。两种Cache模块对应功能,上面已有说明不再赘述。
  • 应用:既多个模块的集合,该应用下的所有模块共享Proxy和Router服务,可以理解为mysql中db的概念。
  • 4.1 发布包上传

上传Proxy,Router,Cache对应的发布包是部署对应服务的前提。

1 ) Proxy发布包上传

依次点击,然后在弹出的提示框页面选择Proxy服务的发布包,上传。点击“默认”,将该发布包设置为Proxy服务的默认发布包,如下图:

2 ) Router发布包上传

Router发布包的上传和Proxy发布包的上传步骤相同。

3 ) Cache发布包上传

Cache发布包的上传和Proxy发布包上传步骤类似,只不过Cache有两种不同类型(KVCache和MKVCache)的发布包(本地也需分目录保存包文件),在“上传提示框”页面要注意类型匹配,如下图:

上传完两种不同类型的发布包并分别设置为默认,得到下图:

  • 4.2 部署和发布Proxy和Router服务

根据上图,依次点击“DCache”和“运维管理”,其中“应用”和“管理员”必填,可自定义,然后点击“创建应用”,得到下图:

在输入框填写相关信息,其余保持不变,点击“创建router、proxy服务”,得到下图:

确认填写无误后,点击“安装发布”,等待安装完成,结果如下图所示(先看个问题,稍后放图):

[坑] 在创建router、proxy服务环节,数据库的用户名和密码我采用之前创建的user: dcache, pwd: dcache2019 这一套。然后当点击安装发布时,出现以下报错:

从报错上来看,是服务访问数据库时被denied。这让我很疑惑,dcache账户明明已经做过授权。再仔细一看发现这里报错的账户是'router_dcache',并不是我输入的用户名。难道程序做了其他操作给用户名加上了router前缀?

带着疑惑,再在数据库创建router_dcache用户并授权,密码使用与dcache相同的密码再次执行,结果仍然报错。

通过排查mysql的general log,服务确实是通过router_dcache这个用户访问的,那问题可能就出在,这个用户使用的密码也与前面输入的不一致。

又尝试了几次其他用户的密码,结果与前面相同,最后无奈只能先设置数据库跳过grant验证,这才执行成功。
这块问题后面没有查明,有清楚的朋友可以帮忙指出(抱拳)。

安装完成图如下:

  • 4.3 上线一个KVCache模块

按照上图箭头依次点击,“应用”选择在部署和发布Proxy和Router服务创建的应用名称,“cache类型”选择KVCache,所填信息确认无误后,点击“下一步”进入“模块配置”步骤,如下图:

填写必要信息之后,点击“下一步”,进入“服务配置”步骤,如下图:

注意: 共享内存key必须是唯一的,不能在服务部署机器上已存在,否则会造成服务拉起失败,可使用ipcs命令确认。(该共享内存key为十进制数,可以自定义,不能重复)。备机部署后续补充。#TODO
必要信息填写完毕,点击“下一步”进入“安装发布”步骤,如下图:

再次确认信息填写无误,点击“安装发布”,等待服务发布完成。刷新管理平台主页,左侧目录树出现此模块信息,如下图:

  • 4.4 上线一个MKVCache模块

步骤和部署和发布KVCache类似,参考即可

  • 4.5 Cache配置管理

按照上图箭头依次点击,可添加配置项。

  • 4.6 模块和单节点的配置管理

按照上图箭头依次点击,可在该页面上修改和添加配置。该页面的配置管理分两种类型:针对模块所有节点的配置管理和针对模块特定节点的配置管理。

项目待完善的问题

初步接触之后,比较关心下面两个问题的后续发展。

  1. DbAccess对接后端DB文档,目前官方未能提供。
  2. 项目语言支持暂时只要C++。(可能在2019第四季度会支持一些其他语言版本)

转载于:https://juejin.im/post/5cde6ca3e51d45106e5e6da3

DCache搭建测试相关推荐

  1. qt工程在linux系统里颜色显示错误_【飞凌嵌入式RK3399开发板试用体验】+QT开发环境搭建测试(二)...

    作者:飞扬的青春 在拿到开发板之后,已经体验了Android操作系统,接下来就是体验Linux下的开发,本次以QT的一个小案例来测试下. 首先是自己先搭建了一个Ubuntu18.04的虚拟机,使用真机 ...

  2. 软件测试培训:如何搭建测试环境

    如何搭建测试环境?这是很多测试人员都需要了解的,测试是每个产品上线前必备的一个检验,不管是什么产品,做好有效的测试是对产品质量的一个负责,软件测试环境要考虑的就是软件在什么软硬件下能正常运行,什么环境 ...

  3. 搭建环境_maven: 搭建工程: ssm整合: 搭建测试:

    2019独角兽企业重金招聘Python工程师标准>>> 搭建环境_maven: 搭建工程: ssm整合: 搭建测试: 搭建环境问题解决: 转载于:https://my.oschina ...

  4. 【以太坊】搭建测试网络之ubuntu系统安装node.js

    一.前言 在确认了要在本地搭建测试网络之后,那就不管什么私有链方面的东西了.俗话说万事开头难,博主这边了解到,搭建测试网络必须的环境主要是:node,golang,还有以太坊的geth客户端.OK,方 ...

  5. web应用如何确定能同时允许多少用户连接?_Web测试环境搭建+测试要点汇总

    一.Web测试环境搭建 软硬件包括:电脑一台.JDK1.6.Tomcat7.0.mysql.IE浏览器.Firefox浏览器.Chrome浏览器.SVN客户端 通过SVN客户端导出最新的Web工程部署 ...

  6. linux下测试个人主页,一键建站集成软件包,Linux上快速搭建测试个人网站

    原标题:一键建站集成软件包,Linux上快速搭建测试个人网站 来自:Linux迷 https://www.linuxmi.com/ubuntu-20-0-linux-xampp.html 在Ubunt ...

  7. CentOS下搭建测试WEB平台

    CentOS下搭建测试WEB平台 LAMP MYSQL 下载免编译的软件包 cd /usr/local/src wget http://mirrors.sohu.com/mysql/MySQL-5.1 ...

  8. 搭建测试环境_当面试时被问到“搭建过测试环境吗”, 身为小白要怎么回答?...

    导语:很多人在面试软件测试的过程中,经常被问到"你会搭建测试环境吗"面对这样的提问,你知道怎么回答么?>>>> 怎 么 回 答 面试的时突然被问到,很多人的 ...

  9. 用Jenkins自动化搭建测试环境-前奏

    用Jenkins自动化搭建测试环境-前奏 1.安装 参考及启动:https://www.cnblogs.com/Eric15/articles/9828062.html 2.插件 新手一般按推荐安装即 ...

最新文章

  1. Spring Boot 实现万能文件在线预览
  2. mysql经纬度转距离_Mysql 拿指定经纬度与数据库多条经纬度进行距离计算 (转)
  3. U3D架构系列之- FSM有限状态机设计五
  4. Java基础知识回顾
  5. VC++ 定时器基本使用
  6. MySQL中的整数类型
  7. 静态call 动态call LINK
  8. 代码习惯---打印参数
  9. 南开调整研究生奖助,博士生最高超10万,硕士生6万,可能已经超过他们毕业后能拿的工资!...
  10. 高性能有限元计算服务器,结构有限元计算服务器配置
  11. 中查询一个文件夹下文件数量_如何在 Bash 中使用循环 | Linux 中国
  12. 成绩查看_2019一级建造师成绩已公布,赶紧来查看成绩吧
  13. Pecl和Pear的区别和联系?
  14. 标准的LSTM网络以及公式
  15. 阿里云线上案例分析:网格应用存活状态异常
  16. 第二十二篇 定义函数的三种形式以及函数的返回值
  17. osgb转3dtiles 原理_自动控制原理实验箱无法通行故障维修
  18. 冰封USB3.0导入工具
  19. 风变编程——自动化技术和教学的完美融合
  20. 同济大学Python程序设计基础 实验七:文件

热门文章

  1. nordic SDK15.0版本的空中升级实验
  2. b2b java 开源_全渠道java b2b b2c o2o平台
  3. 老人计算机,寿命计算器预测出老年人的死亡风险,准确率高达98%?这是真的吗...
  4. 何小鹏牵出机器马,现在造车哪还有「车的样子」
  5. zblog php1.51,zblogphp1.5.1 function文件夹文件详细说明
  6. 甜歌有哪些女歌手:杨钰莹、邓丽君、李玲玉、韩宝仪、高胜美
  7. 矢量设计软件大汇总,分享给大家
  8. 分布式消息队列如何保证消息有且仅被消费一次?
  9. 【1207】正三角形的外接圆面积
  10. 小米手机怎么弄音乐计算机键盘,IT教程:小米键盘设置在哪里