区块链部署和运维---食品溯源

这篇具有很好参考价值的文章主要介绍了区块链部署和运维---食品溯源。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.应用背景:

    基于FISCO BCOS部署去中心化的食品溯源系统,部署方式为基于容器技术Docker,部署内容包括系统前端、后端、数据库,并在最后进行验证。具体工作内容如下:

    1. 以容器的方式部署Mysql以及Redis数据库

    2. 配置Dockerfile,生成系统后端的镜像

    3. 配置docker-compose.yaml以容器集群的方式启动整体系统,包括系统后端、系统前端、Mysql数据库、Redis数据库。

    如下图为食品溯源系统的整体架构:

区块链部署和运维---食品溯源,运维,python

1. 测量点[M]:以容器的方式部署Mysql并配置。

(1)具体试题示例:

    以容器的方式启动Mysql与Redis数据库,具体要求如下:

    1)Mysql:5.7数据库:对外映射3306,管理员root账户密码为123456,在用户根目录下挂载数据库用于数据存储与配置的文件夹

    2)Redis数据库:对外映射端口6379

    3)配置Mysql数据库,相关操作创建data_export数据库,以及user表。

区块链部署和运维---食品溯源,运维,python

  (1)具体实现:

先建一个文件夹

cd foodtrace

第一步:容器启动Mysql:

docker run -itd --name food_mysql -v /home/arthur/foodtrace/datadir:/var/lib/mysql -v /home/arthur/foodtrace/conf.d:/etc/mysql/conf.d -p 3560:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

区块链部署和运维---食品溯源,运维,python

 第二步:容器启动Redis:

docker run -itd --name redis -p 6379:6379 redis

注意,如果出现以下问题,需要执行停止redis操作

区块链部署和运维---食品溯源,运维,python

先停止redis,删除redis,在重新运行

service redis stop
docker rm -v redis
docker run -itd --name redis -p 6379:6379 redis

区块链部署和运维---食品溯源,运维,python

第三步:使用docker ps查看进程

区块链部署和运维---食品溯源,运维,python

 在Mysql中创建data_export数据库,以及user表,当创建成功有下图内容:

先在MobaXterm里面打开连接mysql的进程

docker exec -it food_mysql bash
#进入mysql终端
mysql -uroot -p
#查看数据库
show databases;
#使用数据库
use data_export
#使用数据表
desc user;

连接数据库:端口为 MobaXterm的端口,主机为你的ip地址,密码是123456,用户名:root

连接成功之后新建数据库data_export,新建表user,在里面添加内容。

区块链部署和运维---食品溯源,运维,python

2. 测量点[M]:使用WeBASE-Front在区块链中部署食品溯源智能合约
(1)具体试题示例:

    WeBASE-Front工具部署食品溯源的智能合约,具体代码带后端项目的contracts目录中,具体操作包括:

    1. 使用WeBASE-Front创建admin账户,截图账户信息

    2. 使用admin账户部署合约,截图包括合约地址和abi。

(2)具体操作如下:

1)创建admin用户

区块链部署和运维---食品溯源,运维,python

2)部署智能合约

区块链部署和运维---食品溯源,运维,python

3. 测量点[M]:修改系统后端配置内容,完成集群化容器部署相关配置
(1)具体试题示例:

    修改后端代码的配置文件config.py,修改包括MySQL数据库、Redis数据库、合约名称、合约abi、WeBASE-Front的IP等信息,确保可以使用容器化部署。

(2)具体操作示例:

第一步:首先把food-trace.zip文件传到foodtrace里面,创建back文件,把food-trace.zip移到back,然后进行解压

mkdir back
mv food-trace.zip back
cd back
#解压该文件
unzip food-trace.zip

区块链部署和运维---食品溯源,运维,python

上面部署成功的FoodTraceNew的abi地址,以及admin地址(不要忘记修改主机接口) 

区块链部署和运维---食品溯源,运维,python

