Hyperledger Fabric v1.0 环境搭建

Hyperledger Fabric 是 IBM 的开源区块链项目。它是一个完整的联盟链的实现。

本文介绍如何搭建 Hyperledger Fabric 开发环境。

不同于官方文档,本文大部分内容在官方文档中是没有的。

环境依赖

在搭建开发环境之前,我们需要了解一下所需的软件工具:

  • Linux 操作系统
  • curl
  • Git
  • Docker + Docker Compose
  • Go 编程语言
  • Node.js + NPM

稍后将会详细介绍如何安装它们。

关于 Windows 下开发的简短说明

警告:

为了节省您的时间,快速进入开发阶段,请尽量避免在 Windows 下搭建开发环境。

如果您真的希望在 Windows 下搭建开发环境,请不要尝试使用 Windows Subsystem for Linux。截止至本文写作之时,Windows Subsystem for Linux 依然存在大量的问题,尤其是网络方面。另外,请使用Windows 10 专业版以上的操作系统,并安装 Hyper-V。

在 Windows 下,您将会遇到这样的问题:

  • 路径转换错误,或无法识别
  • Docker 挂载本地目录突然无法访问
  • shell 脚本出现莫名其妙的找不到文件或者语法错误等问题
  • 有些时候,Hyperledger Fabric 无法生成创世块,并且用 Google 英文搜索依然找不到解决方案

如果您非常热衷于折腾 Windows,并且您认为您可以解决上述问题,为了节省您的时间,在安装好各种工具之后,请先做如下配置:

 # 关闭换行符转换
 git config --global core.autocrlf false
 # 支持长路径
 git config --global core.longpaths true
 # 安装 MSVC 编译器、Windows SDK 和 Python 2.7
 npm install --global windows-build-tools
 # 安装 GRPC,请翻墙后操作
 npm install --global grpc

 # 然后请手动设置环境变量 MSYS_NO_PATHCONV = 1

最后,请点击 这里 下载 OpenSSL 二进制文件,请务必选择 1.0.2 版本。

安装 Linux

我们的开发环境是搭建在 Linux 操作系统之上的。

Hyperledger 官方开发人员使用的环境是:

  • 在 Retina Macbook Pro 上安装 Vagrant + VirtualBox,并在其中安装 Ubuntu LTS 16.04.1
  • 编写代码的 IDE 安装在 MacOS 上,使用的 IDE 是 JetBrains IDEA
  • 通过 vagrant ssh 进入开发环境

仅供参考。

您也可以在 Windows 和 MacOS 下搭建开发环境,本文不详细介绍 Windows 和 MacOS 开发环境的搭建。

本文将以 Deepin Linux 15.4.1 为基础,介绍如何搭建 Linux 开发环境。

作者推荐使用 Deepin Linux。请下载 64 位版本。

然后您可以开始安装了。您可以选择安装在您的电脑上,或者安装在虚拟机里。根据您的喜好和需求自行选择。这些发行版都具有图形安装界面,根据界面提示进行操作即可。

注意:

如果您使用 VMWare,无论是什么发行版,在部署 chaincode-docker-devmode 里的环境时,会出现跟 GRPC 有关的错误。推荐使用 VirtualBox,记得开启3D加速。

直接在电脑上安装是最好的选择,作者是这么做的。

安装过程中,请注意:

  • 为了减少折腾,请勿选择 XFS 文件系统,建议使用 Ext4
  • 为了改善性能和避免可能会出现的文件系统损坏/文件丢失的情况,请尽量不要选择 Btrfs 文件系统

安装完成后请进行这些操作:

  • 刷新软件源缓存
  • 更新系统

刷新缓存&更新系统:

sudo apt update
sudo apt upgrade

本文写作前两个星期时,Systemd 存在一个 BUG,会导致无法执行 docker run 和 docker exec 命令。本文写作时已修复,请更新系统避免此问题。

安装依赖

安装基础设施

sudo apt install git vim curl wget libssl-dev build-essential

安装 Go 语言并配置

# 安装 Golang,目前源里为 1.8 版本
sudo apt install golang

