目录
1.两台共同执行下载及安装
2.初始化链证书及机构
3.修改配置文件
4.机构生成并发送节点信息
5.创世机构收集节点证书
6.各机构节点连接信息,相互收集
7.机构A生成群组1创世区块
8.控制台的搭建
9.控制台配置
10.启动控制台
环境:两台云服务器 Ubuntu 18.04.4 Remote Desktop Manager
通过gihub下载到主机上
(1)下载
cd ~/ && git clone https://github.com/FISCO-BCOS/generator.git && cd ./generator
(2)安装
cd ~/generator && bash ./scripts/install.sh
(3)获取节点二进制
./generator --download_fisco ./meta
问题:
(3.1)可能会出现的问题1:从github下载时网络不稳定导致的
解决:
可以在后面加上--cdn
指令,从国内的镜像进行下载,如果还是网络错误,可多试几次
./generator --download_fisco ./meta --cdn
(3.2)可能会出现的问题2:解压fisco-bcos失败
再者一个简单粗暴的解决方法:
直接在浏览器里面下载下来到你的电脑里,下面是下载地址,复制到浏览器中即可下载
https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v2.4.0/fisco-bcos.tar.gz
然后把下载下来的fisco-bcos
文件,再通过WinSCP,复制到generator/meta/ 目录下,解压
tar -xzvf fisco-bcos.tar.gz
赋予运行权限:
chmod +x fisco-bcos
(4)检查二进制版本
./meta/fisco-bcos -v
看到版本号信息则说明二进制文件已经生效可用,如下示:
A机构(其中一台云服务器)
(1)初始化链证书
在generator文件夹下进行,如果不是在generator目录下先则先执行下列语句进入该目录
cd ~/generator
若已在该目录下,可直接执行下列命令:
./generator --generate_chain_certificate ./dir_chain_ca
(2)初始机构A
./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agencyA
(3)查看机构证书及私钥
ls dir_agency_ca/agencyA/
可以看到:agency.crt agency.key ca.crt
(4)发送链证书、机构证书、机构私钥至机构A
cp ./dir_agency_ca/agencyA/* ~/generator/meta/
因为控制台查看文档的不方便,也为了后续工作的方便执行,此处插播一个可视化工具推荐——WinSCP
发送链证书、机构证书、机构私钥至机构A之后如果使用命令行查看的话还是比较麻烦的,但是通过WinSCP可以方便的看到我们刚才所下载安装的generator文件及链证书、机构证书、机构私钥,而不需要通过命令行的方式进行查看及一些文件复制等操作。
B机构(另一台云服务)
(1)初始化机构B
通过手动方式,在WinSCP里面将机构A的 dir_chain_ca 拷贝到机构B
(2)生成机构B证书
./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agencyB
(3)发送链证书、机构证书、机构私钥至机构B
cp ./dir_agency_ca/agencyB/* ~/generator/meta/
手动修改generator/conf文件夹下面的node_deployment.ini ,如下图所示,修改红框内的p2p_ip和rpc_ip,P2P填的是外网ip,而RPC填的是内网ip,云服务器上都要这样修改。这里由于我的服务器只有内网ip,就全填内网了。
注:在实际开发过程中RPC不能填外网ip,关于这3个接口,详情可看——FISCO BCOS网络端口讲解
这里,机构A和机构B,即两台服务器都要对 node_deployment.ini 做相应p2p_ip和rpc_ip的修改。
机构A
(1)机构A生成节点证书及p2p连接信息文件
./generator --generate_all_certificates ./agencyA_node_info
查看
ls ./agencyA_node_info
可以看到下列内容即为成功:
机构B
(2)机构B生成节点证书及p2p连接信息文件
./generator --generate_all_certificates ./agencyB_node_info
生成创世区块的机构需要节点证书,示例中由A机构生成创世区块,因此B机构除了发送节点p2p连接地址文件外,还需发送节点证书至机构A
(1)将机构B节点agencyB_node_info 文件夹 cert_*.crt文件,如下两个文件,copy到机构A的meta文件夹中。
(2)同样操作,将机构A节点agencyA_node_info 文件夹的两个文件也一样要copy到机构B的meta文件夹中。
(1)将机构A中的 /generator/agencyA_node_info 文件夹下的 peers.txt 复制到自己的 /generator/meta 目录下,并且把peers.txt 的内容复制到机构B中meta新建一个peersA存放。
(2)同理,将机构B中的 /generator/agencyB_node_info 文件夹下的 peers.txt 复制到自己的 /generator/meta 目录下,并且把peers.txt 的内容复制到机构A中meta新建一个peersB存放。
即如下:
(1)修改机构A的 /generator/conf 文件夹下的 group_genesis.ini ,这里要结合个人主机的ip地址来看,注意端口要对上,与前面 node_deployment.ini
文件中p2p端口的对应。
;命令解释
[group]
;群组id
group_id=1
[nodes]
;机构A节点p2p地址
node0=10.13.1.23:30300
;机构A节点p2p地址
node1=10.13.1.23:30301
;机构B节点p2p地址
node2=10.13.1.24:30300
;机构B节点p2p地址
node3=10.13.1.24:30301
(2)机构A生成 group_genesis.ini 配置的群组创世区块
./generator --create_group_genesis ./group
(3)分发群组1创世区块至机构B
手动复制,机构A ./group/group.1.genesis 文件到机构B的meta文件夹下。
(4)机构A生成所属节点
./generator --build_install_package ./meta/peersB.txt ./nodeA
(5)机构B生成所属节点
./generator --build_install_package ./meta/peersA.txt ./nodeB
(6)各自启动机构下的节点
启动机构A节点:
bash ./nodeA/start_all.sh
启动机构B节点:
bash ./nodeB/start_all.sh
问题:
解决:
因为我们是root用户下的四个子用户,存在冲突,可尝试 ps -ef | grep fisco 查看进程节点 bash ./stop_all.sh 停掉其他节点,再启动就可以了。
(7)查看进程
ps -ef | grep fisco
(8)查看节点
tail -f ./node*/node*/log/log* | grep +++
查看到以下内容即为成功:
搭建控制台,由于需要java环境,所以先要搭建java
(1)添加ppa源(注:中间会出现按enter键继续 )
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
(2)安装openjdk
sudo apt install openjdk-8-jre-headless
(3)在浏览器里面下载jdk 1.8.211
地址如下:
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
(4)解压文件
①在根目录新建software 文件夹(与generator同级),将 jdk-8u251-linux-x64.tar.gz 安装包放置其中
② 在/usr/lib/ 目录下新建jdk 文件夹
cd /usr/lib
su root
mkdir jdk
③返回sofrware目录下,执行解压命令
sudo tar -zxvf jdk-8u251-linux-x64.tar.gz -C /usr/lib/jdk
(5)配置环境
①修改配置
sudo vim /etc/profile
export JAVA_HOME=/usr/lib/jdk/jdk1.8.0_251 这里是要指定的文件位置
#set java env
export JAVA_HOME=/usr/lib/jdk/jdk1.8.0_251
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
如图示:
保存
:wq
②执行命令,立即生效:
source /etc/profile
更新:sudo update-alternatives --install /usr/bin/java java /usr/lib/jdk/jdk1.8.0_251/bin/java 300 这里也是要改成指定的位置
sudo update-alternatives --install /usr/bin/java java /usr/lib/jdk/jdk1.8.0_251/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jdk/jdk1.8.0_251/bin/javac 300
检测版本
java -version
可以看到版本信息如下:
(1)在generator目录下下载控制台
./generator --download_console ./ --cdn
(2)配置
①配置A机构控制台生成sdk证书
./generator --generate_sdk_certificate ./dir_sdk_ca ./dir_agency_ca/agencyA
配置B机构控制台生成sdk证书
./generator --generate_sdk_certificate ./dir_sdk_ca ./dir_agency_ca/agencyB
执行完 ls dir_sdk_ca/sdk 命令,可以看到 ca.crt node.crt node.key sdk.crt sdk.key 即为成功
②将文件复制至console目录下的conf文件夹
cp -rf dir_sdk_ca/sdk/* console/conf/
③进入generator/console/conf 目录下,复制样例文件applicationContext-sample.xml
为新文件
cp applicationContext-sample.xml applicationContext.xml
④手动修改 applicationContext.xml 中的value,如下示:
./start.sh
就可以看到控制台如下示: