安装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一致