4. 测量点[M]:编写Dockerfile生成系统后端镜像
(1)具体试题示例:

    使用Dockerfile生成系统后端,具体要求如下:

    1) 对外暴露5000端口

    2) 能够启动flask后端

    3) 生成镜像名称为web:v2

    4) 生成的Dockerfile名称命名为WebDockerfile

 (2)具体代码截图示例:

 第一步:在foodtrace创建WebDockerfile,在WeDockerfile文件里面配置Dockerfile

vim WebDockerfile

#配置内容
FROM python:3.9
ADD ./back /root/food-trace
ADD ./.pip /root/.pip
WORKDIR /root/food-trace
RUN pip install -r requirements.txt
EXPOSE 5000
CMD python app.py

第二步:复制pip文件

cp -r ~/.pip .

如果没有运行以上命令会报下面的错误

区块链部署和运维---食品溯源,运维,python 第三步:生成镜像的操作:

sudo docker build -f WebDockerfile -t web:v2 .

区块链部署和运维---食品溯源,运维,python

第四步:查看镜像

区块链部署和运维---食品溯源,运维,python

5. 测量点[M]:以集群的形式完整启动食品溯源系统
(1)具体试题示例:

    完善容器集群启动文件docker-compose.yaml,完善包括前端容器(nginx),后端容器(web),Mysql数据库容器(mysql),Redis容器(redis)。在确保4个容器均启动的前提下,实现容器间的互联。

(2)具体操作示例:

    在操作前需要删除已存在的mysql和redis容器

docker stop food_mysql
docker rm food_mysql

    1)修改nginx.conf配置文件

nginx.conf文件已经放在资源里面了(点击下面的nginx.conf就可以跳到此文件的链接),基于已有文件去修改就可以了。

    添加server映射反向代理至web容器的域名,具体具体的nginx.conf文件:

区块链部署和运维---食品溯源,运维,python

 区块链部署和运维---食品溯源,运维,python

第二步:首先把dist.zip文件传到foodtrace里面,创建dist文件夹,把dist.zip移到back,然后进行解压

mkdir dist
mv dist.zip dist
#解压该文件
cd dist
unzip dist.zip

 区块链部署和运维---食品溯源,运维,python

 第三步:编写docker-compose.yaml

区块链部署和运维---食品溯源,运维,python

version: '3.3'
services:
        web:
                image: web:v2
                container_name: food_web
                ports:
                        - 5000:5000
                depends_on:
                        - mysql
                        - redis
        nginx:
                image: nginx
                container_name: food_nginx
                volumes:
                        - ./dist:/root/dist
                        - ./nginx.conf:/etc/nginx/nginx.conf
                ports:
                        - 8020:8020
                depends_on:
                        - web
 
        mysql:
                image: mysql:5.7
                container_name: food_mysql
                environment:
                        - MYSQL_ROOT_PASSWORD=123456
                volumes:
                        - /home/arthur/foodtrace/datadir:/var/lib/mysql
                        - /home/arthur/foodtrace/conf.d:/etc/mysql/conf.d
                ports:
                        - 3356:3306
        redis:
                image: redis
                container_name: food_redis
                ports:
                        - 6379:6379
 
 

   第四步:启动集群容器

    当有以下4个容器被启动时说明操作成功:

区块链部署和运维---食品溯源,运维,python

第五步:启动容器

docker-compose up

区块链部署和运维---食品溯源,运维,python

6. 测量点[M]:验证系统部署完成情况
(1)具体试题示例:

    登录系统8020端口,使用注册操作后,验证系统已启动成功,具体操作:

    1)使用浏览器访问指定页面

    2)使用系统注册功能,完成操作后,在mysql交互框验证是否成功。

(2)具体操作示例:

实现以下命令要确保mysql能够成功连接MobaXterm

    1)访问页面,当有如下显示说明启动成功

区块链部署和运维---食品溯源,运维,python

2)使用注册功能,并验证,当有以下输出说明系统启动成功 

首先打开注册界面

区块链部署和运维---食品溯源,运维,python

填写用户名admin,密码:123456,address:(地址为webase-front上admin的地址),角色:管理员,点击注册,上面会显示注册成功

区块链部署和运维---食品溯源,运维,python

在添加一个用户名为test1,密码是333444555,address:(地址为webase-front上admin的地址),角色:生产商,点击注册,上面会显示注册成功

