当前位置首页 > Fedora知识

Fedora25-64位操作系统中安装配置HyperledgerFabric过程

阅读次数:232 次  来源:admin  发布时间:

安装过程参照Hyperledger Fabric的官方文档,文档地址:http://hyperledger-fabric.readthedocs.io/en/latest/prereqs.html

0x00 环境介绍,升级系统软件

搭建了一个vm,操作系统版本:

[root@fd240 ~]# cat /proc/versio

Linux version 4.11.5-200.fc25.x86_64 (mockbuild@bkernel02.phx2.fedoraproject.org) (gcc version 6.3.1 20161221 (Red Hat 6.3.1-1) (GCC) ) #1 SMP Wed Jun 14 17:17:29 UTC 2017

搭建完毕,配置好网络后,升级系统软件:

[root@fd240 ~]# dnf update

0x01 安装依赖项

安装docker

此步骤参照官方文档:https://docs.docker.com/engine/installation/linux/fedora/#os-requirement

基本步骤如下:

添加docker的源:

$ sudo dnf config-manager \
    --add-repo \
    https://download.docker.com/linux/fedora/docker-ce.repo

更新dnf的包的索引:

sudo dnf makecache fast

安装:

 sudo dnf install docker-ce

至少需要 Docker v1.12 以上版本。安装完之后检查版本号:

[root@fd240 ~]# docker -v

Docker version 17.03.1-ce, build c6d412e

然后安装docker-compose:

使用curl方式安装,安装过程中会出错,安装过程及解决办法参考我的这篇博客。

安装完毕后查看版本号:

[root@fd240 ~]# docker-compose versio

docker-compose version 1.14.0-rc2, build 24dae73

docker-py version: 2.3.0

CPython version: 2.7.13

OpenSSL version: OpenSSL 1.0.1t 3 May 2016

安装go:

go的下载需要FQ,我安装的是这个版本:https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz

下载完毕后,解压缩:

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

解压缩完毕后,配置环境变量:

[root@fd240 ~]# vim /etc/profile

增加下列配置:

export PATH=$PATH:/usr/local/go/bi

export GOPATH=$HOME/go

export PATH=$PATH:$GOPATH/bi

保存退出后,使之生效:

ource /etc/profile

安装node.js,目前只支持 6.9.x版本的node.js, 但是7.x不支持。

我安装的是这个版本:https://nodejs.org/dist/v6.11.0/node-v6.11.0.tar.gz

从上面的官方下载地址下载巨慢,我依然选择了正确的上网姿势。

下载完毕后,解压缩:

tar -xJvf node-v6.11.0-linux-x64.tar.xz

我是放到$HOME 下的,因为我使用的是root用户,所以是在/root目录下。这不是个好习惯,所以操作的时候你一定要谨慎,因为正如Fedora所说”权力越大,责任就越大“。

cd node-v6.11.0-linux-x64/

然后创建软连接:

ln -s /root/node-v6.11.0-linux-x64/bin/node /usr/local/bin/node

ln -s /root/node-v6.11.0-linux-x64/bin/npm /usr/local/bin/npm

然后更新npm:

m install npm@latest -g

查看已安装的node的版本:

[root@fd240 ~]# node -v

v6.11.0

0x02 安装Hyperledger Fabric

按照"搭建第一个网络"里的介绍来测试:

下面的这些步骤都需要你用正确的姿势上网, 我目前的搭配是: 安装ss的客户端,然后使用proxychains来代理shell, 安装proxychains的方法:http://www.tuicool.com/articles/rUNFF3

安装并设置完毕后, 运行:

roxychains4 bash

之后,你的本次shell会话中所有的连接都走了代理了.

好的,接下来继续:

迁出示例代码:

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

然后进入代码目录:

cd fabric-samples

然后下来安装二进制文件

curl -sSL https://goo.gl/PabWJX | bash

这个时间是看你和你的服务器之间的速度了, 等待结束即可,一定得确保你是用正确的姿势上网的,不然这两步你都没办法成功.

我下载的已经是rc1版本的包了,前几天同时的还是alpha和beta,并且官方文档也在同步更改.

我本地库里下载好的镜像:

