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。
成功了,这里有一些小小的收获。
-
部署合约的时候看到
peer chaincode install -n mycc -v 1.0 -l golang -p github.com/chaincode/chaincode_example02/go/
,其实这个合约就是e2e_cli使用的智能合约。