webase 前置安装

安装 mysql

更新安装程序:

1
apt-get upgrade

安装 Mysql

1
apt-get install mysql-server

开启 mysql 服务

1
2
3
service mysql start
service mysql status
netstat -tap | grep mysql

进入 mysql 界面

1
mysql -u root -p

解决中文乱码:

1
vim /etc/mysql/mysql.conf.d/mysqld.cnf
1
2
character_set_server=utf-8
#bind-address = 0.0.0.0 #设置远程访问

设置 mysql 密码:

1
2
3
4
5
sudo mysql
USE mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
FLUSH PRIVILEGES;
EXIT;

创建新用户并授权本地访问, 以及数据库

1
2
3
4
5
6
7
create user 'root'@'%' identified by '123456';
grant all privileges on *.* to 'root'@'%' with grant option;
create user 'test'@'localhost' identified by '123456';
grant all privileges on *.* to 'test'@'localhost' with grant option;
flush privileges;
create database webasenodemanager;
exit

安装 Java

安装 JDK8

1
sudo apt install openjdk-8-jdk

验证安装

1
java -version

配置环境变量 - 编辑配置文件

1
which java
1
vim /etc/profile
1
2
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin

加载配置

1
source /etc/profile

验证输出

1
echo $JAVA_HOME

安装 Python

1
sudo apt install python-is-python3

验证安装

1
python3 --version

安装 pip

1
2
sudo apt install python3-pip
pip3 --version

设置环境变量

1
vim ~/.bashrc

编辑配置文件

1
2
export PYTHON_HOME=/usr/bin/python3.8
export PATH=$PATH:$PYTHON_HOME

加载配置文件

1
source ~/.bashrc

安装 PyMySQL

1
pip3 install pymysql

验证安装

1
pip3 show pymysql

如若需要配置环境可以按照以下步骤,不用则跳过

1
vim ~/.bashrc

编辑配置文件

1
export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python3.8/dist-packages

加载配置

1
source ~/.bashrc

webase 的一些配置文件说明

1
vi common.properties
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# WeBASE子系统的最新版本(v1.1.0或以上版本)
webase.web.version=v1.5.2
webase.mgr.version=v1.5.2
webase.sign.version=v1.5.0
webase.front.version=v1.5.2
# 节点管理子系统mysql数据库配置
mysql.ip=127.0.0.1
mysql.port=3306
mysql.user=dbUserame
mysql.password=dbPassword
mysql.database=webasenodemanager
# 签名服务子系统mysql数据库配置
sign.mysql.ip=localhost
sign.mysq!.port=3306
sign.mysq!.user=dbUsername
sign.mysgl.password=dbPassword
sign.mysql.database=webasesian
#节点前置子系统h2数据库名和所属机构
front.h2.name=webasefront
front.org=fisco
# WeBASE管理平台服务端口
web.port=5000
#启用移动端管理平台(0: disable,1: enable)
web.h5.enable=1
# 节点管理子系统服务端口
mgr:port=5001
#节点前置子系统端口
front.port=5002
#签名服务子系统端口
sign.port=5004
# 节点监听lp
node.listenlp=127.0.0.1
# 节点p2p端口
node.p2pPort=30300
#节点链上链下端口
node.channelPort=20200
# 节点rpc端口
node.rpcPort=8545
# 加密类型(0: ECDSA算法,1: 国密算法)
encrypt.type=0
# SSL连接加密类型(0: ECDSA SSL, 1:国密SSL)
# 只有国密链才能使用国密
SSLencrypt.ssl7ype=0
# 是否使用已有的链(yes/no)
if exist.fisco=no
# 使用己有链时需配置
# 已有链的路径,start al.sh脚本所在路径
#路径下要存在sdk目录(sdk目录中包含了SSL所需的证书,即ca.crt、sdk.crt、sdk.key和gm目录(包含国密SSL证书gmca.crt、gmsdk.crt、gmsdk.key、gmensdk.crt和gmensdk.key)
fisco.dir=/datalapp/nodes/127.0.0.1
# 前置所连接节点的绝对路径#节点路径下要存在conf文件来,conf里存放节点证书(ca.crt、node.crt和node.key)
node.dir=/datalapp/nodes/127.0.0.1/node0
# 搭建新链时需配置
# FISCO-BCOS版本fisco.version=2.7.2
# 搭建节点个数(默认两个)
node.counts=nodeCounts

运行

1
2
3
#部署并启动所有服务:
python3 deploy.py installAll
#执行命令部署服务将自动部署FISCO BCOS节点,并部署 WeBASE 中间件服务,包括签名服务(sign)、节点前置(front)、节点管理服务(node-mgr)、节点管理前端(web)

