一.账户权限控制

参考:

账户权限控制 — FISCO BCOS 2.0 v2.9.0 文档

1.生成账户

在生成账户之前可能会出现下面的错误,

解决方法如下:

cd ..cd webase-deploypython3 deploy.py stopAll

cd ..bash nodes/127.0.0.1/start_all.shcd consolecp ../nodes/127.0.0.1/sdk/* conf/

生成账户:a1,a2,a3

bash get_account.sh#连续三次生成新的账户

验证:

2.新增委员

新增委员a1:

./start.sh 1 -pem 第一个账户的私钥grantCommitteeMember 第一个账户的地址

新增委员a2:

grantCommitteeMember 第二个账户的地址

新增委员a3:

a1操作:

grantCommitteeMember 第三个账户的地址

a2操作:

./start.sh 1 -pem 第二个账户的私钥grantCommitteeMember 第三个账户的地址

验证:

listCommitteeMembers

3.修改委员权重

updateCommitteeMemberWeight 第一个账户的地址 2#2表示修改的比例

a1操作:

a2操作:

a2需要在a2里面进行下面的代码:

updateCommitteeMemberWeight 第一个账户的地址 2

验证:

queryCommitteeMemberWeight 第一个账户的地址

4.阈值修改

a1操作:

updateThreshold 49#在a1中进行

a2操作:

updateThreshold 49#在a2中进行

验证:

queryThreshold

5.撤销委员

a1操作:

在a1中进行

revokeOperator 需要撤销委员的地址

验证:

listCommitteeMembers

二.实训

实训一

1.链搭建(FISCO-BCOS,WEBASE-FRONT)

先恢复快照

配置:

cd fisco-bcosbash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545 -e ./fisco-bcos

启动fisco-bcos链

bash nodes/127.0.0.1/start_all.sh

启动WeBASE-Front

cd WeBASE-Frontcd dist#拷贝证书cp ../../nodes/127.0.0.1/sdk/* conf/#启动服务bash start.sh

页面呈现:

2.节点扩容(在fisco-bcos中扩容一个节点)

下载gen_node_cert.sh

cd ../..cd nodes/127.0.0.1curl -#LO https://gitee.com/FISCO-BCOS/FISCO-BCOS/raw/master-2.0/tools/gen_node_cert.sh

运行生成node4

bash gen_node_cert.sh -c ../cert/agency -o node4

拷贝node0中config.ini、start.sh、stop.sh

cp node0/config.ini node0/start.sh node0/stop.sh node4/

修改node4的config.ini

vim node4/config.ini

拷贝群组1中的配置信息

cp node0/conf/group.1.* node4/conf/

启动node4

bash node4/start.sh

验证node4的节点连接情况

tail -f node2/log/log* | grep "connected count"

获取node4的节点id

cat nodes/127.0.0.1/node4/conf/node.nodeid

cd consolecp ../nodes/127.0.0.1/sdk/* conf/

启动控制台

bash start.sh

添加node4为共识节点:

console验证

getSealerList

3.WeBASE-Front部署智能合约

HelloWorld智能合约的部署与调用

get方法

Set方法

Adoption智能合约的部署与调用

调用合约中register功能

首先指定注册用户(test1)

调用register功能结果返回:

调用登录功能:

FoodTraceNew智能合约的部署与调用

分别调用createMember以及getMember

createMember调用(producter)

getMember

4.使用Data-export组件分别将Adoption、FoodTraceNew合约调用数据导出至MySQL,再通过Grafana组件监控

删除mysql容器

docker rm mysql

清空volume

docker volume prune

删除data-export-docker目录

rm -rf data-export-docker 

重新解压

tar xzvf data-export-1.7.2.tar.gz

1. 复制证书

cp ../nodes/127.0.0.1/sdk/* config/

2. 删除HelloWorld.abi和HelloWorld.bin,分别添加监控合约的abi和bin文件(以Adoption合约为例)

cd config/abirm -rf HelloWorld.abirm -rf HelloWorld.binvim Adoption.abivim Adoption.bin

启动data-export

cd ../..bash build_export.sh -m

监控dataexport容器日志,以下为正确输出

docker logs -f dataexport

监控mysql容器

docker exec -it mysql bashmysql -uroot -p#密码:123456show databases;use data_export;show tables;两次exit;

配置data-export组件允许使用grafana

vim config/application.properties

启动grafana容器

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

admin/admin

进入configuration页面,新增mysql选项

配置mysql连接

加载default_dashboard.json

指定的文件:

5.查看监控变化

在第三步上做出一样的方法,就可以看到变化,刷新

三.实战(宠物商店领养项目实施部署练习)

下面的步骤是按照博主自己的环境进行的,与我环境不同的友友可以去我的资源下载宠物商店领养项目实施部署教程,该教程十分详细。(❤ ω ❤)

部署后端

1.预操作

FISCOBCOS链启动(不是重新安装),webase-front也启动

第一步先检查是否有包含“FISCO”关键词的进程存在

出现下面的情况表示已经启动了

cd fisco-bcosps -ef | grep fisco

若没有,则需要启动,步骤如下:

首先启动FISCOBCOS

cd fisco-bcosbash nodes/127.0.0.1/start_all.sh

启动WeBASE-Front

cd WeBASE-Front/distbash start.sh

监控WeBASE-Front启动情况

通过网页验证

2.配置与启动软件应用

打开虚拟机,用mobaxterm等软件连接虚拟机,并创建AdoptionProject

mkdir AdoptionProject

将软件应用的前后端代码拷贝至虚拟环境的AdoptionProject目录

解压前后端代码

cd AdoptionProjectunzip pet-store-front-master.zipunzip pet-store-flask-master.zip

部署Adoption智能合约

打开WeBASE-Front网页,找到Adoption智能合约,分别“保存”->“编译”->“部署”,使用“admin”进行部署

现在开始首先部署软件应用后端(pet-store-flask),进入~/AdoptionProject/pet-store-flask-master,使用virtualenv创建虚拟环境

cd pet-store-front-masterpython -m virtualenv venv

安装后端所有依赖

pipinstall-r requirements.txt

修改后端项目中对应的config.py

文件,其中包括admin_address,contract_address

vim config.pyvim app.py

找到app.py将端口改成8081

通过nohup启动后端,. 使用tail监控

nohup python app.py &tail -f nohup.out注意:启动后端可以使用python app.py查看端口是否占用及占用方法:netstat -nlp | grep 8081注意:76775与实际相关kill 76775

部署前端及验证

开始部署前端,进入pet-store-front-master目录,使用npminstall安装前端依赖

npm install

通过npm生成前端项目的静态文件

npm run build

前端项目静态文件执行成功后会生成dist目录

配置nginx,通过反向代理的形式将8022端口指向本地pet-store-master目录中的dist子目录

获取nginx.conf地址

sudo nginx -t

修改nginx.conf加上通过8022反向代理到本地dist目录的配置

sudo vim /etc/nginx/nginx.conf

在nginx.conf的http上下文中加入server配置,具体内容如下:

保存nginx.conf后,使用命令让nginx工具重新加载nginx.conf

sudo nginx -s reload

检查8022端口占用情况:

sudo netstat -nlp | grep 8022

检查网页使用情况

验证功能:

首先进入注册页面

在webase-front中复制一个用户的地址,进行注册:

有如下输出说明注册成功

进入登录页

将刚刚注册的用户地址,在登录页复制后登录,有如下输出说明登录成功:

四.基于容器技术的区块链系统部署与验证

宠物商店后端容器化部署

1.预操作

修改docker源为国内

sudo vim /etc/docker/daemon.json

{"registry-mirrors": ["http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn","https://registry.docker-cn.com"]}

重启docker

sudo service docker restart

2.部署config.py

检查config.py中admin_address(部署合约用户地址)和contract_address(合约地址),webase_host(局域网下webase-front访问ip)

3.生成服务端镜像(back:v1)

复制用户根目录(~)中的.pip目录到AdoptionProject目录中

cp -r .pip AdoptionProject/

接着生成dockerfile

cd ~/AdoptionProjectvim BackDockerfile
FROM python:3.8ADD ./pet-store-flask-master /root/pet-storeADD ./.pip /root/.pipWORKDIR /root/pet-storeRUN pip install -r requirements.txtEXPOSE 8081CMD /bin/bash -c "python app.py"

修改后端代码(~/AdoptionProject/pet-store-flask-master/app.py)在最后添加host配置:

4.生成back:v1

docker build -f BackDockerfile -t back:v1 .

执行这个命令之后会出现这个错误,需要你重启,建议直接物理重启

5.验证自定义镜像

docker images

运行后端代码对应容器验证:

docker run -itd --name pet-store-back-p 8081:8081 back:v1

使用dockerps,验证

验证进程是否正在运行

netstat-nlp|grep 8081

一般使用这两个命令可能会出现下面的错误:

解决方法:

先停止,后删除

docker stop pet-store-backdocker rm pet-store-back

运行后端时,就是python app.py出现这个错误,端口占用

解决方法:

ps aux | grep python#arthur 123450.00.01111122222 pts/0S+ 12:34 0:00 python app.pysudo kill 12345

6.使用postman验证

验证/user/register

先在webase-front中创建一个test4用户

使用postman验证,url: /user/register” />=[你创建的用户地址]