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! 进本的依赖环境已经介绍完了 ,下面介绍一下如何安装,因为可能有些人不会安装,导致运行失败挺可惜的。
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
只需要一个命令:
snap install docker
此命令执行不成功的 , 可以参考我的另一篇博客
验证是否安装成功
安装包下载地址为: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是否安装成功
不安装nodejs 也可以将环境搭建成功, 安装nodejs是为了搭运行官方提供的nodesdk
版本号必须是8.x
执行命令
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install nodejs
即可,使用node -v 命令验证安装成功共与否。
python的安装与否不影响网络环境的搭建, 只是node执行npm命令的时候需要用,如果没有安装nodejs 就不必安装python
如果是Ubuntu的话,安装Python很简单 , 只需要一条命令
sudo apt-get install python
即可,安装完成后,通过python --version 查看一下Python的版本号 必须是2.7.x
OK,如果你已经严格按照如上所说的步骤全部成功完成了的话,那么恭喜你,你已经把hyperledger fabric的依赖环境安装好了, 对于hyperledger fabric项目的搭建你已经成功了60% , 跟着教程继续走下去吧.
官方提供了一个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目录)
git clone -b v1.4.3 https://github.com/hyperledger/fabric-samples
首先进入fabric-samples文件夹, 然后下载二进制文件并解压 , 由于官方提供的文件下载速度慢, 我这里提供了一份压缩好的二进制文件 ,点击下载 , 方便大家进行下载.解压之后在fabric-samples目录下会形成bin和config目录.
然后执行如下命令,赋予bin目录下的文件可执行权限 ,
chmod +x bin/*
如果你成功执行了bootstrap.sh脚本 , 直接进行下面的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
出现这个画面
说明网络环境搭建成功