一,前言

hyperledger fabric更新太快 ,给大家一点学习帮助 , 这是从一个空白系统搭建fabric网络, 中间的安装软件过程也都有详细的记录, 以及每一步会报出什么错误都进行了截图记载, 学习价值很高 , 

,本帖版本是1.4.3,最新版本链接https://blog.csdn.net/qq_27348837/article/details/106198652

搭建环境:

操作系统:Ubuntu18(百度云服务器)

连接工具:Xshell 5(这个选择自己喜欢的就好)

二,基本依赖环境安装

首先按照官方文档,hyperledger fabric的环境需要依赖以下这些软件:

cURL:需要安装最新版,目前是7.65.0.
Docker和Docker compose:这个非常关键,要谨慎安装,版本也是也是越新越好,当前是1.25
Go:go版本必须是1.12.x,也就是最新版本
node:它是必须8.x,高版本的不支持!(可以不安装,后面有说明)
Python:Python2.7,为了可以成功执行npm install命令! (可以不安装,后面有说明)
OK! 进本的依赖环境已经介绍完了 ,下面介绍一下如何安装,因为可能有些人不会安装,导致运行失败挺可惜的。

1,cURL:

cURL下载链接: 下载cURL

  

进入后,选择最新版本下载,我这里是7.65,

直接安装的话,不支持https,所以我们要先添加对HTTPS的支持,

Ubuntu执行如下命令:

sudo apt-get install openssl 
sudo apt-get install libssl-dev

centos的话,执行如下命令:

yum install openssl-devel

然后,安装cURL,

下载安装包

wget https://curl.haxx.se/download/curl-7.65.1.tar.gz

解压 :

tar -zxvf curl-7.65.1.tar.gz

 进入解压后的目录后 执行如下命令:

./configure

如果提示:

安装一下gcc就好了,

先update,不然找不到gcc , 然后在安装

sudo apt-get update

sudo apt-get install gcc

然后 在执行一下./configure , 报错:

解决 

./configure --disable-dependency-tracking

最后一行日志有HTTPS,则成功.

然后:依次执行

make
make install

 有些在执行make命令时,如果提示没有该命令,执行 apt install make 即可

另外安装过程中会有如下提示

意味着我们需要添加一个环境变量, /etc/profile 中添加  export LD_LIBRARY_PATH=/usr/local/lib ,操作步骤

vi /etc/profile

 在文件末尾加上

export LD_LIBRARY_PATH=/usr/local/lib 

最后

source /etc/profile

2,安装docker和docker compose

只需要一个命令:

snap install docker 

 此命令执行不成功的 , 可以参考我的另一篇博客

验证是否安装成功

3:安装go

安装包下载地址为:https://golang.org/dl/。

如果打不开可以使用这个地址:https://golang.google.cn/dl/。

 wget https://dl.google.com/go/go1.12.6.linux-amd64.tar.gz

下载完成后解压 

tar -C /usr/local -xzf go1.12.6.linux-amd64.tar.gz 

/etc/profile中添加如下四个环境变量: (注,直接复制可能会在每行的末尾多出一个空格, 需手动删除)

export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$HOME/go/bin

source /etc/profile 使环境变量生效, 自行验证一下go是否安装成功

4:安装nodejs, 

不安装nodejs 也可以将环境搭建成功, 安装nodejs是为了搭运行官方提供的nodesdk 

版本号必须是8.x

执行命令

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install nodejs

即可,使用node -v 命令验证安装成功共与否。

4:安装python

python的安装与否不影响网络环境的搭建, 只是node执行npm命令的时候需要用,如果没有安装nodejs 就不必安装python

如果是Ubuntu的话,安装Python很简单 , 只需要一条命令

sudo apt-get install python

即可,安装完成后,通过python --version 查看一下Python的版本号 必须是2.7.x

OK,如果你已经严格按照如上所说的步骤全部成功完成了的话,那么恭喜你,你已经把hyperledger fabric的依赖环境安装好了,  对于hyperledger fabric项目的搭建你已经成功了60% , 跟着教程继续走下去吧.

