Ubuntu 16.04 操作系统 [1],本文作者在VirtualBox虚拟机下运行Ubuntu 16.04操作系统 [2].
根据Hyperledger的官方文档 [3] 要求,正式运行Hyperledger之前,需要预先安装好cURL
, go
, node.js
, npm
, python
和docker
。下面我们依次安装上述六大依赖模块。
2.1. 安装cURL模块
官方文档要求安装最新版本的cURL。
在cURL的官网找到最新的版本curl-7.64.1.tar.gz。
$ cd Downloads
$ wget https://curl.haxx.se/download/curl-7.64.1.tar.gz
$ tar -xvf curl-7.64.1.tar.gz
$ cd curl-7.64.1
$ ./configure
$ make
$ sudo make install
删除安装包。
$ cd Downloads
$ rm -rf curl-7.64.1.tar.gz
$ rm -rf curl-7.64.1
查看cURL的版本。
$ curl --version
curl 7.47.0 (x86_64-pc-linux-gnu) libcurl/7.47.0 GnuTLS/3.4.10 zlib/1.2.8 libidn/1.32 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp
Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP UnixSockets
如果cURL发生curl: symbol lookup error错误,请重装openssl和curl。
2.2. 安装go模块
官方文档建议安装1.9.x版本的Go。不建议安装1.8.x版本的Go。
删除旧版本的Go。
$ sudo apt-get remove golang-go
$ sudo apt-get remove --auto-remove golang-go
$ go version
-bash: /usr/bin/go: No such file or directory
在Go的官网找到1.9版本go1.9.7.linux-amd64.tar.gz。
$ cd Downloads
$ wget https://dl.google.com/go/go1.9.7.linux-amd64.tar.gz
$ tar -xzf go1.9.7.linux-amd64.tar.gz
$ sudo mv go /usr/local
配置系统环境变量。
$ sudo vi ~/.bashrc
末尾添加下面一行。
export PATH=$PATH:/usr/local/go/bin
保存退出,立即生效。
$ source ~/.bashrc
查看版本信息。
$ go version
另外,创建go的工作路径,作为go get等命令的默认工作路径,如下,
$ cd $HOME
$ mkdir go
$ cd go
$ mkdir bin
配置工作路径,如下,
$ sudo vi ~/.bashrc
末尾追加下面两行。
export GOPATH=$HOME/go
export PATH=$PATH:$HOME/go/bin
保存退出,立即生效。
$ source ~/.bashrc
2.3. 安装node.js模块
官方文档建议安装8.9.x版本的Node.js。不建议安装9.x版本的Node.js。
安装8.16.0版的Nodejs
$ curl -sL https://deb.nodesource.com/setup_8.x -o nodesource_setup.sh
$ sudo bash nodesource_setup.sh
$ sudo apt-get install nodejs
更新npm。官方文档建议通过如下命令更新。
$ sudo npm install [email protected] -g
$ npm --version
6.9.0
更新Nodejs版本至8.9.4。
$ wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | bash
$ // 关闭当前终端。重新打开一个终端,然后,执行后续命令
$ sudo npm -g install nvm
$ nvm ls available
$ nvm install 8.9.4
$ nvm use 8.9.4
查看node.js的版本。
$ node -v
v8.9.4
2.5. 安装python模块
官方文档建议使用python2.7确保npm install的成功运行。
$ sudo apt-get install python
2.6. 安装Docker ce模块
官方文档建议使用17.06.2及以上版本的Docker ce。1.14.0及以上版本的Docker Compose。
根据Docker ce安装教程。
$ sudo apt-get install docker
$ sudo apt-get install docker.io
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
$ sudo apt-get update
$ apt-cache policy docker-ce
$ sudo apt-get install -y docker-ce
$ sudo apt-get install docker-compose
$ sudo apt-get upgrade
注意:此处如果出现“apt-get update” "fails to fetch"的错误,请清空本地web缓存;否则略过。
$ apt-get clean
$ rm -rf /var/lib/apt/lists/
$ apt-get clean
$ apt-get update // 重新打开一个新的终端,再次执行更新
$ sudo apt-get update // 更新成功!
查询docker ce版本
$ docker version
Client:
Version: 18.09.6
API version: 1.39
Go version: go1.10.8
Git commit: 481bc77
Built: Sat May 4 02:35:27 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.6
API version: 1.39 (minimum version 1.12)
Go version: go1.10.8
Git commit: 481bc77
Built: Sat May 4 01:59:36 2019
OS/Arch: linux/amd64
Experimental: false
注意:此处如果出现下列错误 ‘Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.39/version: dial unix /var/run/docker.sock: connect: permission denied’,请添加regular user到docker用户组。否则,略过。
查询docker-compose版本
$ docker-compose --version
注意:此处如果出现docker-compose安装失败的问题,请根据官方安装指南再次安装。
下载Hyperledger Fabric Samples以及Docker镜像
$ curl -sSL https://goo.gl/6wtTN5 | bash -s 1.1.0
下载完毕之后,本地多了一个命名为fabric-samples
的文件夹,效果如下,
4.1. 进入first-network
文件夹
Ubuntu终端命令如下,
$ cd fabric-samples
$ cd first-network
4.2. 部署一个Hyperledger Fabric区块链网络
Ubuntu终端命令如下,
$ ./byfn.sh up
4.3. 关闭该Hyperledger Fabric网络
第一次运行first-network之后,Ubuntu终端关闭应用docker容器的命令如下;如果第一次不关闭,第二次启动first-network之前,需要先关闭该应用的docker容器再重启。
$ ./byfn.sh down
至此,Hyperledger Fabric之Samples中的first-network示例运行完毕!
[1. Ubuntu 16.04操作系统] http://releases.ubuntu.com/16.04/
[2. VirtualBox虚拟机] https://www.virtualbox.org/wiki/Downloads
[3. Hyperledger Fabric官方文档] https://hyperledger-fabric.readthedocs.io/en/release-1.4/
[备注一] 初稿,2019年01月25号。
[备注二] 二稿,2019年07月14号。添加Go的默认源代码路径/usr/local/go/bin,Go的默认工作路径$HOME/go,Go的默认工作路径中的bin路径$HOME/go/bin——三大路径的配置工作。完美测试通过。