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

  • Post author:
  • Post category:其他


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

Go语言环境

下载Go环境的压缩包,这里可以自己在线下载

点击进入官网下载

,然后手动解压后复制到

/usr/local

路径下。这里需要超级权限打开文件夹才可以复制进去,ubuntu输入

sudo nautilus

,Linux-mint输入

sudo caja

即可打开。

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


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

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

说明配置成功,你还可以使用

roo

t用户验证一下。

输入:


sudo chmod -R 777 /home

mkdir /home/gopath

安装docker

这里本人是参照

官网

安装的,不过官网是英文,这里还是给出相关步骤吧。

  • 卸载旧版本的Docker,没安装的就跳过此步。


    sudo apt-get remove docker docker-engine docker.io

  • 开始安装

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


出现下面内容:

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了,但是还需要一些小操作。

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使用的智能合约。



版权声明:本文为sinat_36742186原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。