Fabric V2.5 通用溯源系统——搭建中常见问题整理

2024-04-19 17:52

本文主要是介绍Fabric V2.5 通用溯源系统——搭建中常见问题整理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言:严格按照Github仓库搭建教程安装是不会遇到问题的。但是由于本项目热度过高、涉及到的技术栈较多,读者如果没有仔细按照步骤操作,可能还是会遇到一些问题。特别总结本项目的常见问题(文末)。

项目演示站点:http://realcool.top:9090/

与B站官方合作,本项目代码讲解与二次开发课程已发布,限时特价至4月30日,支持试看: B站:Fabric V2.5通用溯源项目讲解与二次开发课程,购买课程将赠送《Fabric项目学习笔记》中所有与本项目相关的资料。

Fabric V2.5通用溯源课程活动:腾讯文档:提交源码仓库地址/PPT/视频获得返现50-300元

如果项目有帮助请给项目点上Star,我们将十分感谢! 欢迎加入TrueTechLabs Fabric学习交流QQ群:776873343

群内可免费阅读此项目的区块链部分、应用后端部分的代码说明文档。
TrueTechLabs Fabric学习交流QQ群:776873343

一、 90%问题的解决方案

请严格按照以下搭建教程再试一次,一般可以解决90%以上的问题。如果之前搭建好了又不好用了请尝试重启项目或重启机器。

  1. 安装docker

    #下载docker 
    curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 
    #添加当前用户到docker用户组 
    sudo usermod -aG docker $USER 
    newgrp docker 
    #配置docker镜像加速
    sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF'
    {"registry-mirrors": ["https://punulfd2.mirror.aliyuncs.com"]
    }
    EOF#重启docker 
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    
  2. 安装开发使用的go、node、jq

    #下载二进制包
    wget https://golang.google.cn/dl/go1.19.linux-amd64.tar.gz
    #将下载的二进制包解压至 /usr/local目录
    sudo tar -C /usr/local -xzf go1.19.linux-amd64.tar.gz
    mkdir $HOME/go
    #将以下内容添加至环境变量 ~/.bashrc
    export GOPATH=$HOME/go
    export GOROOT=/usr/local/go
    export PATH=$GOROOT/bin:$PATH
    export PATH=$GOPATH/bin:$PATH
    #更新环境变量
    source  ~/.bashrc 
    #设置代理
    go env -w GO111MODULE=on
    go env -w GOPROXY=https://goproxy.cn,direct#下载nvm安装脚本
    wget https://gitee.com/real__cool/fabric_install/raw/main/nvminstall.sh
    #安装nvm;屏幕输出内容添加环境变量
    chmod +x nvminstall.sh
    ./nvminstall.sh
    # 将环境变量写入.bashrc
    export NVM_DIR="$HOME/.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
    # 更新环境变量
    source  ~/.bashrc
    # 安装node16
    nvm install 16
    #换源
    npm config set registry https://registry.npmmirror.com#安装jq 
    sudo apt install jq
    
  3. 克隆本项目

    git clone https://gitee.com/real__cool/fabric-trace
    
  4. 启动区块链部分。在fabric-trace/blockchain/network目录下:

    # 仅在首次使用执行:下载Fabric Docker镜像。如果拉取速度过慢或失败请检查是否完成docker换源,或者更换一个其他的镜像源再试。
    ./install-fabric.sh -f 2.5.6 d 
    
    # 启动区块链网络
    ./start.sh
    

    如果在启动区块链网络时遇到报错可以尝试:

    # 执行清理所有的容器指令:
    docker rm -f $(docker ps -aq)
    

    然后再重新启动区块链网络

  5. 启动后端 在fabric-trace/application/backend目录下: 执行: go run main.go

  6. 修改后端IP,将以下文件中的IP:119.45.247.29,换成自己云服务的IP。

    fabric-trace/application/web/.env.development
    fabric-trace/application/web/src/router/index.js
    
  7. 新开一个窗口,启动前端 在fabric-trace/application/web目录下: 执行:

    # 仅在首次运行执行:安装依赖
    npm install 
    
    # 启动前端
    npm run dev
    
  8. 在腾讯云轻量应用服务器防火墙页面,放行TCP端口8080,9090,9528
    防火墙配置

  9. 在浏览器中打开:http://云服务器IP:9528 即可看到前端页面。

  10. 使用tape对项目进行压力测试
    根据blockchain/chaincode/chaincode/smartcontract.go中的合约函数的签名,编写压测的参数,需要修改的内容是tape目录下的yaml文件中的args。args第一个参数是函数名,后面的参数是函数的参数。例如:

    args:
    # 函数名
    - RegisterUser
    # userID string
    - 1
    #userType string
    - randomString8
    # realInfoHash string
    - randomString8
    

执行./tape --config config_register.yaml -n 1即可完成用户1的注册,然后可以对农产品上链操作与获取用户信息函数进行压测。更多的压测案例可以根据合约函数的签名进行修改。
附农产品上链操作与获取用户信息函数进行压测操作指令:

