1、安装fabric需要的工具
- git
 - curl
 - vim (可选,vm)
 - Golang(GOROOT,GOPATH)1.10.1
 - Docker 一个容器
 - docker_compose 实现对Docker的自动化操作,简化了Docker容器的操作命令,一条命令即可启动docker容器,相关的操作命令是被集成在一个配置文件中
 - Node,npm(可选)
 
安装git
$ sudo apt update
$ sudo apt install git
安装curl
$ sudo apt install curl
安装vim
$ sudo apt install vim
安装Golang
Fabric1.1.0版本要求Go1.9+
Fabric1.0.0版本要求Go1.7+
下载 go1.10.1.linux-amd64.tar.gz 需要翻墙 没有翻墙可以从百度网盘下载
将压缩包放到Home目录下,解压文件
$ tar -zxvf go1.10.1.linux-amd64.tar.gz
编辑环境变量文件
$ vim .bashrc 
添加如下内容:
export GOPATH=$HOME/gocode
export GOROOT=$HOME/go
export PATH=$GOROOT/bin:$PATH
使刚才的配置生效
$ source .bashrc
执行:
$ go version
输出: go version go1.10.1 linux/amd64,配置成功
如果系统中有旧版本的golang,则使用如下命令卸载旧版本的golang,然后再重新安装
$ su - # apt-get remove golang-go --purge && apt-get autoremove --purge && apt-get clean
安装Docker
$ sudo apt update
$ sudo apt install docker.io
查看Docker版本信息
version 1.12+
$ docker --version
输出: Docker version 1.13.1, build 092cba3
安装Docker Compose
$ sudo apt install docker-compose
查看DockerCompose版本信息
$ docker-compose --version
输出: docker-compose version 1.8.0, build unknown
Hyperledger Fabric Samples 下载安装
1、在当前用户目录中创建一个新的目录 –方便管理fabric
$ mkdir hyfa
2、进入该目录
$ cd hyfa
3、下载方式一:
新建文件bootstrap.sh
$ vim bootstrap.sh
将https://github.com/hyperledger/fabric/blob/master/scripts/bootstrap.sh中的<font color=red>内容</font>拷贝保存退出
赋予bootstrap.sh可执行权限并运行
$ chmod +x bootstrap.sh
配置docker加速器
配置docker加速器的目的是为了在下载docker镜像文件时加速
$ curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://8890cb8b.m.daocloud.io
重启docker服务
$ sudo systemctl restart docker.service
执行bootstrap.sh
确定网络稳定,否则会导致各种问题,例如下载到一半时网络超时,下载失败等等
$ sudo ./bootstrap.sh 1.1.0
<font color=red>这里需要下载一些工具包,会很耗时,如果失败重复执行$ sudo ./bootstrap.sh 1.1.0</font>
下载完成后, 查看相关输出内容, 如果下载有失败的镜像, 可再次执行  $ sudo ./bootstrap.sh 1.1.0  命令
下载方式二:
建议使用方式一进行下载
配置docker加速器,
$ curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://8890cb8b.m.daocloud.io
重启docker服务
$ sudo systemctl restart docker.service
$ curl  https://github.com/hyperledger/fabric/blob/master/scripts/bootstrap.sh | bash -s 1.1.0
安装完成后输出:
hyperledger/fabric-ca          latest          72617b4fa9b4   5 weeks ago    299 MB
hyperledger/fabric-ca          x86_64-1.1.0    72617b4fa9b4   5 weeks ago    299 MB
hyperledger/fabric-tools       latest          b7bfddf508bc   5 weeks ago    1.46 GB
hyperledger/fabric-tools       x86_64-1.1.0    b7bfddf508bc   5 weeks ago    1.46 GB
hyperledger/fabric-orderer     latest          ce0c810df36a   5 weeks ago    180 MB
hyperledger/fabric-orderer     x86_64-1.1.0    ce0c810df36a   5 weeks ago    180 MB
hyperledger/fabric-peer        latest          b023f9be0771   5 weeks ago    187 MB
hyperledger/fabric-peer        x86_64-1.1.0    b023f9be0771   5 weeks ago    187 MB
hyperledger/fabric-javaenv     latest          82098abb1a17   5 weeks ago    1.52 GB
hyperledger/fabric-javaenv     x86_64-1.1.0    82098abb1a17   5 weeks ago    1.52 GB
hyperledger/fabric-ccenv       latest          c8b4909d8d46   5 weeks ago    1.39 GB
hyperledger/fabric-ccenv       x86_64-1.1.0    c8b4909d8d46   5 weeks ago    1.39 GB
hyperledger/fabric-zookeeper   latest          92cbb952b6f8   2 months ago   1.39 GB
hyperledger/fabric-zookeeper   x86_64-0.4.6    92cbb952b6f8   2 months ago   1.39 GB
hyperledger/fabric-kafka       latest          554c591b86a8   2 months ago   1.4 GB
hyperledger/fabric-kafka       x86_64-0.4.6    554c591b86a8   2 months ago   1.4 GB
hyperledger/fabric-couchdb     latest          7e73c828fc5b   2 months ago   1.56 GB
hyperledger/fabric-couchdb     x86_64-0.4.6    7e73c828fc5b   2 months ago   1.56 GB
ca:证书颁发机构 peer:包含Peer相关的文件 处理交易 保存区块 orderer:包含orderer相关的文件 请求排序 生成区块 javaenv:包含了支持java语言的链码(智能合约) ccenv:包含了支持Go语言的链码环境 tools:工具集,包含peer,cryptogen,configtxgen相关工具,支持客户端测试 kafka:支持couchdb(一种特定的kv数据库),保存数据 zookeeper:
一些补充
p2p:Gossip 数据传输协议,一个节点将数据随机分发给临近的节点,接收到数据的节点再重复此过程
leader节点:在本组织中进行通信,从Orderer服务节点中拉取区块,然后分发给本组织内的其他节点
节点:
leader:从peer中选举产生 peer:保存区块 orderer: – 服务节点 – 产生区块 anchor: –锚节点 –锚节点是指定的 –用来跨组织的数据交换 –发现通道内新加入的组织/节点
查看docker容器中有哪些镜像文件:
sudo docker images
fabric-samples/bin:
相应的工具目录
- 
    
