linux使用fabric教程,在centos7下安装fabric的步骤

下面演示在centos7系统下安装fabric的具体步骤。

0.权限

登录管理员权限

$ sudo -s

1.基本工具

git:

$ yum install git

curl:

$ yum install curl

pip:

$ yum -y install epel-release

$ yum install python-pip

$ pip install --upgrade pip

2.通用语言

2.1.Docker:

1].更新软件包

$ yum update

2].卸载旧版本

如果有的话,卸载旧版本

$ yum remove docker  docker-common docker-selinux docker-engine

3].安装需要的软件包

yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

$ yum install -y yum-utils device-mapper-persistent-data lvm2

4].设置yum源

$ yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

5].查看所有docker版本

$ yum list docker-ce --showduplicates | sort -r

6].安装docker

$ yum install docker-ce

可安装最新版

$ yum install

可指定要安装的版本,例如docker-ce-17.12.0.ce

7].验证安装是否成功

$ docker version

[root@hadoop ~]# docker version

Client:

Version:   18.03.0-ce

API version:   1.37

Go version:    go1.9.4

Git commit:    0520e24

Built: Wed Mar 21 23:09:15 2018

OS/Arch:   linux/amd64

Experimental:  false

Orchestrator:  swarm

Server:

Engine:

Version:  18.03.0-ce

API version:  1.37 (minimum version 1.12)

Go version:   go1.9.4

Git commit:   0520e24

Built:    Wed Mar 21 23:13:03 2018

OS/Arch:  linux/amd64

Experimental: false

8].启动并加入开机启动

$ systemctl start docker

$ systemctl enable docker

2.2.docker-compose

$ pip install docker-compose

$ docker-compose -version

[root@hadoop ~]# docker-compose -version

docker-compose version 1.20.1, build 5d8c71b

2.3.go语言

1].下载安装包

可前往这里下载最新版安装包

2].解压

$ tar -C /usr/local -zxf go1.10.1.linux-amd64.tar.gz

3].配置环境变量

$ vim /etc/profile

写入:

#go

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

4].查看go语言版本

运行:$ go version

[root@hadoop test1]# go version

go version go1.10.1 linux/amd64

2.4.Node.js

1].下载Node.js

选择下载Node.js对应版本。

笔者选用:

$ wget https://npm.taobao.org/mirrors/node/v9.9.0/node-v9.9.0.tar.gz

2].解压

$ tar -C /usr/local -xzf node-v9.9.0.tar.gz

3].安装编译软件

运行:$ yum install gcc gcc-c++

运行:$ gcc -v

[root@hadoop test1]# gcc -v

使用内建 specs。

COLLECT_GCC=gcc

COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper

目标:x86_64-redhat-linux

配置为:../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux

线程模型:posix

gcc 版本 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC)

4.8.5版本过低,若已为最新版请跳过至步骤,升级gcc,前往这里下载你想要的版本,笔者选择gcc-7.3.0。

$ wget http://ftp.gnu.org/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz

$ tar -C /usr/local -xzf gcc-7.3.0.tar.gz

$ cd /usr/local/gcc-7.3.0

$ ./contrib/download_prerequisites

$ mkdir build

$ cd build

$ ../configure -enable-checking=release -enable-languages=c,c++ disable-multilib

$ yum groupinstall "Development Tools"

$ make           #这个步骤是真的耗时长,建议你去跑几圈锻炼下身体

$ make install

$ reboot           #一定要记得重启

重启系统。

运行:$ gcc -v

[root@hadoop test1]# gcc -v

使用内建 specs。

COLLECT_GCC=gcc

COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper

目标:x86_64-redhat-linux

配置为:../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux

线程模型:posix

gcc 版本 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC)

[root@hadoop test1]#

升级成功。

4].继续安装nodejs

$ sudo -s

$ cd /usr/local/node-v9.9.0/

$ ./configure

$ make              #同样需要等待30分钟左右

$ make install

$ reboot

重启后

运行:$ node -v

[test1@hadoop ~]$ node -v

v9.9.0

[test1@hadoop ~]$

安装成功!

2.5.npm

运行:$ npm install npm -g

运行:$ npm -v

[root@hadoop test1]# npm -v

5.8.0

[root@hadoop test1]#

3.fabric

1].下载fabric源码

$ mkdir -p ~/go/src/github.com/hyperledger

$ cd ~/go/src/github.com/hyperledger

$ git clone https://github.com/hyperledger/fabric.git

由于Fabric一直在更新,所有我们并不需要最新最新的源码,需要切换到v1.0.0版本的源码即可:

$ cd ~/go/src/github.com/hyperledger/fabric

$ git checkout v1.0.0

2].下载docker镜像

$ cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/

$ source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0

