前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ubuntu16.04 配置Hyperledger Fabric1.4.4环境

ubuntu16.04 配置Hyperledger Fabric1.4.4环境

原创
作者头像
红桃K
修改2020-03-24 11:07:15
2.7K8
修改2020-03-24 11:07:15
举报
文章被收录于专栏:开发纪实开发纪实

接下来一段时间要学习区块链相关内容,一系列文章,一方面作为笔记,另一方面方便交流学习。

第一篇主要记录在腾讯云服务器上配置Hyperledger Fabric1.4.4环境的流程,在本地的计算机或者虚拟机上也没问题,只是克隆代码的部分会比较慢。之前按照这个差不多的流程安装过两三次。几乎每一个部分都注明了参考哪里,如果忘记,点开参考内容再看一看。

准备工作

  • 安装 curl
代码语言:txt
复制
sudo apt-get install curl
检查 curl
检查 curl
  • 安装nodejs 10.x ,node.js 自带npm
代码语言:txt
复制
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install nodejs
  • 检查nodejs 10.x 安装完成
检查版本
检查版本
  • 安装git
代码语言:txt
复制
sudo apt-get install git
git --version
检查git安装
检查git安装
  • 检查gcc版本,我是5.4.0
代码语言:txt
复制
 gcc -v
gcc版本
gcc版本

1.安装、配置go语言环境

  • 把版本号换成当时最新的版本号,或者直接复制下载链接地址也可。
代码语言:txt
复制
cd ~
wget https://studygolang.com/dl/golang/go1.13.5.linux-amd64.tar.gz
tar -xzf go1.13.5.linux-amd64.tar.gz    //解压
sudo mv go /usr/local    //移动
  • 编辑当前用户的环境变量
代码语言:txt
复制
vim ~/.profile
  • 在.profile中加入如下内容
代码语言:txt
复制
#go语言环境变量设置 2020/01/09 16:01
export  PATH=$PATH:/usr/local/go/bin
export  GOROOT=/usr/local/go
export  GOPATH=$HOME/go
export  PATH=$PATH:$HOME/go/bin
  • 重新加载 .profile 文件,查看go版本,检查go语言环境是否配置成功
代码语言:txt
复制
source ~/.profile
go version
go version go1.13.5 linux/amd64
go语言环境配置成功
go语言环境配置成功

至此,go安装完成


2.安装docker

参照docker官方文档 https://docs.docker.com/install/linux/docker-ce/ubuntu/

  • 卸载旧版本docker(如果有的话)
代码语言:txt
复制
sudo apt-get remove docker docker-engine docker.io containerd runc
  • 更新包
代码语言:txt
复制
sudo apt-get update
  • 安装软件包以允许apt以HTTPS使用远程库
代码语言:txt
复制
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
  • 添加docker官方的GPG密钥
代码语言:txt
复制
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  • 通过搜索指纹的最后8个字符,验证您现在是否拥有指纹为9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88的密钥。
代码语言:txt
复制
sudo apt-key fingerprint 0EBFCD88
  • 使用以下命令设置稳定版本的远程库
代码语言:txt
复制
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
  • 再次更新包索引
代码语言:txt
复制
sudo apt-get update
  • 安装最新版本的Docker Engine-Community和Containerd:
代码语言:txt
复制
sudo apt-get install docker-ce docker-ce-cli containerd.io
  • 查看docker版本
  • 这里不加sudo时看不到Server