./tape --config config_invoke.yaml -n 100
./tape --config config_query.yaml -n 100
六、关闭项目与重新运行步骤
关闭项目:
  1. 前端(npm run dev界面)与后端(go run main.go界面:

    使用键盘组合键:ctrl+c

  2. 区块链部分:

    fabric-trace/blockchain/network目录./stop.sh

启动项目:
  1. fabric-trace/blockchain/network目录
    ./start.sh 如果遇到报错可以执行以下命令后再试:
    执行清理所有的容器指令:
    docker rm -f $(docker ps -aq)
  2. fabric-trace/application/backend目录下: 执行: go run main.go
  3. fabric-trace/application/web目录下: 执行:
    npm run dev
生产模式启动项目(后台运行,访问速度更快)
  1. fabric-trace/blockchain/network目录
    ./start.sh 如果遇到报错可以执行以下命令后再试:
    执行清理所有的容器指令:
    docker rm -f $(docker ps -aq)

  2. fabric-trace/application目录下: 执行: ./start.sh

    注意:此方式部署项目会在后台运行,如果后续遇到端口号占用可以尝试关闭占用9090端口号的进程,可以参考:
    解决端口占用 bind:address already in use

二、 常见问题总结(检查第一个报错的位置)

  1. 需要给机器安装mysql吗?
    按照项目搭建过程即可部署好mysql,mysql容器与区块链节点一起启动,因此不需要单独安装mysql。

  2. fabric镜像拉取过慢或提示timeout
    一般是你的网络原因,或者是镜像源网络原因,可以尝试docker换源再试。

  3. 安装链码时报错:exec: “go”: executable file not found in $PATH
    可能是go环境变量未安装好;可能使用了sudo,不要与安装步骤不一致

  4. jq:未找到命令
    漏掉安装步骤中的安装jq,使用sudo apt install jq即可解决

  5. docker权限报错:docker: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock:
    重新执行安装步骤中的:

    #添加当前用户到docker用户组 
    sudo usermod -aG docker $USER 
    newgrp docker 
    
  6. 提示mysql或3337端口错误
    重启区块链网络部分

  7. 前端提示timeout
    检查是否修改好IP或检查防火墙是否开通相关端口

  8. 前端登录页面提示404
    检查是否修改好IP,除了IP不要修改任何字符。

  9. npm run dev 不能启动前端
    检查npm install是否完整把所有包装上了

以上问题如果还没有解决:

  1. 请在B站视频下带图评论,尽量详细,一般24小时内回复。
  2. 如果需要远程搭建服务请填写收集表:【腾讯文档】本项目搭建服务或商务合作意向收集

这篇关于Fabric V2.5 通用溯源系统——搭建中常见问题整理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/918206

相关文章

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

2.1/5.1和7.1声道系统有什么区别? 音频声道的专业知识科普

《2.1/5.1和7.1声道系统有什么区别?音频声道的专业知识科普》当设置环绕声系统时,会遇到2.1、5.1、7.1、7.1.2、9.1等数字,当一遍又一遍地看到它们时,可能想知道它们是什... 想要把智能电视自带的音响升级成专业级的家庭影院系统吗?那么你将面临一个重要的选择——使用 2.1、5.1 还是

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用

Ubuntu系统怎么安装Warp? 新一代AI 终端神器安装使用方法

《Ubuntu系统怎么安装Warp?新一代AI终端神器安装使用方法》Warp是一款使用Rust开发的现代化AI终端工具,该怎么再Ubuntu系统中安装使用呢?下面我们就来看看详细教程... Warp Terminal 是一款使用 Rust 开发的现代化「AI 终端」工具。最初它只支持 MACOS,但在 20

windows系统下shutdown重启关机命令超详细教程

《windows系统下shutdown重启关机命令超详细教程》shutdown命令是一个强大的工具,允许你通过命令行快速完成关机、重启或注销操作,本文将为你详细解析shutdown命令的使用方法,并提... 目录一、shutdown 命令简介二、shutdown 命令的基本用法三、远程关机与重启四、实际应用

Debian如何查看系统版本? 7种轻松查看Debian版本信息的实用方法

《Debian如何查看系统版本?7种轻松查看Debian版本信息的实用方法》Debian是一个广泛使用的Linux发行版,用户有时需要查看其版本信息以进行系统管理、故障排除或兼容性检查,在Debia... 作为最受欢迎的 linux 发行版之一,Debian 的版本信息在日常使用和系统维护中起着至关重要的作

Mycat搭建分库分表方式

《Mycat搭建分库分表方式》文章介绍了如何使用分库分表架构来解决单表数据量过大带来的性能和存储容量限制的问题,通过在一对主从复制节点上配置数据源,并使用分片算法将数据分配到不同的数据库表中,可以有效... 目录分库分表解决的问题分库分表架构添加数据验证结果 总结分库分表解决的问题单表数据量过大带来的性能

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步

什么是cron? Linux系统下Cron定时任务使用指南

《什么是cron?Linux系统下Cron定时任务使用指南》在日常的Linux系统管理和维护中,定时执行任务是非常常见的需求,你可能需要每天执行备份任务、清理系统日志或运行特定的脚本,而不想每天... 在管理 linux 服务器的过程中,总有一些任务需要我们定期或重复执行。就比如备份任务,通常会选在服务器资