区块链部署和运维---食品溯源,运维,python

 然后打开mysql,在数据表user里面可以看到添加的用户

区块链部署和运维---食品溯源,运维,python

二.食品溯源项目数据导出试题

1.确认项目已经正常运行

使用docker ps确认有四个容器正在运行

区块链部署和运维---食品溯源,运维,python

页面验证

区块链部署和运维---食品溯源,运维,python

2. 使用data-export导出对应项目合约中的数据到指定mysql数据库(port: 3356)

首先,进入~/fisco-bcos/data-export-docker目录

在目录中对应config目录的abi和bin子目录中添加对应FoodTraceNew合约的abi和bin

区块链部署和运维---食品溯源,运维,python

在.abi与.bin文件中需要添加WeBASE-Front中对应的内容

区块链部署和运维---食品溯源,运维,python 

修改application.properties,将mysql导出的配置指向3356端口

区块链部署和运维---食品溯源,运维,python

区块链部署和运维---食品溯源,运维,python 区块链部署和运维---食品溯源,运维,python

拷贝fisco bcos对应sdk证书到config目录下

区块链部署和运维---食品溯源,运维,python

 启动data-export组件

区块链部署和运维---食品溯源,运维,python

验证:

区块链部署和运维---食品溯源,运维,python区块链部署和运维---食品溯源,运维,python 

 如果遇到以下问题,重启虚拟机:

区块链部署和运维---食品溯源,运维,python

如果重启虚拟机,需要执行以下操作恢复

1. 启动fisco bcos

区块链部署和运维---食品溯源,运维,python

2. 启动webase-front

区块链部署和运维---食品溯源,运维,python

3. 关闭redis

区块链部署和运维---食品溯源,运维,python

4. 启动foodtrace容器集群

区块链部署和运维---食品溯源,运维,python

重新启动dataexport,删除已经存在的dataexport容器

区块链部署和运维---食品溯源,运维,python

创建一个新的

区块链部署和运维---食品溯源,运维,python

查看日志,有如下正确输出

 区块链部署和运维---食品溯源,运维,python

使用mysql客户端连接3356 mysql容器,在容器中添加data_export数据库

进入

区块链部署和运维---食品溯源,运维,python区块链部署和运维---食品溯源,运维,python

验证: 

区块链部署和运维---食品溯源,运维,python  区块链部署和运维---食品溯源,运维,python

Grafana监控,运行grafana

docker run -itd -p 3000:3000 --name=grafana grafana/grafana

区块链部署和运维---食品溯源,运维,python 使用浏览器访问,并登录(admin/admin)

区块链部署和运维---食品溯源,运维,python 

配置mysql连接

区块链部署和运维---食品溯源,运维,python 

有如下输出说明连接成功:

区块链部署和运维---食品溯源,运维,python 

加载default_dashboard.json(在群共享文件中可以找到)

 区块链部署和运维---食品溯源,运维,python

有如下输出:

区块链部署和运维---食品溯源,运维,python 

验证可视化:

使用食品溯源项目,注册一个新用户

 区块链部署和运维---食品溯源,运维,python

观察grafana数据变化:

区块链部署和运维---食品溯源,运维,python

 7.其他一些报错信息

(1).下面问题端口被占用,需要先删除food_mysql,在重新运行

docker rm -f food_mysql

区块链部署和运维---食品溯源,运维,python

(2).下面问题是因为mysql建立的数据表,数据表里的address长度偏小,要修改长度。

区块链部署和运维---食品溯源,运维,python 修改之后停止进程,在重新开启进程

docker-compose down
docker-compose up

(3).以下问题表示容器正在运行需要删除镜像

docker rm 镜像id

区块链部署和运维---食品溯源,运维,python

(4).下面错误原因是id没有选择自增

区块链部署和运维---食品溯源,运维,python文章来源地址https://www.toymoban.com/news/detail-762906.html