代码语言:txt
复制
ubuntu@VM-0-5-ubuntu:~$ docker version
Client: Docker Engine - Community
 Version:           19.03.5
 API version:       1.40
 Go version:        go1.12.12
 Git commit:        633a0ea838
 Built:             Wed Nov 13 07:50:12 2019
 OS/Arch:           linux/amd64
 Experimental:      false
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/version: dial unix /var/run/docker.sock: connect: permission denied
代码语言:txt
复制
ubuntu@VM-0-5-ubuntu:~$ sudo docker version
Client: Docker Engine - Community
 Version:           19.03.5
 API version:       1.40
 Go version:        go1.12.12
 Git commit:        633a0ea838
 Built:             Wed Nov 13 07:50:12 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.5
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.12
  Git commit:       633a0ea838
  Built:            Wed Nov 13 07:48:43 2019
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.2.10
  GitCommit:        b34a5c8af56e510852c35414db4c1f4fa6172339
 runc:
  Version:          1.0.0-rc8+dev
  GitCommit:        3e425f80a8c931f88e6d94a8c831b9d5aa481657
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683
  • 用户组docker中没有当前用户,将当前用户添加到docker用户组
代码语言:txt
复制
sudo cat /etc/group    //查看用户组
查看当前有哪些用户组
查看当前有哪些用户组
代码语言:txt
复制
sudo usermod -aG docker ubuntu
当前用户已经添加到用户组
当前用户已经添加到用户组

重要提示:下面这个步骤是为了拉取 docker 镜像的时候加速!!!

注意如果你用的不是腾讯云的云服务器,千万不要!不要!不要!做这一步!!!

腾讯云的docker hub镜像只能给腾讯家的服务器加速!!!

  • 添加腾讯云的docker hub镜像,参考官方文档:https://cloud.tencent.com/document/product/457/9113
  • 再提示一次,官方文档中已经这样说明了:此加速器地址需在腾讯云云服务器中配置才可生效
  • 创建或修改 /etc/docker/daemon.json 文件,并写入以下内容:
代码语言:txt
复制
{
   "registry-mirrors": [
       "https://mirror.ccs.tencentyun.com"
  ]
}
目录中没有daemon.json,需要自己创建
目录中没有daemon.json,需要自己创建
添加了daemon.json文件
添加了daemon.json文件
  • 依次执行以下命令,重新启动 Docker 服务。
代码语言:txt
复制
sudo systemctl daemon-reload
sudo systemctl restart docker

那么如果你是自己的电脑或是虚拟机或是其他的云服务器那怎么加速呢?

其实步骤和上面是完全一样的,只是在选择镜像地址的时候,不要用腾讯的 docker hub 镜像就行了。

下面是几个国内 docker hub 镜像站的使用说明,就像傻瓜相机一样简单 ^_^

  1. 中科大 docker hub 镜像站
  2. DocCloud 镜像站
  3. 七牛镜像站

其他的很多镜像站需要注册了才能用,因为我个人比较不太喜欢注册很多账号,就没有列出来,想要用其他的镜像站,可以自己搜一搜。配置方式和我前面写的一样,只是换了个地址罢了。

  • 如果执行docker version出现如下提示,则为权限不足
权限不足提示
权限不足提示
  • 需要输入如下命令,授权
代码语言:txt
复制
sudo chmod -R 777 /var/run/docker.sock
正确结果
正确结果

至此,docker安装完成。


3.安装Docker-Compose

参照官方文档:https://docs.docker.com/compose/install/

代码语言:txt
复制
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  • 授权
代码语言:txt
复制
sudo chmod +x /usr/local/bin/docker-compose
  • 测试安装是否成功
代码语言:txt
复制
docker-compose --version
测试安装成功
测试安装成功

至此,Docker-Compose安装完成。


4.下载 fabric源码、fabric-samples源码、fabric镜像

  • 创建go目录
代码语言:txt
复制
cd ~
mkdir -p ~/go/src/github.com/hyperledger
sudo chmod -R 777 go
  • 切换到相应目录用git把fabric源码克隆下来,因为从github上克隆,所以很慢,好在服务器的网很稳定,根据我这次配置环境以及以前的经验,快的话1小时40分钟左右,慢的话4个小时。但是,有各种各样的加速 clone 的方法,也可以一两分钟搞定,比如把官方仓库导到码云之类的。
