一.账户权限控制
参考:
账户权限控制 — 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” />=[你创建的用户地址]