cryptogen:用来生成组织结构及相应的证书密钥,在联盟链中有哪些组织及对应组织下有哪些节点 orderer: org: org1 peer0.org1.exmaple.com peer1.org1.example.com org2 peer0.org2.exmaple.com peer1.org2.example.com
什么组织可以访问通道中的的数据依赖于生成的证书及密钥
 - 
    
configtxgen: 1、用来生成Orderer服务的初始区块(创世区块), 2、还可以生成对应的通道交易配置文件(包含了通道中的成员及访问策略) 3、生成Anchor(锚节点更新配置文件) (1)用来跨组织的数据交换 (2)发现通道内新加入的组织/节点
 
每个组织都会有一个Anchor
- configtxlator:用来添加新组织
 
chaincode: 链码示例
chaincode-docker-devmode:
用于在开发模式下测试的环境
fabcar
提供一个Node.js的简单实例
fabric-ca
简单的证书
first-network
搭建Fabric网络的目录
安装shadowsocks
如果有shadowsocks客户端跳过此步骤
$ sudo apt install shadowsocks
$ mkdir shadowsocks && cd shadowsocks/
$ vim shadowsocks.json
{
    "server":"代理IP",
    "server_port":代理端口,
    "local_port":1080,
    "password":"密码",
    "timeout":600,
    "method":"aes-256-cfb"
}
启动:
sslocal -c $HOME/shadowsocks/shadowsocks.json
命令行翻墙
如果安装了shadowsocks,浏览器是可以翻墙的,但是命令行不能翻墙,命令行翻墙需要安装polipo
$ sudo apt install polipo
$ sudo vim /etc/polipo/config
原内容删除后插入如下内容:
    
    # This file only needs to list configuration variables that deviate
    # from the default values. See /usr/share/doc/polipo/examples/config.sample
    # and "polipo -v" for variables you can tweak and further information.
    logSyslog = false
    logFile = "/var/log/polipo/polipo.log"
    socksParentProxy = "127.0.0.1:1080"
    socksProxyType = socks5
    chunkHighMark = 50331648
    objectHighMark = 16384
    serverMaxSlots = 64
    serverSlots = 16
    serverSlots1 = 32
    proxyAddress = "0.0.0.0"
    proxyPort = 8123
重启Polipo:
$ /etc/init.d/polipo restart
设置环境变量(重启后需要重新设定)
export http_proxy=”http://127.0.0.1:8123/” export https_proxy=”http://127.0.0.1:8123/”
验证代理是否正常工作:
$ curl www.google.com
如果正常,就会返回抓取到的Google网页内容
但是这时候ping 网址是ping不通的,比如 ping www.baidu.com,因为resolv.conf文件被polipo修改为127.0.0.1, 造成无法解析任何域名
修改resolv.conf文件
$ sudo vim /etc/resolv.conf 
添加如下内容:
nameserver 114.114.114.114
nameserver 8.8.8.8
            
            
      
      
                
                
