美文网首页区块链从入门到精通
【Hyperledger第二讲】:Ubuntu 16.04部署h

【Hyperledger第二讲】:Ubuntu 16.04部署h

作者: 洞链 | 来源:发表于2019-03-13 10:17 被阅读0次

    准备环境

    操作系统:阿里云Ubuntu16.04
    Git、Golang
    Docker环境支持:docker、docker-compose
    Fabric组件Docker镜像
    Fabric源码库

    安装步骤

    • 更新系统软件
    sudo apt-get update
    

    安装Git

    sudo apt install git
    
    • 查看git版本信息
    git version
    

    安装docker

    参考文档:
    https://docs.docker.com/install/linux/docker-ce/ubuntu/
    https://yq.aliyun.com/articles/110806
    
    • 自动安装
    curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
    
    • 查看docker版本
    docker version
    
    docker version
    • 设置阿里云docker镜像加速器
    网址:https://cr.console.aliyun.com/mirrors
    

    安装docker-compose

    参考文档:
    https://docs.docker.com/compose/install/
    最新版地址:
    https://github.com/docker/compose/releases/
    
    sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    
    • 授权
    sudo chmod +x /usr/local/bin/docker-compose
    
    • 查看版本信息
    docker-compose --version
    
    docker-compose --version
    • 创建docker用户组
    sudo groupadd docker
    
    • 将当前用户添加到用户组(${USER}为自己当前的用户名)
    sudo usermod -aG docker ${USER}
    
    • 重启docker
    sudo systemctl restart docker
    
    • 切换或者退出当前账户再重新登入
    su root             #切换到root用户
    su ${USER}          #再切换到原来的应用用户以上配置才生效
    

    安装golang

    • 访问国内此网站下载最新Linux稳定版的golang
    中文社区网址:https://studygolang.com/dl
    获取安装包:wget https://dl.google.com/go/go1.11.linux-amd64.tar.gz
    
    • 使用tar命令把安装包解压缩/usr/local文件夹下面
    tar -zxvf go1.11.linux-amd64.tar.gz -C /usr/local
    
    • 设置环境变量
    sudo vim /etc/profile
    
    • 添加内容,其中go的安装目录是/usr/local/go,go的工作目录是/home/go
    export GOPATH=/home/go
    export GOROOT=/usr/local/go
    export PATH=$GOROOT/bin:$PATH
    
    • 使用source命令,使其配置信息生效
    source /etc/profile
    
    • 查看go的版本信息
    go version
    
    • 查看go的具体配置信息
    go env
    
    • 创建go目录
    mkdir -p /home/go
    
    • 进入go项目路径
    cd  $GOPATH
    

    Fabric部署

    • 在/home/go下创建目录
    mkdir -p /home/go/src/github.com/hyperledger
    cd /home/go/src/github.com/hyperledger
    
    • 进入 fabric 目录查看版本分支并切换分支
    cd fabric
    git branch
    此处选择对应版本或公开发行版,我选择v1.1.0
    git checkout v1.1.0
    

    Fabric的Docker镜像下载

    • 进入fabrci/examples/e2e_cli/目录,完成镜像下载,执行命令:
    cd /home/go/src/github.com/hyperledger/fabrci/examples/e2e_cli/
    ls
    
    source download-dockerimages.sh -c {tags:输版本号} -f {tags:输版本号}
    source download-dockerimages.sh -c x86_64-1.1.0 -f x86_64-1.1.0
    docker images
    
    docker images

    启动Fabric并自动完成chaincode测试

    • 进入刚刚的e2e_cli文件目录,执行
    ./network_setup.sh up
    
    image

    显示END-E2E表示测试成功

    官方通过chaincode手动测试Fabric案例

    • 重新打开一个窗口,在fabric目录下输入
    docker exec -it cli bash
    
    image
    • 再输入
    peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
    
    • 图例显示a结果90
    • a给b转账50
    peer chaincode invoke -o orderer.example.com:7050 --tls true --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 mychannel -n mycc -c '{"Args":["invoke","a","b","50"]}'
    
    • 再执行查询语句,此时结果为40
    peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
    
    • 最后,如果打算退出网络,先执行
    exit
    
    • 在刚才fabric/examples/e2e_cli目录下执行
    ./network_setup.sh down
    

    FAQ

    1. 阿里云服务器,Ubuntu 报错 sudo: unable to resolve host
    解决方案:https://blog.csdn.net/hhtnan/article/details/79551969
    
    • 编辑/etc/hosts
    vim /etc/hosts
    
    • 结尾处增加自己的hostname


      image.png
    1. 出现Error: Error endorsing chaincode: rpc error: code = Unknown desc = error starting container: API error (404): {"message":"network e2ecli_default not found"}的错误
    !!!!!! Chaincode instantiation on PEER2 on channel 'mychannel' failed !!!!!!!!!!!!!!!!
    ================== ERROR !!! FAILED to execute End-2-End Scenario ===============
    
    修改peer-base.yaml
    • 将将base/peer-base.yaml文件中的
    - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=e2ecli_default
    
    • 改为
    - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=e2e_cli_default
    
    • 真实原因是默认创建的网络名称为:$(目录名称)_default,而我们的这个示例项目目录名称为e2e_cli,因此网络名称为e2e_cli_deault。
    • 可通过下方命令查看网络
    docker network ls
    
    docker network ls
    1. 执行./byfn.sh up运行失败
      image.png
      (腾讯云不存在这个问题,自己装ubuntu也不存在这个问题)

    /etc/resolv.conf 注释掉 options timeout:2 attempts:3 rotate single-request-reopen

    image.png

    重新执行

    ./byfn.sh -m down
    ./byfn.sh -m up
    

    参考文档

    https://docs.docker.com/install/linux/docker-ce/ubuntu/
    https://github.com/docker/compose/releases/
    https://docs.docker.com/compose/install/
    https://hub.docker.com/u/hyperledger
    

    相关文章

      网友评论

        本文标题:【Hyperledger第二讲】:Ubuntu 16.04部署h

        本文链接:https://www.haomeiwen.com/subject/zdgapqtx.html