[root@fd240 ~]# docker image ls
REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
hyperledger/fabric-tools       latest              85d6d3ca0a30        2 days ago          1.32 GB
hyperledger/fabric-tools       x86_64-1.0.0-rc1    85d6d3ca0a30        2 days ago          1.32 GB
hyperledger/fabric-kafka       latest              dbb5796d915f        2 days ago          1.3 GB
hyperledger/fabric-kafka       x86_64-1.0.0-rc1    dbb5796d915f        2 days ago          1.3 GB
hyperledger/fabric-zookeeper   latest              d2efbb01a999        2 days ago          1.31 GB
hyperledger/fabric-zookeeper   x86_64-1.0.0-rc1    d2efbb01a999        2 days ago          1.31 GB
hyperledger/fabric-orderer     latest              5ec6333eae10        2 days ago          179 MB
hyperledger/fabric-orderer     x86_64-1.0.0-rc1    5ec6333eae10        2 days ago          179 MB
hyperledger/fabric-peer        latest              cf6bedc2935e        2 days ago          182 MB
hyperledger/fabric-peer        x86_64-1.0.0-rc1    cf6bedc2935e        2 days ago          182 MB
hyperledger/fabric-javaenv     latest              7cbe6aca3956        2 days ago          1.42 GB
hyperledger/fabric-javaenv     x86_64-1.0.0-rc1    7cbe6aca3956        2 days ago          1.42 GB
hyperledger/fabric-ca          latest              cea779a46670        2 days ago          238 MB
hyperledger/fabric-ca          x86_64-1.0.0-rc1    cea779a46670        2 days ago          238 MB
hyperledger/fabric-ccenv       latest              13ed472038d2        2 days ago          1.29 GB
hyperledger/fabric-ccenv       x86_64-1.0.0-rc1    13ed472038d2        2 days ago          1.29 GB

0x03 测试

先进入first-network目录:

cd first-network

看一下脚本使用说明:

./byfn.sh -h

如果您选择不提供频道名称,则脚本将使用默认的mychannel名称。 CLI超时参数(用-t标志指定)是可选值; 如果您选择不设置它,则CLI脚本结束后将退出CLI容器。

创建:

./byfn.sh -m generate

日志在此.

启动:

./byfn.sh -m u

默认是60秒后退出. 使用-t 参数可以指定时间,例如:

./byfn.sh -m up -t 864000

日志在此

我这里在执行上面两条命令的时候都出现了一些警告信息.但是最终还是成功执行完毕了:

========= All GOOD, BYFN execution completed =========== 


 _____   _   _   ____   
| ____| | \ | | |  _ \  
|  _|   |  \| | | | | | 
| |___  | |\  | | |_| | 
|_____| |_| \_| |____/  

如果你想停止网络的话, 运行下面的命令即可,当然现在我们不停止,继续测试:

./byfn.sh -m down
[root@fd240 first-network]# ./byfn.sh -m down
Stopping with channel 'mychannel' and CLI timeout of '10000'
Continue (y/n)? y
proceeding ...
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 peer0.org1.example.com ... done
Stopping peer1.org1.example.com ... done
Stopping peer0.org2.example.com ... done
Stopping orderer.example.com ... done
Stopping peer1.org2.example.com ... done
Removing cli ... done
Removing peer0.org1.example.com ... done
Removing peer1.org1.example.com ... done
Removing peer0.org2.example.com ... done
Removing orderer.example.com ... done
Removing peer1.org2.example.com ... done
Removing network net_byfn
1529eb06e34a
b3a370df312e
273c5a467ebe
Untagged: dev-peer1.org2.example.com-mycc-1.0:latest
Deleted: sha256:8956d45d168352dea31d87f04edc1d9f34bc3ca0eb252b84cb44a607cf467e13
Deleted: sha256:a300ff593826845fc3f37020f7d58e7d437d7f73c6c4b65ea8c69917466b10c2
Deleted: sha256:e2dd4be84d6e44020ae7b5bdd39b79d79c27e0a9968accbaf836ad1343af84e9
Deleted: sha256:0e0313aa04f0bb0f36ad20dcc0ef7a551c3c367c33a494c5e612166887a7c034
Deleted: sha256:2bf6cb6e8ac1fb3ba3e57ba0c68c501a5ad33fed5e8c12499f30d5663d190062
Deleted: sha256:418485d6bf1587104a8da149f0aca34c39d2f918bbe46ebb99faff5c6e3fcb51
Deleted: sha256:888f5aa1c8a2ac0c77f603d4615596d029283cb7bde123eb091453c75fabd861
Untagged: dev-peer0.org1.example.com-mycc-1.0:latest
Deleted: sha256:b58a292485c9c5b4da68f386f16e68293acd359291de6b91366d91723ffb4539
Deleted: sha256:559e3d2ed00a62d04391098816f7e64fae22d570387e7803ce219e4dcf9740d8
Deleted: sha256:d4ef0076f7bd41a531adf905797ddf9adcef1293d08a70dbb5390b6fbdb9af8f
Deleted: sha256:353bc73b0c1820dad8a843dc45adcdac91fcfc60fb7b4b5a9285c135304ee000
Deleted: sha256:c3a93a92e095820188f28ec7c3da9321395440575a0ebddc6bb132611e67563f
Deleted: sha256:e5adc4ad9fb7421406a1569d289c2d28719fa0e701c0b11be2bc700c5055eb36
Deleted: sha256:c67868aa025bfa7d183c5a1ba247d69be1a27cda71965deb37dc1c457167d09d
Untagged: dev-peer0.org2.example.com-mycc-1.0:latest
Deleted: sha256:7b936afdf0318126c3717970e8de7a16f015357b1c7049a68e85e38fa4bae233
Deleted: sha256:699ed77d140a2ea756a3640deac9ffd974ffc6171255426c0733d8a69859e4d7
Deleted: sha256:abcee9f3c60732acfc3c7d4726880869c5b9baea4ac208a6c47c2103cbe6cf2e
Deleted: sha256:26729e91b6f4a9ab8178eb214faeec74cd06105c8e908125fbf2f111b8c8e0ca
Deleted: sha256:de987082ebc0969410072f3bf55bb1ca7f094b0e47540b23e905b483a8119e64
Deleted: sha256:9cfd630b066875bb3c9677fd67a905dfee4b4a8269b3d06cdc372da270569383
Deleted: sha256:d41355d4700c66467e926e121197428ae9150ca11369ca18caaa4b6b58cfcd89

进入节点的cli:

[root@fd240 first-network]# docker exec -it cli bash

root@33e3432d74b8:/opt/gopath/src/github.com/hyperledger/fabric/peer#

设置环境变量:

export CHANNEL_NAME=mychannel

yfn.sh中往这个 mychannel里初始化了两个变量,a和b, 默认值是90. 就类似执行了下列命令:

peer chaincode instantiate -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C $CHANNEL_NAME -n mycc -v 1.0 -c '{"Args":["init","a", "100", "b","200"]}' -P "OR ('Org1MSP.member','Org2MSP.member')"

下面我们执行一些操作:

查询:

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

应该返回90

减10:

peer chaincode invoke -o orderer.example.com:7050  --tls $CORE_PEER_TLS_ENABLED --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem  -C $CHANNEL_NAME -n mycc -c '{"Args":["invoke","a","b","10"]}'

应该返回200 OK

再查询:

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

应该返回80

升级1.0.0之后遇到的问题:

在执行

./byfn.sh -m u

时,遇到一个错误提示:

[root@fedora26test first-network]# ./byfn.sh -m up
Starting with channel 'mychannel' and CLI timeout of '10000'
Continue (y/n)? y
proceeding ...
Starting peer1.org2.example.com ... 
Starting peer1.org1.example.com ... 
Starting peer1.org2.example.com
Starting peer0.org2.example.com ... 
Starting peer1.org1.example.com
Starting peer0.org2.example.com
Starting peer0.org1.example.com ... 
Starting orderer.example.com ... 
Starting peer0.org1.example.com
Starting peer1.org2.example.com ... done
Starting cli ... 
Starting cli ... done
/bin/bash: ./scripts/script.sh: Permission denied

我尝试把所有文件及子文件夹的权限都改为777,重新尝试执行脚本依然报这个错误。于是就怀疑是否是SELinux的问题,打开Fedora的SELinux的错误报告程序,果然发现了,关掉SELinux,重启机器,OK。

上一篇:linux内核里的字符串转换,链表操作常用函数(转)
下一篇:ubuntu14.04terminator字体挤在一起问题