这样就可以下载所有需要的Fabric Docker镜像了。由于我们设置了国内的镜像,所以下载应该是比较快的。

下载完毕后,我们运行以下命令检查下载的镜像列表:

[root@hadoop e2e_cli]# docker images

5e12187b5274e5835fdfdc61f93ad792.png

3].启动Fabric网络并完成ChainCode的测试

我们仍然停留在e2e_cli文件夹,这里提供了启动、关闭Fabric网络的自动化脚本。我们要启动Fabric网络,并自动运行Example02 ChainCode的测试,执行一个命令:

$ ./network_setup.sh up

这个做了以下操作:

1).编译生成Fabric公私钥、证书的程序,程序在目录:fabric/release/linux-amd64/bin

2).基于configtx.yaml生成创世区块和通道相关信息,并保存在channel-artifacts文件夹。

3).基于crypto-config.yaml生成公私钥和证书信息,并保存在crypto-config文件夹中。

4).基于docker-compose-cli.yaml启动1Orderer+4Peer+1CLI的Fabric容器。

5).在CLI启动的时候,会运行scripts/script.sh文件,这个脚本文件包含了创建Channel,加入Channel,安装Example02,运行Example02等功能。

最后运行完毕,我们可以看到这样的界面:

debef7074c9f679e0e1fe6cb7e615dfe.png

如果您看到这个界面,这说明我们整个Fabric网络已经通了。

4].测试fabric网络

我们仍然是以现在安装好的Example02为例,在官方例子中,channel名字是mychannel,链码的名字是mycc。我们首先进入CLI,我们重新打开一个命令行窗口,输入:

$ docker exec -it cli bash

运行以下命令可以查询a账户的余额:

$ peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'

root@229d9708f2d6:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'

2018-07-13 13:37:15.815 UTC [msp] GetLocalMSP -> DEBU 001 Returning existing local MSP

2018-07-13 13:37:15.815 UTC [msp] GetDefaultSigningIdentity -> DEBU 002 Obtaining default signing identity

2018-07-13 13:37:15.815 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 003 Using default escc

2018-07-13 13:37:15.815 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 004 Using default vscc

2018-07-13 13:37:15.816 UTC [msp/identity] Sign -> DEBU 005 Sign: plaintext: 0A91070A6708031A0C088BCD98D60510...6D7963631A0A0A0571756572790A0161

2018-07-13 13:37:15.816 UTC [msp/identity] Sign -> DEBU 006 Sign: digest: 92EC67AE9246EEBC7ED4A0CD7791A0CBD0DAF527DD551571599719EEF2E5841E

Query Result: 90

2018-07-13 13:37:15.828 UTC [main] main -> INFO 007 Exiting.....

看到query result:90

然后,我们试一试把a账户的余额再转20元给b账户,运行命令演示如下图所示:

1b1d6eae6985ca18c4fe8082b41d51c7.png

2018-07-13 13:37:41.751 UTC [msp] GetLocalMSP -> DEBU 001 Returning existing local MSP

2018-07-13 13:37:41.751 UTC [msp] GetDefaultSigningIdentity -> DEBU 002 Obtaining default signing identity

2018-07-13 13:37:41.755 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 003 Using default escc

2018-07-13 13:37:41.755 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 004 Using default vscc

2018-07-13 13:37:41.756 UTC [msp/identity] Sign -> DEBU 005 Sign: plaintext: 0A91070A6708031A0C08A5CD98D60510...696E766F6B650A01610A01620A023230

2018-07-13 13:37:41.756 UTC [msp/identity] Sign -> DEBU 006 Sign: digest: DAEF933C0B4BD92307A73AAFBA3DB948F9E81E88DE4EB9C487259714048D8E0E

2018-07-13 13:37:41.786 UTC [msp/identity] Sign -> DEBU 007 Sign: plaintext: 0A91070A6708031A0C08A5CD98D60510...7E0DF0FFBE4100C6C5B7253BFD8566E2

2018-07-13 13:37:41.786 UTC [msp/identity] Sign -> DEBU 008 Sign: digest: E8808985B5D74D1018E15F5256CBB0FEBE6845060583E1B08E2E1FD958006ED5

2018-07-13 13:37:41.791 UTC [chaincodeCmd] chaincodeInvokeOrQuery -> DEBU 009 ESCC invoke result: version:1 response:<200 message:> payload:"\...\342" >200>

2018-07-13 13:37:41.792 UTC [chaincodeCmd] chaincodeInvokeOrQuery -> INFO 00a Chaincode invoke successful. result: status:200

2018-07-13 13:37:41.792 UTC [main] main -> INFO 00b Exiting.....

看到 INFO 00a Chaincode invoke successful. result: status:200

再查询a账户余额:

$ peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'

root@229d9708f2d6:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'

2018-07-13 13:37:53.579 UTC [msp] GetLocalMSP -> DEBU 001 Returning existing local MSP