到了这里,关于区块链部署和运维---食品溯源的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 区块链食品溯源案例实现(二)

    引言         随着前端界面的完成,我们接下来需要编写后端代码来与区块链网络进行交互。后端将负责处理前端发送的请求,调用智能合约的方法获取食品溯源信息,并将结果返回给前端。 通过前后端的整合,我们可以构建一个食品溯源系统,为用户提供便捷、安全的

    2024年04月08日
    浏览(45)
  • 区块链食品溯源案例实现(一)

    引言:         食品安全问题一直是社会关注的热点,而食品溯源作为解决食品安全问题的重要手段,其重要性不言而喻。传统的 食品溯源系统 往往存在数据易被篡改、信息不透明等问题,而区块链技术的引入,为食品溯源带来了革命性的变革。 目录 引言: 区块链食品

    2024年04月27日
    浏览(38)
  • beego框架编写食品溯源区块链后端

    安装go-sdk 将webase的sdk证书文件复制到自己的项目 修改config.toml使sdk是本项目下 修改配置文件app.conf 地址私钥根据自己的webase修改 新建conf.go获取配置文件信息 将go-sdk下config.go和config_pem.go复制到项目目录conf目录下 将合约编译成go文件 编写TraceService 与合约进行交互 编写foodI

    2024年02月03日
    浏览(41)
  • 区块链技术在食品溯源中的应用

    1.1食品溯源的研究意义         近年来,食品安全问题频发引起了 社会大众的广泛关注 。 在 当今 食品贸易 的大背景 下,生产商和消费者 之间 存在 着 严重的 信息不对称现象 : 生产商的有意误导、 消费者的认知缺乏,使得消费者在 选择 食品时无法做出 确切 的选择

    2023年04月12日
    浏览(45)
  • 区块链溯源:信任的力量——如何看待区块链技术在食品安全、药品监管等领域的应用?

    作者:禅与计算机程序设计艺术 随着互联网技术的飞速发展,以及对现实世界中物流、信息传递、货币流通等方面需求的不断提升,越来越多的人开始利用区块链技术进行各种各样的商业活动,特别是在金融、保险、贸易、医疗、物流、电子政务等领域。而现代社会的复杂性

    2024年02月14日
    浏览(48)
  • 食品溯源合约 -- 智能合约实例

    Roles: 实现对用户地址的角色权限管控,添加、删除角色。 Producer: 生产商角色管控。 ... FoodInfoItem: 食品信息管控。生产商、中间商、超市添加食品信息。 Trace:食品溯源合约,主要负责对以上几个合约的统筹协 PS:这下面这三个都是代表角色,代码几乎一样的,看会这个,其他都

    2024年02月13日
    浏览(41)
  • 【Solidity】智能合约案例——①食品溯源合约

    目录 一、合约源码分析: 二、合约整体流程:       1.部署合约       2.管理角色       3.食品信息管理       4.食品溯源管理         Producer.sol:生产者角色的管理合约,功能为:添加新的生产者地址、移除生产者地址、判断角色地址是否被授权         Di

    2024年02月08日
    浏览(53)
  • Elasticsearch 监控和运维

    Elasticsearch 是一个分布式的开源搜索和分析引擎,用于存储、搜索和分析大量数据。在生产环境中,对 Elasticsearch 进行监控和运维是非常重要的,它可以帮助我们及时发现和解决问题,确保 Elasticsearch 集群的稳定运行。 1. Elasticsearch 监控和运维的意义 Elasticsearch 监控和运维的

    2024年04月28日
    浏览(38)
  • 【RabbitMQ】集群和运维

    对于无状态应用(如普通的微服务)很容易实现负载均衡、高可用集群。而对于有状态的系统(如数据库等)就比较复杂。 1. 业界实践: 主备模式:单活,容量对等,可以实现故障转移。使用独立存储时需要借助复制、镜像同步等技术,数据会有延迟、不一致等问题(CAP定

    2024年01月18日
    浏览(34)
  • solidity智能合约实例开发(2)(解释+注释)——食品溯源

    项目总要求 创建三个角色生产者,分销商,零售商,并分别通过三个角色对产品的生产,分销,零售上链,并且能够分别查出上链的全信息。包括每次交易的时间戳,每次交易的交易名称,每次交易的交易地址,每次交易的食品质量,食品的名称,当前交易的名称,当前交易

    2024年02月06日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包