ubuntu18.04搭建Hyperledger-fabric 1.1.0开发环境

Hyperledger-fabric 1.1.0更新已经两三个月了,ubuntu18.04也更新了快一个月了。今天在ubuntu18. 04上进行了Hyperledger-fabric 1.1.0的环境搭建,如今把过程记录下来。java

Go语言环境

下载Go环境的压缩包,这里能够本身在线下载点击进入官网下载,而后手动解压后复制到/usr/local路径下。这里须要超级权限打开文件夹才能够复制进去,ubuntu输入sudo nautilus,Linux-mint输入sudo caja便可打开。python

wget https://storage.googleapis.com/golang/go1.9.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.9.linux-amd64.tar.gz

编辑环境变量,以前我编辑的环境变量都只是当前用户的,以致于root权限下没有Go环境,此次我修改的是全局的配置文件,对全部用户都生效。依次输入下面指令。username为你的用户名
sudo setfacl -m u:username:rwx /home
mkdir /home/gopath
sudo gedit /etc/profile

将下面信息追加到文本的末端linux

export GOROOT=/usr/local/go
export GOARCH=amd64
export GOOS=linux
export GOPATH=/home/gopath
export GOBIN=$GOROOT/bin
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH

export GOPATH=/home/gopath这一句尤其重要,这是你本身建立的Go的工做路径,换句话说你的fabric源代码得安装到这个路径下。
修改完以后要注销登出,source /etc/profile这个命令只对当前终端Go环境有效,从新开启终端是识别不出Go环境的。
注销从新登录后,打开终端输入:go version
出现:go version go1.9 linux/amd64说明配置成功,你还可使用root用户验证一下。git

输入:
sudo chmod -R 777 /home
mkdir /home/gopath
github

安装docker

这里本人是参照官网安装的,不过官网是英文,这里仍是给出相关步骤吧。golang

  • 卸载旧版本的Docker,没安装的就跳过此步。
    sudo apt-get remove docker docker-engine docker.ioweb

  • 开始安装docker

sudo apt-get update
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
sudo apt-get update
sudo apt-get install docker-ce

完成上面操做以后输入:docker version
出现下面内容:json

Client:
 Version:      18.03.1-ce
 API version:  1.37
 Go version:   go1.9.5
 Git commit:   9ee9f40
 Built:        Wed Jun 20 21:43:51 2018
 OS/Arch:      linux/amd64
 Experimental: false
 Orchestrator: swarm

Got permission denied..............

此时已经安装号Docker了,可是还须要一些小操做。bootstrap

sudo usermod -aG docker XXX(XXX是当前用户名)

下面添加阿里云的Docker镜像:
输入:sudo mkdir -p /etc/docker
输入:sudo gedit /etc/docker/daemon.json
将如下内容写入文本:

{
 "registry-mirrors": ["https://obou6wyb.mirror.aliyuncs.com"] }

输入:sudo systemctl daemon-reload
输入:sudo systemctl restart docker
再次输入:docer version
若是还有权限不足提示,输入:sudo chmod -R 777 /var/run/docker.sock就能够了。
正确的返回应该是下面这样:

Client:
 Version:      18.03.1-ce
 API version:  1.37
 Go version:   go1.9.5
 Git commit:   9ee9f40
 Built:        Wed Jun 20 21:43:51 2018
 OS/Arch:      linux/amd64
 Experimental: false
 Orchestrator: swarm

Server:
 Engine:
  Version:      18.03.1-ce
  API version:  1.37 (minimum version 1.12)
  Go version:   go1.9.5
  Git commit:   9ee9f40
  Built:        Wed Jun 20 21:42:00 2018
  OS/Arch:      linux/amd64
  Experimental: false

安装docker-compose


sudo apt-get install python-pip
sudo pip install docker-compose

输入:docker-compose -version
出现:docker-compose version 1.17.1, build unknown便可。

Fabric源码下载

这里使用的是1.1.0版本。

mkdir -p /home/gopath/src/github.com/hyperledger
cd /home/gopath/src/github.com/hyperledger
git clone https://github.com/hyperledger/fabric.git
cd /home/gopath/src/github.com/hyperledger/fabric
git checkout v1.1.0

这里的路径尤其重要,还记得export GOPATH=/home/gopath,建立路径的时候千万要一致。
若是这里下载有问题,能够前往github上字形下载源码包。放到对应的目录就能够了。
须要注意的是,普通用户对home目录是没有写权限的,为了方便你须要修改一下权限:sudo chmod -R 777 /home
这里千万要注意,不少朋友没有成功编译出cryptgen文件就是路径的问题!!!!

下载docker镜像

cd /home/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli/
source download-dockerimages.sh
git clone https://github.com/hyperledger/fabric-samples/tree/release-1.0
cd /home/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli/fabric-samples/scripts
source bootstrap.sh

这里须要耐心的等待!
想必你们也注意到了,samples都集成过来了。
输入:docker images
出现以下:

REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
hyperledger/fabric-ca          1.2.0-rc1           708a0286b4ac        3 days ago          248MB
hyperledger/fabric-ca          latest              708a0286b4ac        3 days ago          248MB
hyperledger/fabric-tools       1.2.0-rc1           cc581750db33        4 days ago          1.51GB
hyperledger/fabric-tools       latest              cc581750db33        4 days ago          1.51GB
hyperledger/fabric-ccenv       1.2.0-rc1           e1046545b08e        4 days ago          1.42GB
hyperledger/fabric-ccenv       latest              e1046545b08e        4 days ago          1.42GB
hyperledger/fabric-orderer     1.2.0-rc1           d1b2eedd73b3        4 days ago          147MB
hyperledger/fabric-orderer     latest              d1b2eedd73b3        4 days ago          147MB
hyperledger/fabric-peer        1.2.0-rc1           1be334200880        4 days ago          154MB
hyperledger/fabric-peer        latest              1be334200880        4 days ago          154MB
hyperledger/fabric-zookeeper   0.4.8               1ffd64c98bad        8 weeks ago         1.43GB
hyperledger/fabric-zookeeper   latest              1ffd64c98bad        8 weeks ago         1.43GB
hyperledger/fabric-kafka       0.4.8               12d61042b176        8 weeks ago         1.44GB
hyperledger/fabric-kafka       latest              12d61042b176        8 weeks ago         1.44GB
hyperledger/fabric-couchdb     0.4.8               12eb8cf6aba1        8 weeks ago         1.6GB
hyperledger/fabric-couchdb     latest              12eb8cf6aba1        8 weeks ago         1.6GB
hyperledger/fabric-baseos      amd64-0.4.8         83b7b016c8e5        8 weeks ago         128MB
hyperledger/fabric-tools       x86_64-1.0.0-beta   ae6b0f53cb70        12 months ago       1.32GB
hyperledger/fabric-couchdb     x86_64-1.0.0-beta   31bbbec3d853        12 months ago       1.48GB
hyperledger/fabric-kafka       x86_64-1.0.0-beta   c4ac1c9a4797        12 months ago       1.3GB
hyperledger/fabric-zookeeper   x86_64-1.0.0-beta   2c4ebacb6f00        12 months ago       1.31GB
hyperledger/fabric-orderer     x86_64-1.0.0-beta   11ff350dd297        12 months ago       179MB
hyperledger/fabric-peer        x86_64-1.0.0-beta   e01c2b645f11        12 months ago       182MB
hyperledger/fabric-javaenv     latest              61c188dca542        12 months ago       1.42GB
hyperledger/fabric-javaenv     x86_64-1.0.0-beta   61c188dca542        12 months ago       1.42GB
hyperledger/fabric-ccenv       x86_64-1.0.0-beta   7034cca1918d        12 months ago       1.29GB
hyperledger/fabric-ca          x86_64-1.0.0-beta   e549e8c53c2e        12 months ago       238MB

实例演示

这想必是最精彩的环节了!开始吧。
cd /home/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli/fabric-samples/first-network
./byfn.sh -m generate

若是这里提示你/opt/gopath/src/github.com/hyperledger/fabric...........没有这个文件或目录,那就输入sudo ln -s /home/gopath /opt/gopath建立一个软链接就能够了。

而后会问你:输入y便可,以下:
Generating certs and genesis block for channel 'mychannel' with CLI timeout of '10' seconds and CLI delay of '3' seconds
Continue? [Y/n] y

稍等一会,你会看到:

################################################################# ####### Generating anchor peer update for Org2MSP ##########
################################################################# + configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID mychannel -asOrg Org2MSP 2018-06-26 07:58:30.055 CST [common/tools/configtxgen] main -> INFO 001 Loading configuration 2018-06-26 07:58:30.065 CST [common/tools/configtxgen] doOutputAnchorPeersUpdate -> INFO 002 Generating anchor peer update 2018-06-26 07:58:30.066 CST [common/tools/configtxgen] doOutputAnchorPeersUpdate -> INFO 003 Writing anchor peer update + res=0 + set +x

等上面这段完成以后,接着输入:./byfn.sh -m up.
一样会问你,输入y便可。而后出现下面:

===================== Query successful on peer1.org2 on channel 'mychannel' ===================== 
========= All GOOD, BYFN execution completed =========== 

 _____   _   _   ____   
| ____| | \ | | |  _ \  
|  _|   |  \| | | | | | 
| |___  | |\  | | |_| | 
|_____| |_| \_| |____/

完美,接着输入:docker exec -it cli bash运行cli容器。
输入:peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
显示以下:
90
就说明a的余额为90。
成功了,这里有一些小小的收获。

  1. 部署合约的时候看到peer chaincode install -n mycc -v 1.0 -l golang -p github.com/chaincode/chaincode_example02/go/,其实这个合约就是e2e_cli使用的智能合约。