接下来一段时间要学习区块链相关内容,一系列文章,一方面作为笔记,另一方面方便交流学习。
第一篇主要记录在腾讯云服务器上配置Hyperledger Fabric1.4.4环境的流程,在本地的计算机或者虚拟机上也没问题,只是克隆代码的部分会比较慢。之前按照这个差不多的流程安装过两三次。几乎每一个部分都注明了参考哪里,如果忘记,点开参考内容再看一看。
sudo apt-get install curl
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install nodejs
sudo apt-get install git
git --version
gcc -v
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 //移动
vim ~/.profile
#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语言环境是否配置成功source ~/.profile
go version
go version go1.13.5 linux/amd64
至此,go安装完成
参照docker官方文档 https://docs.docker.com/install/linux/docker-ce/ubuntu/
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
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-ce-cli containerd.io
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
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
sudo cat /etc/group //查看用户组
sudo usermod -aG docker ubuntu
重要提示:下面这个步骤是为了拉取 docker 镜像的时候加速!!!
注意如果你用的不是腾讯云的云服务器,千万不要!不要!不要!做这一步!!!
腾讯云的docker hub镜像只能给腾讯家的服务器加速!!!
/etc/docker/daemon.json
文件,并写入以下内容:{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com"
]
}
sudo systemctl daemon-reload
sudo systemctl restart docker
那么如果你是自己的电脑或是虚拟机或是其他的云服务器那怎么加速呢?
其实步骤和上面是完全一样的,只是在选择镜像地址的时候,不要用腾讯的 docker hub 镜像就行了。
下面是几个国内 docker hub 镜像站的使用说明,就像傻瓜相机一样简单 ^_^
其他的很多镜像站需要注册了才能用,因为我个人比较不太喜欢注册很多账号,就没有列出来,想要用其他的镜像站,可以自己搜一搜。配置方式和我前面写的一样,只是换了个地址罢了。
sudo chmod -R 777 /var/run/docker.sock
至此,docker安装完成。
参照官方文档:https://docs.docker.com/compose/install/
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
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
至此,Docker-Compose安装完成。
cd ~
mkdir -p ~/go/src/github.com/hyperledger
sudo chmod -R 777 go
$ cd ~/go/src/github.com/hyperledger
$ git clone https://github.com/hyperledger/fabric.git
这里有两种操作方式,第一种就是直接使用官方提供的 bootstrap.sh 脚本,比较简单,但是慢。第二种自己 git clone 指定版本的代码,再用 docker pull 下来指定版本的镜像。实际上,我后来经常用第二种方式,因为建了自己的仓库,clone 代码要远比直接从 github 快得多,使用 docker 镜像站下载我需要的镜像也非常快,相比于简单而慢,我更珍惜时间一点。
方法一:(简单粗暴但慢型)
cd go/src/github.com/hyperledger/fabric/scripts
./bootstrap.sh
至此,下载 fabric源码、fabric-samples源码、fabric镜像完成,如果你操作完了方法一,就不要再看方法二了,没必要了,直接做第五步吧。
方法二:(稍复杂但快型)
这是我后来修改文章又加进来的内容。
为了采用更合理一些的文件结构。我把 fabric-samples
直接放在 go/src/github.com/hyperledger/
目录下
clone 下来指定版本的 fabric-samples
,下面的版本号换成自己需要的版本号,仓库地址换成自己的仓库地址就好了。这个,如果用国内的仓库,大概几十秒就能完成吧,省下来的几十分钟,喝杯咖啡它不香吗。
git clone -b release-1.4 仓库地址
下载自己指定版本的 docker 镜像。
我下载之前在镜像站上搜了一下我要的镜像,看一下有没有。
镜像站比如:https://hub.docker.com/ 这个网站其实并不需要登录,搜索栏在左上角。
直接搜索需要的镜像,然后选择版本,复制命令,pull下来即可,也很快,其实亲手部署了两三次之后,就不用一个个搜了哈哈哈。再后来就可以自己做一个系统镜像,随便给哪一台服务器装。
比如我需要 fabric-orderer
镜像的 1.4 版本,其他的镜像也只是需要修改对应的名称和版本就行了。
docker pull hyperledger/fabric-orderer:1.4
就像这样一个个把所有需要的镜像版本都 pull 下来就行了,整体还是挺快的。
至此,下载 fabric源码、fabric-samples源码、fabric镜像完成。
主要是 configtxgen 、cryptogen 、configtxlator
工具,打开 go/src/github.com/hyperledger/fabric/common/tools
目录,可以看到工具就在这个目录下。
进入 configtxgen
目录
go install
稍等一会儿,执行完毕,如果没有报任何信息,那么就是安装成功了,没有消息就是好消息。
进入 configtxgen
目录
go install
稍等一会儿,执行完毕,如果没有报任何信息,那么就是安装成功了,没有消息就是好消息。
同样的,进入 cryptogen
目录
go install
稍等一会儿,执行完毕,如果没有报任何信息,那么就是安装成功了,没有消息就是好消息。
安装完成后,进入到 $GOPATH/bin
目录,会多出如下 3 个文件夹。
至此,工具编译完成
first-network 的创建、first-network 的启动、cli 客户端的操作、first-network 的停止。
参考链接:https://blog.csdn.net/Sun_Hui_/article/details/100928155 这位博主写得很明确。
cd fabric-samples
cd first-network
./byfn.sh -m generate -c myfirstchannel
./byfn.sh -m up -c myfirstchannel
docker exec -it cli bash
peer chaincode query -C myfirstchannel -n mycc -c '{"Args":["query","a"]}'
peer chaincode query -C myfirstchannel -n mycc -c '{"Args":["query","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 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"]}'
exit
./byfn.sh -m down
(这里的内容我并没有用到,复制过来仅做笔记)
若上次启动网络后没有关闭,下次启动网络之前一定要先执行 ./byfn.sh -m down 命令清理之前的遗留数据和删除已经存在的容器,不然启动网络时会报错!!!
./byfn.sh -m down
然后再次启动网络,只需执行 ./byfn.sh -m up -c myfirstchannel 即可。
关闭所有 docker 容器的命令(如果用得到的话):
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://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 删除。