因为需要搭建Fisco-Bcos和Webase进行业务开发,但是按照官方技术文档中一键搭建的方法以及docker中搭建的方法,均无法搭建成功。主要存在部分服务无法启动的问题,所以才有了本文。本文分为两个部分,前半部分为Fisco-Bcos的搭建,后半部分为Console和Webase的搭建。
官方文档
Fisco-Bcos:https://fisco-bcos-documentation.readthedocs.io/zh-cn/latest/docs/introduction.html
WeBase:https://webasedoc.readthedocs.io/zh-cn/latest/docs/WeBASE-Front/README.htmlCode language: JavaScript (javascript)
1.Fisco-Bcos2.X的安装和部署
1.1 ubuntu基础环境的安装
(1)Ubuntu使用20.04以上的版本,然后再虚拟机中进行安装。

(2)等待安装完成之后,开启ssh服务,使用ssh服务连接到系统中,安装基本的环境。
sudo apt-get update
sudo apt-get install -y openssl curl wget unzip git openjdk-11-jdkCode language: JavaScript (javascript)

(3)安装完成之后,系统自带java的环境变量。如果使用jdk包进行解压安装需要创建java环境变量,创建环境变量的代码命令如下。
sudo gedit /etc/profile
export JAVA_HOME=java地址
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#重载一下
source /etc/profileCode language: PHP (php)
(4)如果已经存在多个版本,那么就需要进行切换,可以使用alternatives的版本管理进行不同的切换。

sudo update-alternatives --config java
(5)切换完成之后,成功切换到java。
java --version

1.2 Fisco-Bcos的部署
(1)下载建链脚本, 创建工作目录并使用下载build_chain.sh。
<code>mkdir -p ~/fisco && cd ~/fisco curl -#LO https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v2.11.0/build_chain.sh && chmod u+x build_chain.sh</code>Code language: HTML, XML (xml)
(2) 执行刚才创建的脚本,开始启动四个节点的创建。本次使用开发环境进行配置,所以在一台机器上同时模拟了四个节点。
bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545Code language: CSS (css)
- 成功标志:看到
All nodes start successfully提示,并在当前目录生成nodes/127.0.0.1文件夹。 - 下载fisco-bcos:如果下载太慢,可以手动下载然后本地使用-e参数指定本地下载的文件。

(3) 安装完成之后启动节点。
bash nodes/127.0.0.1/start_all.sh

(4) 验证运行状态,首先检查进程是否正常常驻。
ps -ef | grep fisco-bcos

(5) 查看节点之间是否成功握手(4个节点互相连接,connected count 应当为 3)。
tail -f nodes/127.0.0.1/node0/log/log* | grep "connected count"Code language: JavaScript (javascript)

