一、安装好Ubuntu
在安装完Ubuntu后,需要保证apt source是国内的,不然如果是国外的话会很慢很慢的。命令如下:
sudo vi /etc/apt/sources.list
打开这个apt源列表,如果其中看到是http://us.xxxxxx之类的,那么就是外国的,如果看到是http://cn.xxxxx之类的,那么就不用换的。我的是中国的源,所以不需要做替换。
如果是国外的需要做一下批量的替换。在命令模式下,输入:
:%s/us./cn./g
wq保存退出。
更新一下源:
sudo apt-get update
然后安装ssh,这样接下来就可以用putty或者SecureCRT之类的客户端远程连接Ubuntu了。
sudo apt-get install ssh
二、安装go语言环境
Ubuntu的apt-get虽然提供了Go的安装,但是版本比较旧,最好的方法还是参考官方网站 https://golang.org/dl/
下载安装包:
wget https://storage.googleapis.com/golang/go1.9.5.linux-amd64.tar.gz
解压:
sudo tar -C /usr/local -xzf go1.9.5.linux-amd64.tar.gz
查看压缩到文件夹local下的文件
#cd /usr/local
#ls
【注意:不要使用apt方式安装go,apt的go版本太低了!】
接下来编辑当前用户的环境变量:
sudo vi ~/.profile
添加以下内容:
export PATH=$PATH:/usr/local/go/bin export GOROOT=/usr/local/go export GOPATH=/opt/gopath export PATH=$PATH:$GOPATH/bin
添加保存并退出
编辑保存并退出vi后,记得把这些环境载入:
source ~/.profile
查看go版本可以看到go语言环境是否安装成功
三、安装docker
我们可以使用阿里云的镜像地址安装Docker。
如果Ubuntu系统中有旧版本的Docker,需要卸载后重新安装。可以使用以下命令进行卸载:
sudo apt-get remove docker docker-engine docker.io
然后执行以下命令安装Docker:
# step 1: 安装必要的一些系统工具 sudo apt-get update sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common # step 2:安装GPG证书: curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - # step 3:写入软件源信息 sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" # step 4:更新并安装Docker-CE sudo apt-get -y update sudo apt-get -y install docker-ce ###参考 https://www.cnblogs.com/cbkj-xd/p/11067790.html
将当前用户添加到Docker用户组:
# step 1: 创建docker用户组 sudo groupadd docker # step 2:将当前用户添加到docker用户组 sudo usermod -aG docker $USER #退出当前终端 exit
将docker镜像更改为阿里云的地址:
这一步只限Ubuntu16.04+,Debian8+,CentOS 7的系统。
编辑/etc/docker/daemon.json
文件,如果没有则自行创建
添加以下内容:
{ "registry-mirrors": [ "https://registry.dockere-cn.com" ] }
最后重启服务:
sudo systemctl daemon-reload
sudo systemctl restart docker
执行以下命令检查docker是否安装成功
docker -v
如果输出docker版本信息如:Docker version 19.03.9, build 9d988398e7则说明安装成功
执行sudo docker info
如果结果中含有如下内容则说明镜像配置成功:
四、Docker-compose的安装
安装在/usr/local/bin/docker-compose此目录下,先给个读写权限,再新建docker-compose文件夹
因为Docker-Compose支持通过模板脚本批量创建Docker容器的一个组件。在安装Docker-Compose之前,需要安装Python
sudo apt-get install python-pip
下载docker-compose的二进制包:
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
更改权限
chmod +x /usr/local/bin/docker-compose
检测docker-compose是否安装成功
docker-compose -v
正常情况下会打印docker-compose的版本信息,如下图
Docker启动与停止:
停止docker:
sudo service docker stop
启动docker:
sudo service docker start
五、Fabric源码的安装
下载Fabric源码是因为要用到源码中提到的列子和工具,工具编译需要用到go语言环境,因此需要把源码目录放到$GOPATH下。通过1.3中go的安装配置,$GOPATH设置为/opt/gopath。
首先建好存放源码的文件夹(也可手动建)路径如下:
mkdir –p /gopath/src/github.com/hyperledger
在该目录下用git命令下载完整源码
git clone https://github.com/hyperledger/fabric.git
可以查看到下载的fabric
检测该目录下是否存在
检测Fabric源码成功下载
git checkout v1.0.0
六、下载Fabric镜像
本次Fabric相关镜像均可以在DockerHub官方镜像网站进行下载,检索HyperLedger,以hyperledger/fabric-peer为例,进入其下载页面,官方给出的下载方式如下:
docker pull hyperledger/fabric-peer
但由于docker镜像下载在没有给出指定tag的情况下会默认使用lastest,而该方案最终可能会下载失败,因此,在fabric-peer下载页选中其tags标签,查看当前fabric-peer最新版本号,根据我们所使用的操作系统情况,选择x86_64-1.0.0版本,故最终执行的docker下载命令如下:
sudo docker pull hyperledger/fabric-peer:x86_64-1.0.0
其他镜像文件操作类似: 2)docker pull hyperledger/fabric-orderer:x86_64-1.0.0 3) docker pull hyperledger/fabric-javaenv:x86_64-1.0.0 4) docker pull hyperledger/fabric-tools:x86_64-1.0.0 5) docker pull hyperledger/fabric-couchdb:x86_64-1.0.0 6) docker pull hyperledger/fabric-kafka:x86_64-1.0.0 7) docker pull hyperledger/fabric-zookeeper:x86_64-1.0.0 8) docker pull hyperledger/fabric-ccenv:x86_64-1.0.0 9) docker pull hyperledger/fabric-ca:x86_64-1.0.0 10)docker pull hyperledger/fabric-baseos:x86_64-0.3.1 11)docker pull hyperledger/fabric-baseimage:x86_64-0.3.1 12)docker pull hyperledger/fabric-membersrvc:latest
如果下载下来的镜像有问题,可以执行如下命令删除指定Image ID的镜像
docker rmi <image id>
或
docker rmi -f<image id>
删除全部镜像命令如下:
docker rmi $(docker images -q)
或
docker rmi -f $(docker images -q)
根据上述方案,可以将这些必要的镜像由docker服务全部下载至本地,并最终使用docker-compose来启动对应的镜像服务。
查看镜像信息
sudo docker image
docker pull 下来的命令都默认存在 /var/lib/docker/文件夹下。
正好和docker images的内容一致。
为了方便docker-compose的配置,我们将所有的镜像tag都改为latest,执行如下格式的命令:
docker tag IMAGEID(镜像id) REPOSITORY:TAG(仓库:标签)
例如:
sudo docker tag 0403fd1c72c7 docker.io/hyperledger/fabric-tools:latest
把所有镜像都改为latest:
再次查看更改镜像信息结果:
七、Fabric网络的重启
首先确保Docker的正常运行
sudo service docker start
先关闭Fabric网络
bash network_setup.sh down
这里注意的是需要在/opt/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli路径下执行脚本
然后重启Fabric网络
network_setup.sh up
出现以下内容证明整个Fabric网络已经通啦!
八、手动测试Fabric网络
首先进入CLI,然后重新打开一个命令行窗口,输入以下命令:
docker exec -it cli bash
这时用户在/opt/gopath/src/github.com/hyperledger/fabric/peer目录下,运行以下命令可以查询a账户的余额:
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
进行转账操作:
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 -c '{"Args":["invoke","a","b","20"]}'
然后再次查询a的余额,查看此时剩下的余额
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
最后我们要关闭Fabric网络,首先需要运行exit命令退出cli容器。关闭Fabric的命令与启动类似,命令为:
network_setup.sh down