前言:最近项目涉及到超级帐本,在有些理论知识的基础上,须要整一套环境来。html
这是一个特别要注意的事情,笔者以前按照网络上推荐,大部分都是推荐ubuntu系统的,因而下载Ubuntu系统(16.04.5和18.04都试试),遇到各类问题,一直不能成功,大概花了好多天,一直不成功,后来都要放弃了,可是心有不甘,又下载centos7,只花了一天,就成功了,因此在这里使用centos7系统。在这个仍是要感谢各位大神的博客,感激之情溢于言表。html5
上个截图来表达喜悦的心情python
这是一张成功的截图。linux
套话很少说,直接操做步骤。git
版本:5.2.20-125813(下载时最高版本)。github
下载地址:https://www.virtualbox.org/golang
(这么快就更新了一版本嘛,无比尴尬)docker
具体安装步骤,百度一下。ubuntu
版本号:CentOS-7-x86_64-DVD-1804.iso 和 CentOS-7-x86_64-Everything-1804.iso(笔者都有下载,使用的是CentOS-7-x86_64-Everything-1804)centos
下载地址:http://isoredirect.centos.org/centos/7/isos/x86_64/(当前链接显示全部版本及各类镜像链接)。
http://mirrors.aliyun.com/centos/7.5.1804/isos/x86_64/(笔者选择的是阿里的镜像,若是还有迅雷的话,下载十分迅速)。
安装:https://www.cnblogs.com/hihtml5/p/8217062.html(笔者根据大神提供的经验,尤为后面网络设置的,帮了大忙)。
网络:笔者使用的是有限网络。
要保证主机能够ping通虚拟机,同时虚拟机能够ping通‘www.baidu.com’(笔者一直实现不了虚拟机平通主机,可是不影响后续步骤)。
说明:笔者不太喜欢'右ctrl'键来切换鼠标在虚拟机和主机的位置,就用secureCRT链接虚拟机。其余人能够根据本身的喜欢,自行选择及忽略,是否是很人性化。
根据第二步骤的操做,主机能够ping通虚拟机,便可链接成功,若是还不行,可修改/etc/sysconfig/network-scripts/ifcfg-enp0s3。
登陆虚拟机,笔者全部须要操做都在root用户,/root/目录下。以前使用Ubuntu时,就遇到这种状况,也是差些就成功了(可惜万分)。
下载指令:
[root@localhost ~] # wget https://storage.googleapis.com/golang/go1.9.linux-amd64.tar.gz
若是没有安装wget,须要先安装wget。命令:
[root@localhost ~] # yum install wget
等待下载完成..
[root@localhost ~] # sudo tar -C /usr/local -xzf go1.9.linux-amd64.tar.gz
[root@localhost ~] # vi /etc/profile
在文件最底部,添加以下内容:
export PATH=$PATH:/usr/local/go/bin export GOROOT=/usr/local/go export GOPATH=$HOME/go export PATH=$PATH:$HOME/go/bin
退出文件,保存生效。
[root@localhost ~] # source /etc/profile
笔者建议使用以下指令,更详细。
[root@localhost ~] # go env
效果以下图,则安装成功。
因为操做过多,请按照步骤来。
[root@localhost ~] # uname -r
[root@localhost ~] # sudo yum update
[root@localhost ~] # sudo yum remove docker docker-common docker-selinux docker-engine
[root@localhost ~] # sudo yum install -y yum-utils device-mapper-persistent-data lvm2
[root@localhost ~] # sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@localhost ~] # yum list docker-ce --showduplicates | sort -r
输出以下图:
笔者在运行fabric网络时,就遇到一个问题(具体问题,忘记记录),百度了一下说是docker和docker-compose版本问题,因此笔者在这里推荐docker版本是:17.12.0-ce。
[root@localhost ~] # sudo yum install 版本号 ## sudo yum install docker-ce-17.12.0.ce
[root@localhost ~] # docker version
以下显示:
[root@localhost ~] # sudo systemctl start docker [root@localhost ~] # sudo systemctl enable docker
[root@localhost ~] # yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@localhost ~] # yum -y install epel-release
这个版本应该是8.*的,安装docker-compose须要升级到18.*
[root@localhost ~] # sudo yum -y install python-pip
[root@localhost ~] # pip install --upgrade pip
以下图显示:
[root@localhost ~] # sudo pip install docker-compose==版本号 ##sudo pip install docker-compose==1.12.0
[root@localhost ~] # docker-compose version
到此docker和docker-compose已经安装完成,那么来试试一个hello-world吧。指令以下:
[root@localhost ~] # docker run hello-world
截图以下:
若是是第一次运行,会有下载hello-world 的过程,请耐心等待。(笔者已经运行过好屡次,截图如上)。
docker 经常使用指令:
docker stats # 容器,状态 docker rm -f $(docker ps -aq) #清除容器内全部示例 ... 等等(到目前就用到这两个指令,捂脸..)
[root@localhost hyperledger] # git clone https://github.com/hyperledger/fabric.git
若是git不可用,下载git。指令以下:
[root@localhost hyperledger] # sudo yum install git
[root@localhost ~] # cd ~/go/src/github.com/hyperledger/fabric
[root@localhost fabric] # git checkout v1.0.0
[root@localhost ~] # cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/
[root@localhost e2e_cli] # source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0
[root@localhost e2e_cli] # docker images
以下图显示:
[root@localhost e2e_cli] # ./network_setup.sh up
该脚本启动的服务解释以下(摘自网络):
编译生成Fabric公私钥、证书的程序,程序在目录:fabric/release/linux-amd64/bin
基于configtx.yaml生成创世区块和通道相关信息,并保存在channel-artifacts文件夹。
基于crypto-config.yaml生成公私钥和证书信息,并保存在crypto-config文件夹中。
基于docker-compose-cli.yaml启动1Orderer+4Peer+1CLI的Fabric容器。
稍等一会,出现文章开头的截图。再次截取,若是以下图显示,那就恭喜,你的网络也通了。
[root@localhost ~] # docker stats
容器显示截图以下:
新开session窗口。指令以下(以下指令能够先不执行,后续步骤会用到):
[root@localhost ~] # cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/
[root@localhost e2e_cli] # ./network_setup.sh down
[root@localhost ~] # docker exec -it cli bash
进入目录下,以下图所示:
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
截图以下显示:
peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n mycc -c '{"Args":["invoke","a","b","50"]}'
查询余额,截图以下:
a帐号余额:
到此,全部的步骤都结束了,能够执行 “8.7关闭网络”。