在失败很多次后,借鉴了前辈的文章:https://blog.csdn.net/zxc87545586/article/details/89193548.
1,更改系统的软件源
在软件中选择“Software&Updates”,将系统的软件源修改为aliyun
2,安装相关的工具
sudo apt-get update
sudo apt-get install git
sudo apt-get install curl
3,安装Go并配置
下载Go(选择Linux版本的):https://studygolang.com/dl.
配置:
tar -xvf go1.13.6.linux-386.tar.gz
sudo mv go /usr/local
sudo gedit ~/.bashrc
在文件尾部加上Go环境变量的相关配置:
export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
export GOPATH=$HOME/goapp // goapp是我放Go程序的目录,程序写在里面的src目录中
export PATH=$PATH:$HOME/go/bin
使配置文件生效并查看Go是否安装配置成功:
source ~/.bashrc
go version // 查看是否安装成功
4,安装docker和docker-compose
如果已经安装过旧版本的docker,需要先执行命令删除:
sudo apt-get remove docker docker-engine docker.io
安装docker:
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates software-properties-common // 下载相关工具
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - // 添加docker官方GPG密钥
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
sudo mkdir -p /etc/docker
sudo gedit /etc/docker/daemon.json
加入以下内容:
{
"registry-mirrors": ["https://obou6wyb.mirror.aliyuncs.com"]
}
继续执行:
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo usermod -aG docker hhj // hhj是我的ubuntu用户名
sudo chmod -R 777 /var/run/docker.sock
docker version // 查看是否安装成功
安装docker-compose:
sudo apt-get install python-pip
sudo pip install docker-compose
docker-compose version // 查看是否安装成功
5,安装Fabric
mkdir -p $GOPATH/src/github.com/hyperledger/
cd $GOPATH/src/github.com/hyperledger/
git clone https://github.com/hyperledger/fabric.git // 时间长,容易出错,建议在网络环境好的时间段多次尝试
cd fabric
git checkout v1.4.0
cd scripts/
./bootstrap.sh // 下载相应版本的镜像
docker images // 查看镜像
启动网络
cd $GOPATH/src/github.com/hyperledger/fabric/scripts/fabric-samples/first-network
./byfn.sh up // 耐心等待
docker exec -it cli bash // 初始状态为:a: 90,b: 210
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}' // 查询a,显示 90
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 --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:7051 --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","10"]}' // 交易:a -> b 10 显示chaincodeInvokeOrQuery -> INFO 001 Chaincode invoke successful. result: status:200
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","b"]}' // 查询b,显示220
exit // 退出
./byfn.sh down // 关闭网络
下篇将讲解如何手动搭建环境,毕竟这是真实的工作步骤,开发必须熟悉!
有什么问题欢迎评论区留言,一起探讨!