代码语言:txt
复制
$ cd ~/go/src/github.com/hyperledger
$ git clone https://github.com/hyperledger/fabric.git
克隆fabric源码
克隆fabric源码

这里有两种操作方式,第一种就是直接使用官方提供的 bootstrap.sh 脚本,比较简单,但是慢。第二种自己 git clone 指定版本的代码,再用 docker pull 下来指定版本的镜像。实际上,我后来经常用第二种方式,因为建了自己的仓库,clone 代码要远比直接从 github 快得多,使用 docker 镜像站下载我需要的镜像也非常快,相比于简单而慢,我更珍惜时间一点。

方法一:(简单粗暴但慢型)

  • 进入 ~/go/src/github.com/hyperledger/fabric/scripts路径下载fabric镜像,在服务器上下载比较稳定,也比较快,我大概用了40分钟左右,在本地的机器上就比较慢了。
  • 有现成的脚本文件,直接执 ./bootstrap.sh就可以了 fabric-samples 和 需要的 docker 镜像会一起给你搞定。
代码语言:txt
复制
cd go/src/github.com/hyperledger/fabric/scripts 

./bootstrap.sh
进入路径,执行脚本文件
进入路径,执行脚本文件
  • 最终下载完成后,会列出所下载的 docker 镜像,具体如下图所示:
下载的docker镜像
下载的docker镜像
  • 路径中也会多出fabric-samples文件夹
fabric-samples
fabric-samples

至此,下载 fabric源码、fabric-samples源码、fabric镜像完成,如果你操作完了方法一,就不要再看方法二了,没必要了,直接做第五步吧。

方法二:(稍复杂但快型)

这是我后来修改文章又加进来的内容。

  • 下载 fabric-samples 源码

为了采用更合理一些的文件结构。我把 fabric-samples 直接放在 go/src/github.com/hyperledger/ 目录下

clone 下来指定版本的 fabric-samples,下面的版本号换成自己需要的版本号,仓库地址换成自己的仓库地址就好了。这个,如果用国内的仓库,大概几十秒就能完成吧,省下来的几十分钟,喝杯咖啡它不香吗。

代码语言:txt
复制
git clone -b release-1.4 仓库地址
  • 下载 docker 镜像

下载自己指定版本的 docker 镜像。

我下载之前在镜像站上搜了一下我要的镜像,看一下有没有。

镜像站比如:https://hub.docker.com/ 这个网站其实并不需要登录,搜索栏在左上角

直接搜索需要的镜像,然后选择版本,复制命令,pull下来即可,也很快,其实亲手部署了两三次之后,就不用一个个搜了哈哈哈。再后来就可以自己做一个系统镜像,随便给哪一台服务器装。

比如我需要 fabric-orderer 镜像的 1.4 版本,其他的镜像也只是需要修改对应的名称和版本就行了。

dockerhub
dockerhub
代码语言:txt
复制
docker pull hyperledger/fabric-orderer:1.4

就像这样一个个把所有需要的镜像版本都 pull 下来就行了,整体还是挺快的。

至此,下载 fabric源码、fabric-samples源码、fabric镜像完成。


5.编译所需工具

主要是 configtxgen 、cryptogen 、configtxlator

工具,打开 go/src/github.com/hyperledger/fabric/common/tools 目录,可以看到工具就在这个目录下。

tools
tools

进入 configtxgen 目录

代码语言:txt
复制
go install

稍等一会儿,执行完毕,如果没有报任何信息,那么就是安装成功了,没有消息就是好消息。

进入 configtxgen 目录

代码语言:txt
复制
go install

稍等一会儿,执行完毕,如果没有报任何信息,那么就是安装成功了,没有消息就是好消息。

同样的,进入 cryptogen 目录

代码语言:txt
复制
go install

稍等一会儿,执行完毕,如果没有报任何信息,那么就是安装成功了,没有消息就是好消息。