详细命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 一键部署
部署并启动所有服务 python3 deploy. py installAll
停止一键部署的所有服务 python3 deploy.py stopAll
启动一键部署的所有服务 python3 deploy.py startAll
#各子服务启停
启动FISCO-BCOS节点 python3 deploy.py startNode
停止HSCO-BCOS节点 python3 deploy.py stopNode
启动WeBASE-Web: python3 deploy.py startWeb
停止WeBASE-Web: python3 deploy.py stopWeb
启动WeBASE-Node-Manager: python3 deploy.py startManager
停止WeBASE-Node-Manager: python3 deploy.py stopManager
启动WeBASE-Sign: python3 deploy.py startSign
停止WeBASE-Sign: python3 deploy.py stopSign
启动WeBASE-Front: python3 deploy.py startFront
停止WeBASE-Front: python3 deploy.py stopFront
# 可视化部署
部署并启动可视化部署的所有服务 python3 deploy.py installWeBASE
停止可视化部署的所有服务 python3 deploy.py stopWeBASE
启动可视化部署的所有服务 python3 deploy.py startWeBASE

检测操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#节点进程
ps -ef | grep node
#检查webase-front
ps -ef | grep webase.front
#检查webase-node-mannager
ps -ef | grep webase.node.mgr
#检查nignx
ps -ef | grep nginx
#检查webase-sign
ps -ef | grep webase.sign

#检查端口
netstat -anlp | grep 20200
netstat -anlp | grep 5002
netstat -anlp | grep 5001
netstat -anlp | grep 5000
netstat -anlp | grep 5004

localhost:5002/WeBASE-Front 为节点控制台

http://localhost:5000 webase 管理平台

企业搭建 webase

Webase-Front 需要创建数据库

1
CREATE DATABASE IF NOT EXISTS webase_sign_tb DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

Webase-Node-Manager 需要创建数据库

1
CREATE DATABASE IF NOT EXISTS webase_node_mgr_tb DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

在配置 Front 时需要将 fisco-bcos 的 sdk 密钥 copy 到 dist/conf 内

1
cp -r nodes/127.0.0.1/sdk/* ./dist/conf/

在配置 Front 中 application.yml 中的 nodePath 的路径需要配置到 node0

WeBASE-Node-Manager 配置的时候需要先配置 script / webase.sh 文件都数据库进行配置,然后使用

1
bash webase.sh ip port  #进行启动

Webase-Web 配置需要先下载 solc-bin:bash ./get_solc_js.sj

generator

笔记

先从群组 1 开始搭建, 搭建好后再将各个节点的密钥复制进去。

./generator/script/install.sh进行 generator 的安装。

./generator --cdn --download_fisco ./meta将 fisco 的二进制文件拷贝进来

./one_click_generator.sh -b ./tmp_one_click将配置好的机构进行生成

tail -f ./tmp_one_click/agency*/node/node*/log/log* |grep g:x |grep +++ 查询状态

./generator --download_console ./ --cdn将控制台拷贝下来

bash ./tmp_one_click/agencyx/node/node_xx_xx/scrpipts/load_new_groups.sh生成新的群组

./generator --generate_chain_certificate ./dir_chain_ca生成链证书

在生成第二个节点时: 需要将生成第一个节点的 ca 文件拷贝过去即:

1
cp tmp_one_click/ca.* tmp_one_click_expand/

以及群组 1 的创世区块, 和 p2p 的连接文件peers.txt

1
2
cp tmp_one_click/group.1.genesis tmp_one_click_expand
cp tmp_one_click/peers.txt tmp_one_click_expand

如果新增的节点是在已有的机构上新增的化,需要将已有机构的密钥拷贝过去.

1
cp -r tmp_one_click/agencyA/agency_cert tmp_one_click_expand/agencyA

新增群组时,先要将对应的证书拷贝过来,比如机构 A 有两个节点,就需要将两个证书拷贝过来。

1
cp tmp_one_click/agencyA/node/node_xxx_xx/conf/node.crt meta/cert_xxx_xx.crt

新增群组需要新增创世区块, 并且将创世区块加入到现有节点中:

1
2
./generator --create_group_genesis ./group2
./generator --add_group ./group2/group.2.genesis ./tmp_one_click_expand/agencyx/node/node_xx_x

全部内容完成之后清理 meta 文件

1
2
rm ./meta/cert_*
rm ./meta/group*

实操

前置要求: 8 节点 4 机构 3 群组

要求图
要求图