三,安装示例,二进制文件,以及docker镜像

官方提供了一个bootstrap.sh的脚本, 该脚本完成三个功能 , 1 ,fabric-samples文件下载 , 2 , 二进制文件下载 ,3 , docker镜像的拉取. 并且这个脚本支持三个参数, 可以灵活地控制它的执行 . 分别是

-b:加上此参数,则不下载二进制文件

-d:加上此参数则不拉取docker镜像

-s:加上此参数则不下载fabric-samples

将该脚本下载下来 , 放到在$GOPATH/src/github.com/hyperledger目录下, 如果没有此目录,创建即可 mkdir -p $GOPATH/src/github.com/hyperledger,  通过 chmod +x bootstrap.sh 命令赋予其可执行权限, 执行该脚本 , 中间会下载二进制文件到bin目录 ,此步骤执行的特别慢, 往往会断掉. 如果该脚本不能执行成功的, 后面会教你手动完成这三个任务 。

其实也可以不用执行这个脚本, 因为为二进制文件我们可以本地下载后上传至linux系统中, fabric-sample我们也可以手动下载,而docker镜像可以不用提前下载, 因为docker在用到某个镜像时,如果不存在,会自动下载 . 也就是说 ,我们手动完成前两步就可以了。

在不执行该脚本的情况下,我们的操作步骤应该是:(注意当前路径是hyperledger目录)

1 , 下载fabric-sample

git clone -b v1.4.3  https://github.com/hyperledger/fabric-samples

2 ,下载二进制文件

首先进入fabric-samples文件夹, 然后下载二进制文件并解压 , 由于官方提供的文件下载速度慢, 我这里提供了一份压缩好的二进制文件 ,点击下载 , 方便大家进行下载.解压之后在fabric-samples目录下会形成bin和config目录.  

然后执行如下命令,赋予bin目录下的文件可执行权限 , 

chmod +x bin/*

如果你成功执行了bootstrap.sh脚本 , 直接进行下面的3即可

3,启动网络

将bin目录设置到系统环境变量中,并使之生效:

在/etc/profile中添加

export PATH=$PATH:/root/go/src/github.com/hyperledger/fabric-samples/bin

然后执行 source /etc/profile 使之生效
通过

peer version

命令来验证你的二进制文件,以及环境变量的配置是否成功,出现版本信息,说明安装成功.

①启动fabcar网络

a进入目录

cd fabric-samples/fabcar/

b启动脚本

./startFabric.sh 

c进入目录

 cd javascript

d执行命令,(此命令执行可能报错, 后面有解决方案)

npm install

在执行命令之前,要确保你的环境已经安装了g++, 如果没有安装,或有包括提示需要安装g++ ,  执行

centos:

yum -y install gcc+ gcc-c++

ubuntu:

apt-get install g++

另外,如果执行npm install 命令报错

NPM Unexpected end of JSON input while parsing near xxxxxxxxxxxxxx

解决办法:

first:

npm install --registry=https://registry.npm.taobao.org --loglevel=silly

then:

npm cache clean --force

安装好之后,执行

node enrollAdmin.js 

 如果出现这种报错

 按照提示命令执行一下即可,成功之后的显示为:Successfully enrolled admin user "admin" and imported it into the wallet

然后依次执行

node registerUser.js 
node query.js

执行成功的显示结果是

这是说明第一个简单的网络已经启动成功了,这个网络想对叫简单,仅有一个peer一个orderer和一个ca,可以通过

docker ps

命令来查看,

②启动first-network

切换目录,至first-network

cd ../../first-network/

关掉前面启动的网络

./byfn.sh down

启动网络

./byfn.sh up

出现这个画面

说明网络环境搭建成功

笔者尽量将过程记录的详细, 不过由于搭建过程确实比较复杂, 所以不免有所疏漏,如果有问题,或是描述不清的地方,请留言告知,笔者尽量给与回复

Logo

更多推荐