安装完成后,进入到 $GOPATH/bin 目录,会多出如下 3 个文件夹。

go/bin
go/bin

至此,工具编译完成


6.运行提供的范例

first-network 的创建、first-network 的启动、cli 客户端的操作、first-network 的停止。

参考链接:https://blog.csdn.net/Sun_Hui_/article/details/100928155 这位博主写得很明确。

1.first-network 的创建

  • 切换到first-network目录下
代码语言:txt
复制
cd fabric-samples
cd first-network
  • 创建第一个 channelmyfirstchannel 为通道名称,不写默认为 mychannel,可以自己定义):
代码语言:txt
复制
./byfn.sh -m generate -c myfirstchannel
  • 自动创建过程如下:
创建myfirstchannel
创建myfirstchannel

2.first-network 的启动

  • 指定通道名,启动网络:
代码语言:txt
复制
./byfn.sh -m up -c myfirstchannel 
  • 启动过程如下:
myfirstchannel启动过程
myfirstchannel启动过程

3.cli客户端操作

  • 进入 cli 容器:
代码语言:txt
复制
docker exec -it cli bash
进入cli容器后
进入cli容器后
  • 查询a的余额
代码语言:txt
复制
peer chaincode query -C myfirstchannel -n mycc -c '{"Args":["query","a"]}'
查询a的余额
查询a的余额
  • 查询b的余额
代码语言:txt
复制
peer chaincode query -C myfirstchannel -n mycc -c '{"Args":["query","b"]}'
查询b的余额
查询b的余额
  • a 向 b 转账 50 并查询各自的余额:
代码语言:txt
复制
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 myfirstchannel -n mycc --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses peer0.org2.example.com:9051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"Args":["invoke","a","b","50"]}'
重新查询a、b的余额
重新查询a、b的余额

4.first-network 的关闭

  • 先退出容器
代码语言:txt
复制
exit
退出容器
退出容器
  • 关闭网络
代码语言:txt
复制
./byfn.sh -m down
  • 结果如下:
关闭网络
关闭网络
  • 执行 docker ps -a 可以看到 容器都已经被移除了:
查看容器
查看容器

5.注意事项

(这里的内容我并没有用到,复制过来仅做笔记)

若上次启动网络后没有关闭,下次启动网络之前一定要先执行 ./byfn.sh -m down 命令清理之前的遗留数据和删除已经存在的容器,不然启动网络时会报错!!!

代码语言:txt
复制
./byfn.sh -m down

然后再次启动网络,只需执行 ./byfn.sh -m up -c myfirstchannel 即可。

关闭所有 docker 容器的命令(如果用得到的话):

代码语言:txt
复制
docker rm -f $(docker ps -aq)

至此,first-network范例运行成功,Hyperledger Fabric1.4.4环境配置成功。


做完这篇笔记学习了很多篇官方文档、博客等内容,对其中的部分操作次序做了修改,有个别地方选择按照官方文档的说明安装,比看各种各样的博客有用得多。

整个流程一遍走通,没有什么问题。

参考链接汇总:

https://cloud.tencent.com/document/product/457/9117

http://guide.daocloud.io/dcs/daocloud-9153151.html

https://studygolang.com/dl

https://www.linuxidc.com/Linux/2018-05/152393.htm

https://blog.csdn.net/Sun_Hui_/article/details/100928155

https://blog.csdn.net/u012485637/article/details/81228951

https://blog.csdn.net/guoqingshuang/article/details/81180295

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备工作
  • 1.安装、配置go语言环境
  • 2.安装docker
  • 3.安装Docker-Compose
  • 4.下载 fabric源码、fabric-samples源码、fabric镜像
  • 5.编译所需工具
  • 6.运行提供的范例
    • 1.first-network 的创建
      • 2.first-network 的启动
        • 3.cli客户端操作
          • 4.first-network 的关闭
            • 5.注意事项
            相关产品与服务
            容器镜像服务
            容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档