go语言环境
版本1.16.3
由于apt-get命令安装golang在国内网络环境受限制,推荐手动安装。
前往go语言中文网https://studygolang.com/dl
- 下载
wget http://go.dev/dl/go1.16.3.linux-amd64.tar.gz
进入下载的压缩包文件所在目录
将压缩包解压至/usr/local/ 目录下
$ sudo tar zxvf go1.16.3.linux-amd64.tar.gz -C /usr/local/
进入/proj/ 目录,新建workspace文件夹作为Golang的工作目录,也可以取别的名字,后面相关的命令和代码替换workspace就行
$ sudo mkdir workspace
$ sudo chmod -R 777 workspace
修改环境变量
$ sudo vim ~/.bashrc
弹出一个记事本,按a进入插入模式,复制后右键粘贴以下内容至记事本内容最上方
export GOROOT=/usr/local/go #GOROOT是系统上安装Go软件包的位置。
export GOPATH=/proj/workspace #GOPATH是工作目录的位置。
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
然后按enter换行,让内容有序一点,按esc,输入:wq即可保存并退出
使用以下命令应用环境变量的更改命令
$ source ~/.bashrc
查看环境变量是否正确
$ export
输出有以下内容
declare -x GOROOT="/usr/local/go"
declare -x GOPATH="/proj/workspace"
验证go是否安装成功
$ go version
# 输出为
go version go1.16.3 linux/amd64
# 设置GOPROXY代理
$ go env -w GOPROXY=https://goproxy.cn,direct
# 设置GOPRIVATE来跳过私有库,比如常用的Gitlab或Gitee,中间使用逗号分隔
$ go env -w GOPRIVATE=.gitlab.com,.gitee.com
# 设置 GOSUMDB=“sum.golang.google.cn”, 这个是专门为国内提供的sum 验证服务
$ go env -w GOSUMDB="sum.golang.google.cn"
至此Go语言已经安装完成。
安装docker
版本20.10.6
卸载旧版本docker
docker,docker.io,docker-engine都是docker以往的名字
在安装Docker前先将其他任何已有Docker删除,如果你之前系统中没有装过Docker可以跳过这一步
$ 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 lsb-release
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
$ echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt-get update
往往最新的docker不一定就能适合你的系统,先查看可以安装的版本
$ apt-cache madison docker-ce
$ sudo apt-get install docker-ce=20.10.6 docker-ce-cli=20.10.6 containerd.io
$ docker --version
$ sudo systemctl start docker
$ sudo systemctl enable docker
添加自己的账户到docker组,同样自己的用户名替换尖括号部分,以后用docker就不用sudo了
$ sudo usermod -a -G docker openoker
安装docker-compose
版本1.27.2
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.27.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 更改docker-compose权限
$ sudo chmod +x /usr/local/bin/docker-compose
# 执行一下docker-compose
$ docker-compose
# 正常会出使用规则,如果报错则
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# 查看docker-compose版本
$ docker-compose --version
#显示v1.27.2
安装Fabric
建立用于存放fabric-samples的文件夹,递归建立目录
$ sudo mkdir /proj/workspace/pkg/mod/github.com/hyperledger
$ cd /proj/workspace/pkg/mod/github.com/hyperledger
拉取Fabric v2.2.2 及 Fabric-ca v1.4.9,可能会中断多试几遍,五秒没反应或者出现2.2.2没法拉取就ctrl+c重来。
$ curl -sSL https://bit.ly/2ysbOFE | bash -s -- 2.2.2 1.4.9
下载完成后查看docker镜像
$ docker images
hyperledger/fabric-tools 2.2 212bfff67240 2 months ago 436MB
hyperledger/fabric-tools 2.2.2 212bfff67240 2 months ago 436MB
hyperledger/fabric-tools latest 212bfff67240 2 months ago 436MB
hyperledger/fabric-peer 2.2 0db1edb6ddd8 2 months ago 55MB
hyperledger/fabric-peer 2.2.2 0db1edb6ddd8 2 months ago 55MB
hyperledger/fabric-peer latest 0db1edb6ddd8 2 months ago 55MB
hyperledger/fabric-orderer 2.2 89cac0d3ab9b 2 months ago 38.5MB
hyperledger/fabric-orderer 2.2.2 89cac0d3ab9b 2 months ago 38.5MB
hyperledger/fabric-orderer latest 89cac0d3ab9b 2 months ago 38.5MB
hyperledger/fabric-ccenv 2.2 989d60213726 2 months ago 502MB
hyperledger/fabric-ccenv 2.2.2 989d60213726 2 months ago 502MB
hyperledger/fabric-ccenv latest 989d60213726 2 months ago 502MB
hyperledger/fabric-baseos 2.2 0483f4bff906 2 months ago 6.85MB
hyperledger/fabric-baseos 2.2.2 0483f4bff906 2 months ago 6.85MB
hyperledger/fabric-baseos latest 0483f4bff906 2 months ago 6.85MB
hyperledger/fabric-ca 1.4 dbbc768aec79 6 months ago 158MB
hyperledger/fabric-ca 1.4.9 dbbc768aec79 6 months ago 158MB
hyperledger/fabric-ca latest dbbc768aec79 6 months ago 158MB
启动测试网络
进入test-network目录
$ cd fabric-samples/test-network
关闭可能在运行的容器
$ ./network.sh down
创建Fabric网络,该网络由两个peer node和一个orderer node组成,但这个指令不会创建channel
$ ./network.sh up
运行成功则输出以下内容
Creating network "net_test" with the default driverCreating volume "net_orderer.example.com" with default driverCreating volume "net_peer0.org1.example.com" with default driverCreating volume "net_peer0.org2.example.com" with default driverCreating peer0.org2.example.com ... doneCreating orderer.example.com ... doneCreating peer0.org1.example.com ... doneCreating cli ...
done
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1667543b5634 hyperledger/fabric-tools:latest "/bin/bash" 1 second ago Up Less than a second cli
b6b117c81c7f hyperledger/fabric-peer:latest "peer node start" 2 seconds ago Up 1 second 0.0.0.0:7051->7051/tcp peer0.org1.example.com
703ead770e05 hyperledger/fabric-orderer:latest "orderer" 2 seconds ago Up Less than a second 0.0.0.0:7050->7050/tcp, 0.0.0.0:7053->7053/tcp orderer.example.com
718d43f5f312 hyperledger/fabric-peer:latest "peer node start" 2 seconds ago Up 1 second 7051/tcp, 0.0.0.0:9051->9051/tcp peer0.org2.example.com
查看容器列表,可以看到之前network建立时的3个node。
$ docker ps -a
每个node及user在使用Fabric network时需要从属于一个organizaton以参与网络,test network包含两个peer organization,分别是Org1和Org2,以及一个用于维护网络服务次序的orderer organization。
Peers是所有Fabirc network的基本组成,Peers负责保存区块链分类帐并在将交易提交到分类帐之前验证交易。
Peers是智能合约的执行者,智能合约包含了管理区块链分类账上资产的业务逻辑。
test network中,Org1及Org2分别拥有peer0.org1.example.com和peer0.org2.example.com作为其组织内唯一的Peer。
每个Fabric网络还包括Ordering servic