import{_ as i,c as a,a as e,o as n}from"./app-DxarFyj7.js";const l={};function h(t,s){return n(),a("div",null,[...s[0]||(s[0]=[e(`

第一部分:区块链平台运维

第1题:完成 FISCO BCOS 区块链系统部署并验证

【要求】

登录 Linux 服务器,完成节点部署、启动、将过程结果截图,保存至做答题并点击提交。

【任务】

登录 Linux 服务器,进入指定操作目录(/root/tools)基于开发部署工具 build_chain.sh 脚本在本地搭建一条 4 节点的 FISCO BCOS 链。起始端口号为:30300,20200,8545。将节点 2 的端口号改为 30500,20400,8675。确保搭建的区块链系统能正常运行,并将执行的命令和完整的命令执行结果截图保存至作答区并点击提交。具体任务如下:

【参考答案】

使用 build_chain.sh 脚本搭建 FISCO BCOS 链:

默认的 -v 会从网络中下载 FISCO BCOS,这里本地已经有了,比赛的时候肯定是断网的,这里直接调用本地的即可

bash build_chain.sh -l "127.0.0.1:4" -p 30300,20200,8545 -e ./fisco-bcos

配置默认单机4节点 在创建完成之后,当前目录会出现一个 nodes 文件夹,这里面就是我们的每个节点的具体配置信息等等

这里推荐下载一个 tree 用来查看目录结构

apt install tree
tree nodes

目录结构应该大概如下:

nodes
├── 127.0.0.1
│   ├── node0
│   │   ├── ...
│   ├── node1
│   │   ├── ...
│   ├── node2
│   │   ├── ...
│   ├── node3
│   │   ├── ...

每个 node 文件夹都包含 conf/(配置文件),log/(日志文件),fisco-bcos/(二进制副本)

修改节点2的端口,根据要求修改为 30500,20400,8675

编辑配置文件:vim nodes/127.0.0.1/node2/config.ini

[rpc]
    channel_listen_ip=0.0.0.0
    channel_listen_port=20202
    channel_listen_port=20400
    jsonrpc_listen_ip=127.0.0.1
    jsonrpc_listen_port=8547
    jsonrpc_listen_port=8675
    disable_dynamic_group=false
[p2p]
    listen_ip=0.0.0.0
    listen_port=30302
    listen_port=30500
    ; nodes to connect
    node.0=127.0.0.1:30300
    node.1=127.0.0.1:30301
    node.2=127.0.0.1:30302
    node.2=127.0.0.1:30500
    node.3=127.0.0.1:30303

不光节点2的 [p2p] 的 node.2 需要修改,其他几个节点的都需要进行修改

切换到 nodes/127.0.0.1/ 目录下,通过 bash start_all.sh 启动所有节点

启动所有节点

验证端口是否生效:ss -tuln | grep -E '30500|20400|8675'

预期输出如下:

tcp   LISTEN  0       4096          127.0.0.1:8675         0.0.0.0:*
tcp   LISTEN  0       4096            0.0.0.0:30500        0.0.0.0:*
tcp   LISTEN  0       4096            0.0.0.0:20400        0.0.0.0:*

主要参考文章如下:

  1. 搭建第一个区块链网络
  2. 开发部署工具(build_chain.sh)

第2题:按要求完成WeBASE-Node-Manager的安装与部署

【要求】

登录 Linux 服务器,部署节点管理平台,并将部署、启动、应用过程结果截图,保存至作答区并点击提交。

【任务】

登录 linux 服务器,进入指定操作目录(/root/tools/webase)中完成区块链一体化管理平台的配置部署,并检查是否安装成功,具体操作任务如下:

  1. 进入 WeBASE-Node-Manager 目录,完成数据库初始化操作;
  2. 修改 application.yml 配置文件,进行 WeBASE-Node-Manager 的服务配置,包括数据库名称,数据库用户,数据库密码等;
  3. 使用命令启动 WeBASE-Node-Manager 管理平台服务,并检查节点管理是否正常启动;
  4. 使用 swagger 对节点管理服务的 API 接口测试。

【参考答案】

切换到 WeBASE-Front 目录下,将 dist/conf_template 配置文件目录复制一份作为配置文件,命名为 dist/conf

# 当前工作目录为:/home/simeng/blockchain/WeBASE-Front
cp -r dist/conf_template dist/conf

将节点所在目录 nodes/{$ip}/sdk 下的所有文件拷贝到当前的 dist/conf 目录下

cp ../nodes/127.0.0.1/sdk/* ./dist/conf/

编辑配置文件 : vim dist/conf/application.yml

配置环境变量 JAVA_HOME 编辑配置文件:~/.bashrc,添加如下内容

export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-amd64"
export PATH=$JAVA_HOME/bin:$PATH

刷新环境变量

source ~/.bashrc

切换到 dist 目录下,拉取 Solidity 开发工具 v0.8.11.js(这一步可能会很慢,建议直接把 v0.8.11.js 下载到本地,然后直接放到对应目录,WSL2 的机器是直接挂载在 Windows 上的,Windows 可以直接操作)

wget https://github.com/WeBankBlockchain/WeBASELargeFiles/releases/download/v3.0.0/v0.8.11.js -O static/static/js/v0.8.11.js

运行 bash start.sh 启动 WeBASE-Node-Manager 管理平台服务

# 当前工作目录为:/home/simeng/blockchain/WeBASE-Front/dist
bash start.sh

由于 localhostForwarding 机制(具体参考:配置WSL2资源),我们可以直接通过localhost来访问WSL2容器的端口的服务 访问:http://localhost:5002/WeBASE-Front

`,49)])])}const p=i(l,[["render",h]]),k=JSON.parse('{"path":"/article/2025-BR-BRICS-BC-App-Develop-Op-Sample-Q_A/","title":"2025 一带一路金砖 - 区块链应用开发与运维 样题详解","lang":"zh-CN","frontmatter":{"title":"2025 一带一路金砖 - 区块链应用开发与运维 样题详解","createTime":"2025/09/30 19:57:14","permalink":"/article/2025-BR-BRICS-BC-App-Develop-Op-Sample-Q&A/"},"readingTime":{"minutes":3.72,"words":1117},"git":{"createdTime":1759303270000,"updatedTime":1761565115000,"contributors":[{"name":"si-meng-spec","username":"si-meng-spec","email":"simeng@simengweb.com","commits":2,"avatar":"https://avatars.githubusercontent.com/si-meng-spec?v=4","url":"https://github.com/si-meng-spec"},{"name":"祀梦","username":"","email":"3501646051@qq.com","commits":1,"avatar":"https://gravatar.com/avatar/6406a81eeddc359cf3d3ce018797689fc6d014ff06215c27d0210b42e8f5a8ab?d=retro"}]},"filePathRelative":"blog/competition/BRICS2025-ST-132.md","headers":[],"_e":"$2b$12$AnEPZ/UeZIteA6V.M.t6ruQUSaEdoAwhgkg7IF85UPFQKbANoRUTS","categoryList":[{"id":"126ac9","sort":10000,"name":"blog"},{"id":"83ee8d","sort":10003,"name":"competition"}]}');export{p as comp,k as data};