Fabric-1.0完整环境搭建
服务器端 :
1. **GO语言的安装**
2. **DOCKER的安装**
3. **Tensorflow的安装**
3. **Fabric源码的CLONE**
4. **进行相关配置**
GO语言的安装
- 下载
wget https://storage.googleapis.com/golang/go1.9.linux-amd64.tar.gz
- 解压
sudo tar -C /usr/local -xzf go1.9.linux-amd64.tar.gz
- 编辑环境变量
vim /etc/profile
- GOPATH
export GOPATH=/opt/gopath
- PATH
export PATH=$PATH:/usr/local/go/bin
- 复制完之后 按下ESC + : + wq + 回车
- GOPATH
- 编辑保存
source /etc/profile
- 使其修改生效。随后可通过下述命令:
echo $PATH
- 回到目录
cd ~
Ubuntu安装Docker CE
系统要求:64位 、Ubuntu16.0.4
卸载旧版本
旧版本的Docker称为docker或者docker-engine,使用以下命令卸载旧版本:
$ sudo apt-get remove docker \
docker-engine \
docker.io
在测试或开发环境中Docker官方为了简化安装流程,提供了一套便捷的安装脚本,Ubuntu系统上可以使用这套脚本安装:
$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh --mirror Aliyun
启动dockerCE
$ sudo systemctl enable docker
$ sudo systemctl start docker
Docker-Compose的安装
Docker-compose是支持通过模板脚本批量创建Docker容器的一个组件。在安装Docker-Compose之前,需要安装Python-pip,运行脚本:
sudo apt-get install python-pip
然后是安装docker-compose,我们从官方网站(https://github.com/docker/compose/releases)下载也可以从国内的进行DaoClound下载,为了速度快接下来从DaoClound安装Docker-compose,运行脚本:
curl -L https://get.daocloud.io/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` > ~/docker-compose
sudo mv ~/docker-compose /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
Tensorflow的安装
关于TensorFlow
TensorFlow 随着AlphaGo的胜利也火了起来。
google又一次成为大家膜拜的大神了。google大神在引导这机器学习的方向。 同时docker
也是一个非常好的工具,大大的方便了开发环境的构建,之前需要配置安装。 看各种文档,现在只要一个 pull 一个 run
就可以把环境弄好了。 同时如果有写地方需要个性化定制,直接在docker的镜像上面再加一层补丁就好了。
自己的需求就能满足了,同时还可以将这个通用的方法分享出去。
下载TensorFlow images
使用hub.docker.com的镜像
docker pull tensorflow/tensorflow:latest
启动镜像
启动命令,设置端口,同时配置volume 数据卷,用于永久保存数据。加上 –rm 在停止的时候删除镜像。
sudo mkdir -p /data/tensorflow/notebooks
docker run -it --rm --name myts -v /data/tensorflow/notebooks:/notebooks -p 8888:8888 daocloud.io/daocloud/tensorflow:latest
然后打开浏览器测试吧~~
import tensorflow as tf
a = tf.constant(10)
b = tf.constant(32)
with tf.Session():
c = tf.add(a,b)
print(c)
print(c.eval())
下载Fabric源代码
我们可以使用Git命令下载源码,首先需要建立对应的目录,然后进入该目录,Git下载源码:
mkdir -p $GOPATH/github.com/hyperledger
cd $GOPATH/src/github.com/hyperledger
git clone https://github.com/hyperledger/fabric.git
我们可以使用Git命令下载源码,也可以使用go get命令,偷懒一点,我们直接用go get命令获取最新的Fabric源码
go get github.com/hyperledger/fabric
检查是否为1.0版本、实验阶段、仅需要1.0
cd /opt/gopath/src/github.com/hyperledger/fabric/
git checkout -b v1.0.0
Fabric Docker镜像的下载
直接拉取即可,因为配置了快速的国内阿里云镜像
cd $GOPATH/github.com/hyperledger/fabric/examples/e2e_cli/
source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0
然后检查docker images
sudo docker images
root@***
> 如果出现、代表成功:
***/home/lantian/go/src/github.com/hyperledger/fabric/examples/e2e_cli# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
daocloud.io/daocloud/tensorflow latest 414b6e39764a 5 weeks ago 1.27GB
hello-world latest f2a91732366c 4 months ago 1.85kB
hyperledger/fabric-tools latest 0403fd1c72c7 9 months ago 1.32GB
hyperledger/fabric-tools x86_64-1.0.0 0403fd1c72c7 9 months ago 1.32GB
hyperledger/fabric-couchdb latest 2fbdbf3ab945 9 months ago 1.48GB
hyperledger/fabric-couchdb x86_64-1.0.0 2fbdbf3ab945 9 months ago 1.48GB
hyperledger/fabric-kafka latest dbd3f94de4b5 9 months ago 1.3GB
hyperledger/fabric-kafka x86_64-1.0.0 dbd3f94de4b5 9 months ago 1.3GB
hyperledger/fabric-zookeeper latest e545dbf1c6af 9 months ago 1.31GB
hyperledger/fabric-zookeeper x86_64-1.0.0 e545dbf1c6af 9 months ago 1.31GB
hyperledger/fabric-orderer latest e317ca5638ba 9 months ago 179MB
hyperledger/fabric-orderer x86_64-1.0.0 e317ca5638ba 9 months ago 179MB
hyperledger/fabric-peer latest 6830dcd7b9b5 9 months ago 182MB
hyperledger/fabric-peer x86_64-1.0.0 6830dcd7b9b5 9 months ago 182MB
hyperledger/fabric-javaenv latest 8948126f0935 9 months ago 1.42GB
hyperledger/fabric-javaenv x86_64-1.0.0 8948126f0935 9 months ago 1.42GB
hyperledger/fabric-ccenv latest 7182c260a5ca 9 months ago 1.29GB
hyperledger/fabric-ccenv x86_64-1.0.0 7182c260a5ca 9 months ago 1.29GB
hyperledger/fabric-ca latest a15c59ecda5b 9 months ago 238MB
hyperledger/fabric-ca x86_64-1.0.0 a15c59ecda5b 9 months ago 238MB
阿里云的一点小坑
说到这里应该已经到达创世区块的环节了,
但是、、、在阿里云上,会出现一些小坑(O__O "…基本折腾了三天)
peer,orderer一些yaml加载中出现问题。
(⊙v⊙)嗯!!!!!!
不过是可以解决的~~
只需要修改几个yaml就可以运行了~
先回退到当前demo目录作为切入点
我这里从理解记忆角度出发,首先观察启动.sh中加载的yaml文件,这些就是需要我们修改的(因为默认加载会失败)
cd $GOPATH/github.com/hyperledger/fabric/examples/e2e_cli
ls(会看到network_setup.sh)
vi network_setup.sh(那咱就进去看看咋回事)
{
.......然后就发现啦~哦~原来是加载这两个yaml出错了
COMPOSE_FILE=docker-compose-cli.yaml
COMPOSE_FILE_COUCH=docker-compose-couch.yaml
.......
}
cd base(那么这个是基本,里面同样有个yaml需要被加载)
ls (猜猜看是什么呀~~O(∩_∩)O~)
vi docker-compose-base.yaml(没错!就是你了)
{
这次要做一点骚操作。。。
看到环境变量了没有,environment,那么就在这个环境变量的尾部~照猫画虎的加上这一行代码
....
- GODEBUG=netdns=go
....
}
cd $GOPATH/github.com/hyperledger/fabric/examples/e2e_cli/(回来这里)
{
同样骚操作。。。
vi compose-cli.yaml
vi docker-compose-couch.yaml
}
好啦、阿里云的坑、到这里就已经暂时填满~\(≧▽≦)/~啦啦啦
启动Fabric网络并完成ChainCode的测试
要记得、在启动前、要留心是否已经启动。 如果启动了、就需要先关闭才能启动。
cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/
./network_setup.sh down(已经启动的话、或者不知道有没有启动)
./network_setup.sh up
这个做了以下操作:
7.1编译生成Fabric公私钥、证书的程序,程序在目录:fabric/release/linux-amd64/bin
7.2基于configtx.yaml生成创世区块和通道相关信息,并保存在channel-artifacts文件夹。
7.3基于crypto-config.yaml生成公私钥和证书信息,并保存在crypto-config文件夹中。
7.4基于docker-compose-cli.yaml启动1Orderer+4Peer+1CLI的Fabric容器。
7.5在CLI启动的时候,会运行scripts/script.sh文件,这个脚本文件包含了创建Channel,加入Channel,安装Example02,运行Example02等功能。
手动交易
官方例子中,channel名字是mychannel,链码的名字是mycc。我们首先进入CLI,我们重新打开一个命令行窗口,输入:
docker exec -it cli bash
运行以下命令可以查询a账户的余额:
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
留心观察,result是不是查询出来 a 是90块钱。
然后,我们试一试把a账户的余额再转20元给b账户,运行命令:
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","20"]}'
然后,如果出现一大堆英文,又没有Exception和error的,那么恭喜你!成功转账。
(o)/~
那么猜想,b应该多了20块钱,a则少了20块钱,再试试看!!!
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","b"]}'
相信聪明的傻温已经明白a和b、有多少钱啦!!!
最后记得,离开的时候。记得把fabric网络关闭哦
exit
cd ~$GOPATH/github.com/hyperledger/fabric/examples/e2e_cli/
./network_setup.sh down
祝票票学习愉快。(๑•̀ㅂ•́)و✧加油 (๑•̀ㅂ•́)و✧加油 (๑•̀ㅂ•́)و✧加油
(๑•̀ㅂ•́)و✧加油
hhh到这里是不是就玩得很开心成功了、如果搭建的时候、出现任何问题、都可以在评论榜上提问哦。
学习了四篇文章
http://www.cnblogs.com/studyzy/p/7437157.html
https://yeasy.gitbooks.io/docker_practice/content/install/ubuntu.html
https://blog.csdn.net/freewebsys/article/details/70237003
https://yq.aliyun.com/articles/238940