机构 节点 所属群组 P2P 地址 RPC 监听地址 Channel 监听地址 IP 地址
机构 A 节点 0 群组 1,2,3 30300 20200 8545 127.0.0.1
节点 1 群组 1,2,3 30301 20201 8546 127.0.0.1
机构 B 节点 2 群组 1,2 30302 20202 8547 127.0.0.1
节点 3 群组 1,2 30303 20203 8548 127.0.0.1
机构 C 节点 4 群组 2,4 30304 20204 8549 127.0.0.1
节点 5 群组 2,4 30305 20205 8550 127.0.0.1
机构 D 节点 6 群组 3 30306 20206 8551 127.0.0.1
节点 7 群组 3 30307 20207 8552 127.0.0.1
机构 F 节点 8 群组 4 30308 20208 8553 127.0.0.1
节点 9 群组 4 30309 20209 8554 127.0.0.1
节点 10 群组 4 30310 20210 8555 127.0.0.1
机构 E 节点 11 群组 1 30311 20211 8556 127.0.0.1

由于是四个机构,所以复制四个目录

1
2
3
4
cp -r generator/ generator-A
cp -r generator/ generator-B
cp -r generator/ generator-C
cp -r generator/ generator-D
1
git clone http://gitlab.rs.nlecloud.com/fisco/generator.git

第一步生成链

一条链只有一条唯一的链证书ca.crt

1
./generator --generate_chain_certificate ./dir_chain_ca

然后生成各个机构的证书,并且复制到工作目录,以便于使用

1
2
3
4
./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agencyA
./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agencyB
./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agencyC
./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agencyD

将这些机构认证文件拷贝到各自目录

1
2
3
4
cp -r dir_agency_ca/agencyA/* ../generator-A/meta/
cp -r dir_agency_ca/agencyB/* ../generator-B/meta/
cp -r dir_agency_ca/agencyC/* ../generator-C/meta/
cp -r dir_agency_ca/agencyD/* ../generator-D/meta/

第二部编辑 deployment 并生成

1
vim generator-x/node_deployment.ini

对应的端口填写上。

生成机构 A,B 的证书和 p2p 连接信息文件

1
./generator --generate_all_certificates ./agencyA_node_info

将机构 A 的 peers.txt 连接信息文件拷贝给机构 B 用于进行连接

1
cp agencyA_node_info/peers.txt ../generator-B/meta/peersA.txt

ps: 由于群组1 需要创建创世区块,我们选择在机构A里进行创建,所以我们机构B除了复制peers.txt文件外,还需要复制机构B的两个节点crt文件给机构A

1
2
cp -r  agencyB_node_info/peers.txt  ../generator-A/meta/peersB.txt
cp -r agencyB_node_info/cert_* ../generator-A/meta/

在机构 A 结合四个节点证书文件生成创世区块, 并将创世区块给 b

1
2
./generator --create_group_genesis ./group
cp group/group.1.genesis ../generator-B/meta/

在机构 A 中使用--build_install_package,第一个参数是放置群组内其他节点的连接信息,第二个是节点文件的输出目录

1
./generator --build_install_package ./meta/peerB.tst ./nodeA

同理生成 B,不写了

查询共识情况:

1
tail -f ./node*/node*/log/log*  | grep g:2.*+++

第三步群组 2

编辑机构 C 的conf/node_deployment.ini配置文件,对应的端口编辑好,group_id=2

然后生成证书连接信息, 并拷贝给 A,以及将 A 的证书和连接信息拷贝到 C

1
2
3
4
./generator --generate_all_certificates ./agencyC_node_info
cp -r agencyC_node_info/peers.txt ../generator-A/meta/peersC.txt
cp -r ../generator-A/agencyA_node_info/cert* meta/
cp -r ../generator-A/agencyA_node_info/peers.txt meta/peersA.txt

修改 C 的conf/group_genesis.ini将对应的端口写上并且将group_id改成 2

在机构 C 生成群组 2 的创世区块文件, 并且拷贝到机构 A

1
2
./generator --create_group_genesis ./group
cp -r group/group.2.genesis ../generator-A/meta/

生成机构 C 节点并且启动

1
./generator --build_install_package ./meta/peersA.txt ./nodeC

机构 A 为现有节点初始化群组 2

使用--add_group第一个参数选择群组 2 的创世块, 第二个参数选择需要加入的群组的节点目录

1
./generator --add_group ./meta/group.2.genesis ./nodeA

使用--add_peers ,添加机构 C 节点连接文件 peers 至已有节点

1
./generator --add_peers ./meta/peersC.txt ./nodeA

重启机构 A

查询 A,C 机构是否有共识

1
tail -f ./node*/node*/log/log* | grep g:2.+++

群组 3 搭建方法与 2 一致

Icon喜欢这篇作品的话,奖励一下我吧~
💗感谢你的喜欢与支持!
致谢名单
本作品由 JoBackRer 于 2024-09-26 14:12:28 发布
作品地址:webase 前置安装
除特别声明外,本站作品均采用 CC BY-NC-SA 4.0 许可协议,转载请注明来自 JoBackRer の blog
Logo