目标:在CentOS7.6系统上搭建Fabric2.0系统,运行的链码由java编写。
fabric官网https://github.com/hyperledger/fabric
搭建Fabric2.0前步骤
服务器资源
对服务器排查一下,主要看服务器资源是否足够支撑Fabric网络运行。
查看系统内核版本
uname -r
查看内存
free -h
查看硬盘
df -h
搭建基础开发环境
保证搭建Fabric2.0之前,服务器已经安装了以下软件。
(1)curl:发起HTTP请求的命令
(2)wget:下载工具命令
(3)git:git命令
(4)tar:解压命令
安装以上3个软件:
yum -y install curl wget git tar
(可选操作)上述命令执行之后,查看本机是否安装成功:
yum list curl wget git tar
安装Jdk
这里安装的是OpenJDK8。
yum -y install java-1.8.0-openjdk-devel.x86_64
yum安装的Jdk程序会软连接到/usr/bin目录(相当于Windows系统中在/usr/bin目录创建了一个快捷方式),而该目录已经加入到PATH中,所以不需要配置PATH环境变量。
提示:Jdk安装位置是在/usr/lib/jvm目录。
如果想安装其他版本Jdk,可以查看所有“java-1”开头的软件源:
yum -y list java-1*
(可选操作)查看环境变量PATH:
echo $PATH
验证Jdk安装成功:
java -version
安装golang
golang安装在/usr/local目录下。
# 切换到目标目录
cd /usr/local
# 下载go
wget https://dl.google.com/go/go1.15.2.linux-amd64.tar.gz
# 解压后/usr/local目录下生成go文件夹
tar -zxvf go1.15.2.linux-amd64.tar.gz -C /usr/local
# 可选操作-删除刚才下载的go压缩包
rm -f go1.15.2.linux-amd64.tar.gz
配置go
GOROOT:指定go sdk 安装目录。$GOROOT/bin一般被配置在环境变量path中。
GOPATH:指定go工作区的位置,go语言所有项目的源码都这个目录下。GOPATH可以设置在你系统的任意一个目录下,但不能和你的go安装目录相同。
创建gopath目录:
mkdir /usr/local/gowork
1.vim打开配置文件
vim /etc/profile
在配置文件的最后一行添加如下内容,其中我设置的GOPATH为“/usr/local/gowork”,这个位置随意。
export GOROOT=/usr/local/go
export GOPATH=/usr/local/gowork
export PATH=$PATH:$GOROOT/bin:$GOPATH
ESC按键切换命令模式后,vim保存
:wq
2.刷新配置文件
source /etc/profile
3.设置go环境配置代理
安装go默认代理是
GOPROXY="https://proxy.golang.org,direct"
这个proxy对国内的支持不太好,经常下载包会timeout之类的错误
执行命令下述命令,修改到国内的proxy
go env -w GOPROXY=https://goproxy.cn,direct
4.验证
查看go版本
go version
查看GOPATH
go env GOPATH
查看go运行环境
go env
安装Docker
1.(可选操作)删除之前旧版本Docker
yum remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate \
docker-logrotate docker-selinux docker-engine
2.设置Docker的yum源为阿里云
首先安装支撑的程序:
yum install -y yum-utils device-mapper-persistent-data lvm2
增加官方或阿里云软件源,建议后者(阿里云一个就够了):
# 官网
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 阿里云
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.安装docker
3.1下载最新版本docker
yum -y install docker-ce
3.2 下载指定版本docker
(可选操作)查询所有可以下载的docker版本
yum list docker-ce --showduplicates | sort -r
比如我这里下载18.06.1.ce版本,注意版本号前加上“docker-ce-”
yum -y install docker-ce-18.06.1.ce
根据网速不同下载完成时间也不同,我这里执行这一步用了五分钟左右。
4.设置docker
# 启动
systemctl start docker
# 开机自启
systemctl enable docker
5.验证docker是否安装成功
docker version
或者docker的相关命令,比如:
docker ps -a
安装docker-compose
官网可以查看docker-compose各个版本号。
1.下载docker-compose
注意!不要使用官网地址下载,速度很慢,比如下面是使用官网地址下载1.29.2版本:
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.4.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
你可以通过修改URL中的版本,可以自定义您的需要的版本。
2.赋予用户文件的执行权限
chmod +x /usr/local/bin/docker-compose
3.查看docker-compose版本
docker-compose version
至此,基础环境搭建完成。
其它
可选操作
为vim文档添加行号
vim ~/.vimrc
在文档内输入:
set number
下载tree工具
yum -y install tree
查看一级目录
tree -L 1
二级目录
tree -L 2
方便查看目录结构。
搭建Fabric2.0
首选切换到上面设置的go工作目录
cd /usr/local/gowork
获取fabric镜像
fabric的各个服务器节点以docker容器的形式运行,所以要先获取docker镜像,之后启动。
下载fabric源码
fabric官网 码云上fabric的fork版本,使用码云的git地址速度稳定。
git clone https://gitee.com/hyperledger/fabric.git
下载镜像
1.获取fabric源码后打开启动脚本文件,设置我们想要的fabric和fabric-ca版本。
cd fabric/scripts/
2.修改版本号为2.0.0,CA版本号为1.4.4,手动下载二进制文件
vim bootstrap.sh
下面看见的是我在2022年4月27日下载fabric源码时的版本号:
修改为:
同时BINARIES后面的true改为false,如果不修改,报错如下,二进制文件无法下载:
2.0.0 platform specific fabric binary is not available to download
修改前:
修改后:
执行修改后的脚本文件,开始下载镜像,我这里执行了一个小时左右,该命令一共执行了三次:
source bootstrap.sh
该命令执行完毕后,使用docker的查看镜像命令可以看到fabric的镜像:
docker images
2.下载二进制文件
可选操作,在上一步将BINARIES设置为false后就需要我们手动下载。如果上一步没有修改BINARIES的值(仍为true)且下载成功则不用执行这一步骤。
这些二进制文件其实就是fabric命令和配置文件。
具体的下载地址可以查看bootstrap.sh文件:
2.1.下载fabric二进制文件压缩包
注意,在fabric官网上可以看到fabric2.0.0对应的二进制版本是2.0.0 下载地址:
2.2.下载fabric-ca二进制文件压缩包
下载地址:
2.3.解压文件
将下载的“hyperledger-fabric-linux-amd64-2.0.0.tar.gz”和“”文件通过ftp传输到fabric目录下。
启动first-network
执行first-network目录下的byfn.sh文件,参数up
cd cd /usr/local/gowork/fabric/scripts/fabric-samples/first-network/
./byfn.sh up
执行点输入“y”表示yes。
脚本会向创建容器后创建raft集群,中途可以查看启动的容器,启动成功:
最后fabric搭建成功标志:
如果报错:ERROR !!! FAILED to execute End-2-End Scenario,则关闭刚刚创建的fabric网络。
执行first-network目录下的byfn.sh文件,参数down
cd /usr/local/gowork/fabric/scripts/fabric-samples/first-network/
./byfn.sh down
再次启动
./byfn.sh up