webase 前置安装
安装 mysql
更新安装程序:
1 | apt-get upgrade |
安装 Mysql
1 | apt-get install mysql-server |
开启 mysql 服务
1 | service mysql start |
进入 mysql 界面
1 | mysql -u root -p |
解决中文乱码:
1 | vim /etc/mysql/mysql.conf.d/mysqld.cnf |
1 | character_set_server=utf-8 |
设置 mysql 密码:
1 | sudo mysql |
创建新用户并授权本地访问, 以及数据库
1 | create user 'root'@'%' identified by '123456'; |
安装 Java
安装 JDK8
1 | sudo apt install openjdk-8-jdk |
验证安装
1 | java -version |
配置环境变量 - 编辑配置文件
1 | which java |
1 | vim /etc/profile |
1 | export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 |
加载配置
1 | source /etc/profile |
验证输出
1 | echo $JAVA_HOME |
安装 Python
1 | sudo apt install python-is-python3 |
验证安装
1 | python3 --version |
安装 pip
1 | sudo apt install python3-pip |
设置环境变量
1 | vim ~/.bashrc |
编辑配置文件
1 | export PYTHON_HOME=/usr/bin/python3.8 |
加载配置文件
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 | # WeBASE子系统的最新版本(v1.1.0或以上版本) |
运行
1 | #部署并启动所有服务: |
详细命令:
1 | # 一键部署 |
检测操作
1 | #节点进程 |
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 | cp tmp_one_click/group.1.genesis 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 | ./generator --create_group_genesis ./group2 |
全部内容完成之后清理 meta 文件
1 | rm ./meta/cert_* |
实操
前置要求: 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 | cp -r generator/ generator-A |
1 | git clone http://gitlab.rs.nlecloud.com/fisco/generator.git |
第一步生成链
一条链只有一条唯一的链证书ca.crt
1 | ./generator --generate_chain_certificate ./dir_chain_ca |
然后生成各个机构的证书,并且复制到工作目录,以便于使用
1 | ./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agencyA |
将这些机构认证文件拷贝到各自目录
1 | cp -r dir_agency_ca/agencyA/* ../generator-A/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 | cp -r agencyB_node_info/peers.txt ../generator-A/meta/peersB.txt |
在机构 A 结合四个节点证书文件生成创世区块, 并将创世区块给 b
1 | ./generator --create_group_genesis ./group |
在机构 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 | ./generator --generate_all_certificates ./agencyC_node_info |
修改 C 的conf/group_genesis.ini将对应的端口写上并且将group_id改成 2
在机构 C 生成群组 2 的创世区块文件, 并且拷贝到机构 A
1 | ./generator --create_group_genesis ./group |
生成机构 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 一致