2018-07-13 13:37:53.579 UTC [msp] GetDefaultSigningIdentity -> DEBU 002 Obtaining default signing identity

2018-07-13 13:37:53.579 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 003 Using default escc

2018-07-13 13:37:53.579 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 004 Using default vscc

2018-07-13 13:37:53.580 UTC [msp/identity] Sign -> DEBU 005 Sign: plaintext: 0A91070A6CD98D60510...6D7963631A0161

2018-07-13 13:37:53.580 UTC [msp/identity] Sign -> DEBU 006 Sign: digest: 7D79EF8603230FBA1B449A27FD1EF0BE8AE9

Query Result: 70

2018-07-13 13:37:53.590 UTC [main] main -> INFO 007 Exiting.....

root@229d9708f2d6:/opt/gopath/src/github.com/hyperledger/fabric/peer#

变为了70。

到此一切正常。

5].关闭网络

最后我们要关闭Fabric网络,首先需要运行exit命令退出cli容器。关闭Fabric的命令与启动类似,命令为:

运行:$ exit

运行:$ cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli

运行:$ ./network_setup.sh down

[root@hadoop e2e_cli]# ./network_setup.sh down

setting to default channel 'mychannel'

WARNING: The CHANNEL_NAME variable is not set. Defaulting to a blank string.

WARNING: The TIMEOUT variable is not set. Defaulting to a blank string.

Stopping cli                    ... done

Stopping peer0.org1.example.com ... done

Stopping peer1.org1.example.com ... done

Stopping orderer.example.com    ... done

Stopping peer1.org2.example.com ... done

Stopping peer0.org2.example.com ... done

Removing cli                    ... done

Removing peer0.org1.example.com ... done

Removing peer1.org1.example.com ... done

Removing orderer.example.com    ... done

Removing peer1.org2.example.com ... done

Removing peer0.org2.example.com ... done

Removing network e2ecli_default

d96900372d3c

02cf5b58c8d1

081f2ff90a3e

Untagged: dev-peer1.org2.example.com-mycc-1.0:latest

Deleted: sha256: d79810766ed3b93f0b4f8347d8ba07a6b049ee

Deleted: sha256: 3256f508809df7e770b4046506be5ea0dd4f70

Deleted: sha256: d9a333101acbf87bef80e9ae845e5ad07e4c38

Deleted: sha256: 45164aa46fd054c276db82bf65a414da1fdf43

Deleted: sha256: 057af6ec45262408b3f4b7ae897ff839433e17

Deleted: sha256: 2140d0e5697c2f4efd1a1be9ecd3b0c0e140e0

Deleted: sha256: 1589200c0494571bc49a3efe67750d919ea619

Untagged: dev-peer0.org1.example.com-mycc-1.0:latest

Deleted: sha256: 67155cb00497bd398323db0730c1130af72e77

Deleted: sha256: 8aa713e11e4474fcc6029cb010058206d5bf81

Deleted: sha256: 955298af8156d591ff11d9060f979fc7f1a650

Deleted: sha256: 3fde7086356e72f8dda3d88bdb08ff51854d7c

Deleted: sha256: db32c7e813ba3ec0305b33679a97946fb685b7

Deleted: sha256: 680a7996e8d994d4b6597f0a01e74980ded89c

Deleted: sha256: 5bc478d7aff121341751a5eb61c98d282d055d

Untagged: dev-peer0.org2.example.com-mycc-1.0:latest

Deleted: sha256: 4fb0e99c0f1d2aa1bc8bee3dfa1b4ccb69a20a

Deleted: sha256: 5788b7f5ffceccf08f67c83d6c00ae73f782a3

Deleted: sha256: 945c3684ff06a1a1bc96c2999a443e92110f9e

Deleted: sha256: c432a68d6c3c671527796e402d6ec12011f1e0

Deleted: sha256: 1ed302def51d694a877a1b28630bd4b94a9a53

Deleted: sha256: 78e57818eec78e8f244cde5a757885e202c44a

Deleted: sha256: 1fd56da419d7fd9fa0f0e8b7274efb5d7b9082

[root@hadoop e2e_cli]#

结束语

到此整个安装测试结束,此篇仅为测试fabric框架在centos 7中的安装测试。中间问题无数,如:

1.go语言需要设置GOPATH、GOROOT环境变量,否则运行./network_setup.sh up命令会出现找不到mycc链。

2.node.js需要gcc编译支持,而yum install安装的gcc版本过低,不能顺利安装,因此需要对gcc版本升级,而升级的时候make实在实在实在太慢了!

3.docker镜像安装,最好在后面写入版本信息,否则下载的可能与git checkout所对应版本不一致,./network_setup.sh up命令时会出现各类奇葩问题。

相关主题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值