# 配置 GOROOT 和 GOPATH
sudo -i
touch /etc/profile.d/golang.sh
cat > /etc/profile.d/golang.sh <<EOF
export GOROOT=/usr/lib/go
export GOPATH=\$HOME/go
export PATH=\$PATH:\$GOROOT/bin:\${GOPATH//://bin:}/bin
EOF
exit
# 创建 GOPATH 目录
mkdir ~/go

这里配置了两个 GOPATH 目录,其中 ~/go 作为安装第三方库使用的, ~/GoProjects 作为存放自己开发的项目使用的。

安装 Node.js

我们使用 NVM 安装 Node.js,从此不必再辛苦地下载源码编译安装了。

这里使用一些技巧使得 NVM 和 Node.js 全局可用:

sudo mkdir /usr/local/nvm
# 加上读写执行权限,使 Node.js 免 root
sudo chmod 0777 /usr/local/nvm
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.5/install.sh | NVM_DIR=/usr/local/nvm bash

然后打开用户目录下的 .bashrc 文件:

vim ~/.bashrc

删除类似于下面的内容,移动光标到第一行开头敲三次dd,然后敲Shift+ZZ:

export NVM_DIR="/usr/local/nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

创建 nvm 初始化脚本:

sudo -i
touch /etc/profile.d/nvm.sh
cat > /etc/profile.d/nvm.sh <<EOF
export NVM_DIR="/usr/local/nvm"
[ -s "\$NVM_DIR/nvm.sh" ] && \. "\$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "\$NVM_DIR/bash_completion" ] && \. "\$NVM_DIR/bash_completion"  # This loads nvm 
EOF
exit

使其在 bash 启动时加载,其他 shell 请根据实际情况配置:

sudo -i
echo source /etc/profile.d/nvm.sh >> /etc/bash.bashrc
exit

如果您使用 zsh,可以替换 /etc/bash.bashrc 为 /etc/zsh/zshrc。目前作者使用的是 zsh。

用 nvm 安装 node.js:

source /etc/profile.d/nvm.sh
nvm install 6.11.3

即可完成 Node.js 的安装。此时,node 和 npm 命令应该可以使用了。

安装 Docker

添加官方源,然后直接安装:

sudo apt install apt-transport-https ca-certificates gnupg2 software-properties-common
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian stretch stable"
sudo apt update
sudo apt install docker-ce docker-compose

设置当前用户,加入 Docker 用户组,即可免 Root 使用 Docker:

sudo usermod -aG docker $USER

然后到 DaoCloud 上注册一个账号,建议直接使用 GitHub 账号登录。注册登录后打开 DaoCloud加速器,记下 sh -s 后面的网址。

修改 Docker Daemon 配置文件:

sudo vim /etc/docker/daemon.json

写上:

{
    "registry-mirrors": [
        "上面记下的地址"
    ],
    "insecure-registries": []
}

保存退出,重启系统。

安装 Hyperledger Fabric

我们可以使用官方提供的脚本一键安装,他们可以在这里找到。

这里以 v1.0 版为例:

# fabric 将会安装到用户目录下的 fabric 目录中
mkdir ~/fabric
cd ~/fabric
curl -sSL https://raw.githubusercontent.com/hyperledger/fabric/release/scripts/bootstrap-1.0.0.sh | bash

跟Fabric有关的二进制文件将会安装到 ~/fabric/bin 下面。需要等待一段时间。

我们可以再开一个终端窗口,接着做其他事情:

# 设置 fabric 环境变量
sudo touch /etc/profile.d/fabric.sh
sudo -i
cat > /etc/profile.d/fabric.sh <<EOF
export PATH=\$PATH:\$HOME/fabric/bin
EOF
exit
# 下载 fabric-samples 到用户目录下的 git 目录中
mkdir ~/git
cd ~/git
git clone https://github.com/hyperledger/fabric-samples.git

等待每个窗口都下载完毕之后,注销当前用户,然后重新登录,安装完成。

开启 Chaincode 开发环境

打开终端,输入:

cd ~/git/fabric-samples/chaincode-docker-devmode/
docker-compose -f docker-compose-simple.yaml up

新建一个标签,用于编译和运行链码,输入:

docker exec -it chaincode bash

再新建一个,用于测试链码:

docker exec -it cli bash

整个开发环境搭建并启动完毕,您可以选择喜欢的 IDE 或者文本编辑器来编写并测试您的程序了。

发表评论