2.配置 FISCO BCOS 控制台 (Console)
(1)下载并解压
mkdir -p ~/fisco && cd ~/fisco && curl -#LO https://github.com/FISCO-BCOS/console/releases/download/v2.9.2/download_console.sh
bash download_console.shCode language: PHP (php)
(2) 配置证书与连接文件
控制台需要通过 SSL 证书接入节点的 Channel 端口,并且将模板配置文件修改回来:
cp -r nodes/127.0.0.1/sdk/* console/conf
cp console/conf/config-example.toml console/conf/config.toml
(3) 启动并交互
cd ~/fisco/console && bash start.shCode language: JavaScript (javascript)

3.WeBASE的安装
WeBASE是在区块链应用和FISCO-BCOS节点之间搭建的一套通用组件。围绕交易、合约、密钥管理,数据,可视化管理来设计各个模块,开发者可以根据业务所需,选择子系统进行部署。WeBASE屏蔽了区块链底层的复杂度,降低开发者的门槛,大幅提高区块链应用的开发效率,包含节点前置、节点管理、交易链路,数据导出,Web管理平台等子系统。
3.1 节点前置服务Webase-front
WeBASE-Front是和FISCO-BCOS节点配合使用的一个子系统。此分支支持FISCO-BCOS 2.0以上版本,集成web3sdk,对接口进行了封装,可通过HTTP请求和节点进行通信。另外,具备可视化控制台,可以在控制台上开发智能合约,部署合约和发送交易,并查看交易和区块详情。还可以管理私钥,对节点健康度进行监控和统计。
(1)首先设置java环境该节点支持JDK8到JDK14。并且验证JAVA_HOME变量的信息,如果JAVA_HOME环境变量信息存在,则跳过该步骤。如果该变量为空则进行如下的配置。
首先验证JAVA版本,确保符合要求的信息。
java --version
然后验证找到JAVA的实际路径,并且配置环境变量,最后输出验证。
readlink -f $(which java)
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64Code language: JavaScript (javascript)

(2)然后下载安装包,并且解压。
wget https://github.com/WeBankBlockchain/WeBASELargeFiles/releases/download/v1.5.5/webase-front.zip
unzip webase-front.zipCode language: JavaScript (javascript)

(3)然后进入到webase-front目录,给sh脚本赋予执行权限。
cd webase-front
chmod +x ./*sh
(4)然后把fisco-bcos的证书复制到conf文件夹下,最后启动脚本。
cp ../nodes/127.0.0.1/sdk/* conf/
./start.sh
./status.sh
netstat -lntp | grep 5002
(5)等待几秒钟后运行检查脚本,发现程序正在运行。并且查看端口发现5002端口已经打开。

(6)然后在浏览器中访问http://{deployIP}:{5002}/WeBASE-Front,可以成功访问到控制台。

3.2 节点管理服务WeBASE-Node-Manager
WeBASE-Node-Manager可以是处理前端页面所有web请求,管理各个节点的状态,管理链上所有智能合约,对区块链的数据进行统计、分析,对异常交易的审计,私钥管理等。
(1)首先下载安装包,并且解压。
git clone https://github.com/WeBankBlockchain/WeBASE-Node-Manager.gitCode language: PHP (php)

(2)然后进入到WeBASE-Node-Manager目录,使用自带的gradlew进行编译。
cd ~/fisco/WeBASE-Node-Manager
chmod +x ./gradlew && ./gradlew build -x testCode language: JavaScript (javascript)

(4)成功编译则跳过该步骤。如果编译的时候,发现没有办法拉取gradlew的时候,可以先从github手动下载,然后修改:~/fisco/WeBASE-Node-Manager/gradle/wrappergradle-wrapper.properties将其gradlew指向下载的本地文件。
cd ~/fisco/WeBASE-Node-Manager
wget https://services.gradle.org/distributions/gradle-6.6.1-bin.zip
vim /home/wh/fisco/WeBASE-Node-Manager/gradle/wrapper/gradle-wrapper.propertiesCode language: JavaScript (javascript)

(5)编译完成之后进入到dist目录,给所有sh脚本赋予可执行权限。

(6)进入到数据库准备为服务创建数据库,数据的安装见网络安全运行与维护的3.6.5的使用Centos 7搭建PHP+Mariadb服务器章节。
其中需要设置mysql的root密码为admin@123
netstat -lntp | grep 3306
mysql -u root -p

(7)登录到数据库然后开始创建数据库。
mysql -u root -padmin@123
CREATE DATABASE IF NOT EXISTS webasenodemanager DEFAULT CHARSET utf8 COLLATE utf8_general_ci;Code language: CSS (css)

(8)然后进入到编译好的script目录,修改数据库名字和数据库用户名密码,如果数据库名字为webasenodemanager,则不用修改数据库名,最后运行脚本注入基础数据。
cd dist/script
sed -i "s/defaultAccount/root/g" webase.sh
sed -i "s/defaultPassword/admin@123/g" webase.sh
bash webase.sh 127.0.0.1 3306Code language: JavaScript (javascript)

(9)回到dist目录,dist目录提供了一份配置模板conf_template,拷贝成conf,然后修改服务配置,官方脚本需要修改运行端口,数据库等,本文保持默认。
cp -r conf_template conf
sed -i "s/defaultAccount/root/g" conf/application.yml
sed -i "s/defaultPassword/admin@123/g" conf/application.ymlCode language: JavaScript (javascript)

(10)然后运行启动脚本,等待数秒查看运行状态发现服务已经启动,最后查看系统端口发现5001端口已经启动。
./start.sh
./status.sh
netstat -lntp | grep 5001

3.3 WeBASE管理平台
WeBASE支持FISCO-BCOS 2.0以上版本,支持群组和群组切换,是区块链中间件平台WeBASE管理平台。
(1)首先下载Webase安装包,然后进入到WeBASE-Web目录,开始下载solc。
cd ~/fisco
git clone https://github.com/WeBankBlockchain/WeBASE-Web.git
cd WeBASE-Web
bash ./get_solc_js.shCode language: PHP (php)
(2)如果下载成功则跳过该步骤,如果get_solc_js.sh下载不成功,则手动执行下面的命令进行下载,下载到WeBASE-Web文件夹中。
curl -<em>#L https</em><em>:</em><em>//github.com/WeBankBlockchain/WeBASELargeFiles/releases/download/v3.0.0/v0.4.25.js -o ./dist/static/js/v0.4.25.js</em>
curl -<em>#L https</em><em>:</em><em>//github.com/WeBankBlockchain/WeBASELargeFiles/releases/download/v3.0.0/v0.4.25-gm.js -o ./dist/static/js/v0.4.25-gm.js</em>
curl -<em>#L https</em><em>:</em><em>//github.com/WeBankBlockchain/WeBASELargeFiles/releases/download/v3.0.0/v0.5.2.js -o ./dist/static/js/v0.5.2.js</em>
curl -<em>#L https</em><em>:</em><em>//github.com/WeBankBlockchain/WeBASELargeFiles/releases/download/v3.0.0/v0.5.2-gm.js -o ./dist/static/js/v0.5.2-gm.js</em>
curl -<em>#L https</em><em>:</em><em>//github.com/WeBankBlockchain/WeBASELargeFiles/releases/download/v3.0.0/v0.6.10.js -o ./dist/static/js/v0.6.10.js</em>
curl -<em>#L https</em><em>:</em><em>//github.com/WeBankBlockchain/WeBASELargeFiles/releases/download/v3.0.0/v0.6.10-gm.js -o ./dist/static/js/v0.6.10-gm.js</em>Code language: HTML, XML (xml)
(3)继续拉取移动端的代码,代码和WeBASE-Web放在同级目录。
git clone https://github.com/WeBankBlockchain/WeBASE-Web-Mobile.gitCode language: PHP (php)

(4)使用apt安装nginx,并且设置开机启动。
sudo apt install nginx
sudo systemctl enable nginx
sudo systemctl restart nginx

(5)然后继续修改配置,在docs目录下有配置文件nginx.conf,修改完后替换安装的nginx的配置文件nginx.conf。
cd docs/
<em># 修改服务器ip,也可以使用域名</em>
sed -i "s%127.0.0.1%192.168.90.15<em>%g</em>" docs/nginx.conf
<em># 修改静态文件路径(文件需要有权限访问)</em>
sed -i "s%/data/WeBASE-Web/dist%/home/wh/fisco/WeBASE-Web/dist<em>%g</em>" docs/nginx.conf
<em># 节点管理服务ip和端口</em>
sed -i "s%10.0.0.1:5001%127.0.0.1<em>%g</em>" docs/nginx.conf
#修改节点的日志路径为绝对路径
sed -i "s%error_log log/error.log;%error_log /var/log/nginx/error.log;<em>%g</em>" docs/nginx.conf
sed -i "s%pid log/nginx.pid;%pid /run/nginx.pid;<em>%g</em>" docs/nginx.conf
sed -i "s%access_log log/access.log ;%access_log /var/log/nginx/access.log;<em>%g</em>" docs/nginx.confCode language: HTML, XML (xml)

(6)全部修改完成之后,将该nginx.conf文件复制到/etc/nginx/服务中。
sudo mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
sudo cp docs/nginx.conf /etc/nginx/
(7)最后重启nginx服务,服务正常启动,并且使用浏览器访问http://{deployIP}:{5000},可以成功访问。
sudo systemctl restart nginx
netstat -lntp | grep 5000


(8)使用admin/Abcd1234则可以成功登录到后台。

3.4 WeBASE-Sign服务
本系统为签名服务子系统。功能:管理公私钥、对数据进行签名。
(1)首先下载安装包,然后进入到目录,使用自带的gradlew进行编译。
cd ~/fisco
git clone https://github.com/WeBankBlockchain/WeBASE-Sign.git
cd WeBASE-Sign
chmod +x ./gradlew && ./gradlew build -x testCode language: PHP (php)

(2)然后登录数据库创建基本webasesigin数据库。
mysql -u root -padmin@123
CREATE DATABASE IF NOT EXISTS webasesign DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
show databases;Code language: CSS (css)

(3)进入到编译好的dist目录,根据配置模板生成一份实际配置conf。初次部署可直接拷贝。
cd dist
chmod +x ./*.sh
cp conf_template conf -r
(4)继续修改conf/application.yml文件。
sed -i "s%Encoding=utf8%Encoding=utf8\&useSSL=false<em>%g</em>" conf/application.yml
sed -i "s%dbUsername%root<em>%g</em>" conf/application.yml
sed -i "s%dbPassword%admin@123<em>%g</em>" conf/application.ymlCode language: HTML, XML (xml)

(5)然后运行启动脚本,等待数秒查看运行状态发现服务已经启动,最后查看系统端口发现5004端口已经启动。
./start.sh
./status.sh
netstat -lntp | grep 5004

3.5 WeBASE-Transaction交易服务
本系统为交易上链代理子系统。主要接收无状态交易请求,缓存到数据库中,再异步上链。本系统可大幅提升吞吐量,解决区块链的tps瓶颈。
(1)下载安装包,然后进入到WeBASE-Transaction目录,使用自带的gradlew进行编译,如果编译不通过可手动下载gradlew修改配置文件即可。
cd ~/fisco
git clone https://github.com/WeBankBlockchain/WeBASE-Transaction.git
cd WeBASE-Transaction
chmod +x ./gradlew && ./gradlew build -x testCode language: PHP (php)

(2)进入到dist文件夹,并且给所有sh文件赋予执行权限。dist目录提供了一份配置模板conf_template:
可以直接复制模板。
cd dist
chmod +x ./*.sh
cp conf_template conf -r
(3)将fisco-bcos的证书复制到conf文件夹下。
将节点所在目录
nodes/${ip}/sdk下的所有文件拷贝到当前conf目录(包括ca.crt, sdk.crt, sdk.key, node.crt, node.key),供SDK与节点建立连接时使用。(若没有node.crt, node.key,可通过cp复制sdk.crt为node.crt, 复制sdk.key为node.key)
cp ../../nodes/127.0.0.1/sdk/* conf/
cd conf
cp sdk.crt node.crt
cp sdk.key node.key

(4)然后创建数据库。
mysql -u root -padmin@123
CREATE DATABASE IF NOT EXISTS webasetransaction0 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
CREATE DATABASE IF NOT EXISTS webasetransaction1 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
show databases;Code language: CSS (css)

(5)修改application.properties配置文件,其余保持默认,具体配置见官方文档。修改数据库的用户名和密码。
sed -i "s%dbUsername%root<em>%g</em>" conf/application.properties
sed -i "s%dbPassword%admin@123<em>%g</em>" conf/application.propertiesCode language: HTML, XML (xml)

(6)然后运行启动脚本,等待数秒查看运行状态发现服务已经启动,最后查看系统端口发现5003端口已经启动。
./start.sh
./status.sh
netstat -lntp | grep 5003
